HeadlinesBriefing HeadlinesBriefing.com

Yantra:C++ 解析器生成器,带有 AST 遍历器

Hacker News •
×

Yantra 是一个 C++ 解析器生成器,它先构建完整的 AST,然后自顶向下遍历,调用语义动作。与大多数 LALR 解析器生成器(Yacc、Bison、Lemon)在解析过程中运行语义动作不同,Yantra 允许父规则的动作在其子节点被访问之前运行。这使得单个语法可以定义多个遍历器,例如一个发出 C++,另一个发出 Java。AST 和遍历器类均会自动生成。Yantra 具有内置的词法分析器,支持嵌套注释的模式,可选的合并单文件输出带有生成的 main(),仅需 C++23 编译器。它采用 MIT 许可证,当前版本为 0.5.1,处于 pre-1.0 阶段,由单个开发者维护。

一个小的示例语法展示了自顶向下遍历行为:解析 "1 + 2 + 3" 会先打印 "Adding"(根节点),随后打印数字输出。这种顺序仅在完整树在任何动作执行之前存在时才成为可能。

已知限制在项目的 GitHub 页面上有文档说明。仓库位于 https://github.com/TantrixAuto/yantra,欢迎反馈和问题提交给维护者。

该工具使用 CMake 进行构建,并生成 ycc 可执行文件,用于从语法文件生成解析器。

关键实体:公司:TantrixAuto

来源: Hacker News · 由HeadlinesBriefing整理摘要