yacc

yaccYet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器主要是用C語言寫成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把兩部份產生出來的C程序一併編譯。yacc本來只在(类)Unix系統上才有,但現時已普遍移植往Windows及其他平台。

Yacc
原作者Stephen C. Johnson
当前版本
源代码库
操作系统Unix类Unix系统
类型命令
许可协议
  • 未知

yacc的输入是巴科斯范式(BNF)表达的语法规则以及语法规约的处理代码,输出的是基于表驱动的编译器,包含输入的语法规约的处理代码部分。

yacc是开发编译器的一个有用的工具,采用LALR(1)语法分析方法。

yacc最初由AT&TSteven C. Johnson为Unix操作系统开发,后来一些兼容的程序如Berkeley Yacc,GNU bison,MKS yacc和Abraxas yacc陆续出现。它们都在原先基础上做了少许改进或者增加,但是基本概念是相同的。

由于所产生的解析器需要词法分析器配合,因此Yacc经常和词法分析器的产生器——一般就是Lex——联合使用。IEEE POSIX P1003.2标准定义了Lex和Yacc的功能和需求。

参见

  • 编译原理
  • 编译器
  • JavaCC:產生Java的编译器代码生成器
  • GNU bison
  • CodeWorker
  • ANTLR

外部連結

  1. https://www.tuhs.org/cgi-bin/utree.pl?file=V6/usr/source/yacc.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.