felipebz/flr

GitHub: felipebz/flr

FLR 是一个轻量级 Java 库,提供词法分析、语法解析和 AST 遍历等源代码分析所需的完整能力,帮助开发者快速构建自定义语言的质量规则与度量工具。

Stars: 3 | Forks: 1

# FLR [![Build](https://static.pigsec.cn/wp-content/uploads/repos/cas/3b/3b39c55110f11a97d10cda63d1c1193c1b78ee3e26d559adaea16b191fc65e8a.svg)](https://github.com/felipebz/flr/actions/workflows/build.yml) [![Quality Gate Status](https://sonarqube.felipebz.com/api/project_badges/measure?project=com.felipebz.flr%3Aflr&metric=alert_status&token=sqb_6d18637c91a4b22ae95a16b83a41be69b7aa900d)](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, 开发工具链, 抽象语法树, 词法分析器, 语法分析器