GitHub - wldfngrs/parser-generator:另一个解析器生成器将 LR(1) 语法的语法规范作为输入,并生成一个包含用于解析 LR(1) 语法的表和辅助结构的 C++ 头文件。

主要观点:介绍了 Yet Another Parser-Generator (YAPG),这是一个 LR(1) 语法解析表生成器,包括其安装、使用、语法规范、冲突处理及测试等方面。
关键信息

  • 可将 LR(1) 语法规范作为输入生成 C++ 头文件,包含动作和跳转表等。
  • 提供了“数学表达式解释器”和“括号解释器”两个 REPL 解释器用于测试。
  • 语法规范有特定规则,如终端需前缀“t_”等,且可显式设置终端优先级和结合性。
  • 可能出现“SHIFT-REDUCE 冲突”和“REDUCE-REDUCE 冲突”,需按特定条件解决。
    重要细节
  • 安装需克隆仓库、编译,成功后会在“build/”目录生成可执行文件“parsegen”。
  • 使用时需提供包含 LR(1) 语法规范的文件路径和输出文件路径(默认“output.h”),可通过“-h”或“-H”获取语法规范语法。
  • 解析函数根据动作表和跳转表进行状态转移,处理“SHIFT”“REDUCE”“ACCEPT”动作。
  • 数学表达式语法中可通过设置终端优先级和结合性来控制运算顺序。
  • “REDUCE-REDUCE 冲突”是语法规范中“REDUCE”动作不明确导致的致命错误。
阅读 10
0 条评论