felipebz/flr
GitHub: felipebz/flr
FLR 是一个轻量级 Java 库,提供词法分析、语法解析和 AST 遍历等源代码分析所需的完整能力,帮助开发者快速构建自定义语言的质量规则与度量工具。
Stars: 3 | Forks: 1
# FLR
[](https://github.com/felipebz/flr/actions/workflows/build.yml)
[](https://sonarqube.felipebz.com/dashboard?id=com.felipebz.flr%3Aflr)
FLR 是一个轻量级的 Java 库,它提供了分析任何源代码所需的一切。使用 FLR,您可以快速创建 lexer、parser 和一些 AST visitor,以实现质量规则或计算度量。
FLR 是 [SonarSource Language Recognizer](https://github.com/SonarSource/sslr/) 的一个分支。
## 功能
以下是 FLR 的主要功能:
* 易于集成和使用
* 只需添加对 jar 文件的依赖即可(或根据您想要使用的功能添加多个 jar:lexer/parser、toolkit 等)
* 无需在构建过程中添加特殊步骤
* 没有不可修改的生成代码
* 全部使用 Java
* 使用 Java 或 Kotlin 直接在代码中定义 grammar 和 lexer
* 不影响 IDE 支持(语法高亮、代码导航、重构等)
### FLR 实战
如果您想开始使用 FLR,您必须熟悉以下标准概念:Lexical Analysis、Parsing Expression Grammar 和 AST(Abstract Syntax Tree)。
FLR 还附带了一种 MiniC 语言,其创建目的是为了轻松简单地测试所有 FLR 功能。对于初学者来说,这种 MiniC 语言可以作为一个很好的起点,以了解如何实现/定义分析一门语言所需的不同强制层:
* [Lexer](https://github.com/felipebz/flr/blob/main/flr-testing-harness/src/main/kotlin/com/felipebz/flr/test/minic/MiniCLexer.kt)
* [Grammar](https://github.com/felipebz/flr/blob/main/flr-testing-harness/src/main/kotlin/com/felipebz/flr/test/minic/MiniCGrammar.kt)
* [Parser](https://github.com/felipebz/flr/blob/main/flr-testing-harness/src/main/kotlin/com/felipebz/flr/test/minic/MiniCParser.kt)
* [Toolkit](https://github.com/felipebz/flr/blob/main/flr-testing-harness/src/main/kotlin/com/felipebz/flr/test/minic/MiniCToolkit.kt)
标签:JS文件枚举, Kotlin, odt, 开发工具链, 抽象语法树, 词法分析器, 语法分析器