加载中...

Yacc(Yet Another Compiler-Compiler)是 Stephen C. Johnson 于 1970 年代在贝尔实验室开发的解析器生成器:输入带语义动作的上下文无关文法,输出 LALR(1) 分析表驱动的 C 语言解析器,成为 Unix 的标准组件。
.y 文法文件中每条产生式可附带 C 代码片段,归约时执行,借 $$、$1 等伪变量传递属性值;通常与词法生成器 Lex/Flex 配合,由 yylex() 提供记号流。
Yacc 让「按文法自动生成解析器」成为工程常规,PCC 可移植 C 编译器等大量语言工具由其构建;GNU Bison 是其向后兼容的自由软件替代,增加了 GLR 等能力;各语言均出现仿制品(如 Berkeley Yacc、goyacc)。
现代主流编译器多改用手写递归下降以获得更好的错误诊断,但 Yacc/Bison 仍广泛用于 DSL、配置语言与教学场景。

登录 后参与讨论
暂无讨论,来发表第一条评论吧