yacc
此条目没有列出任何参考或来源。 (2019年1月28日) |
原作者 | Stephen C. Johnson |
---|---|
当前版本 |
|
原始码库 | |
操作系统 | Unix和类Unix系统 |
类型 | 命令 |
许可协议 |
|
yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器主要是用C语言写成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把两部分产生出来的C程序一并编译。yacc本来只在(类)Unix系统上才有,但现时已普遍移植往Windows及其他平台。
yacc的输入是巴科斯范式(BNF)表达的语法规则以及语法规约的处理代码,输出的是基于表驱动的编译器,包含输入的语法规约的处理代码部分。
yacc是开发编译器的一个有用的工具,采用LALR(1)语法分析方法。
yacc最初由AT&T的Steven C. Johnson为Unix操作系统开发,后来一些兼容的程序如Berkeley Yacc,GNU bison,MKS yacc和Abraxas yacc陆续出现。它们都在原先基础上做了少许改进或者增加,但是基本概念是相同的。
由于所产生的解析器需要词法分析器配合,因此Yacc经常和词法分析器的产生器——一般就是Lex——联合使用。IEEE POSIX P1003.2标准定义了Lex和Yacc的功能和需求。
参见
外部链接
- Berkeley Yacc (页面存档备份,存于互联网档案馆)一般认为是目前最好的yacc变种。与bison相比,避免了对特定编译器的依赖。
- Essence,Scheme的LR(1)语法解析器的生成器
- Coco/R(页面存档备份,存于互联网档案馆) Java和C#的扫描和解析器
这是一篇与计算机相关的小作品。您可以通过编辑或修订扩充其内容。 |