语法分析程序的自动生 成工具YACC简介 西北工业大学计算机系 康慕宁 2001.2.第二版
语法分析程序的自动生 成工具 简介 西北工业大学计算机系 2001.2
LALR(1)分析器自动生成工具 YACC YACC(Yet Another Compiler- Compiler)是LALR(1)分析器的自动生成工 具,它的第一版于70年代初发表,是美国贝 尔实验室的软件产品(作者为S.C.Johnson) ◆YACC将一前后文无关文法转换为一LALR(1) 分析表,并提供使用该分析表进行语法分析的总 控程序yyparse()
自动生成工具— u YACC(Yet Another Compiler- Compiler)是 分析器的自动生成工 具,它的第一版于 年代初发表,是美国贝 尔实验室的软件产品(作者为 ) 将一前后文无关文法转换为一 分析表,并提供使用该分析表进行语法分析的总 控程序
使用YACC构造语法分析程序 ◆用户按一定规列则编写出“文信处理谠明 文件”,简称YSP(Yacc Specification)) 文件,文件的扩展名为“.y”。 ◆将YSP输入YACC中,YACC就会自动地构造 出相应的C语言形式的语法分析器 ◆该分析器主要包括由YACC提供的标准总 控程序和一个LALR(1)语法分析表
使用 u用户按一定规则编写出“ ” ,简称YSP(Yacc Specification) 文件,文件的扩展名为“ ” 。 u将YSP输入YACC中,YACC就会自动地构造 出相应的 形式的语法分析器 u该分析器主要包括由YACC提供的 和一个LALR(1)
YACC的工作机制 YSP文件 YACC 语法分析程序ytab.c =总控程序+分析表 y.tab.c C编译程序 0文件 YACC的使用格式为: yacc[选项] filename.y
YSP文件 YACC 语法分析程序ytab.c =总控程序+分析表 的使用格式为: yacc [ ] filename.y y.tab.c C编译程序 .o文件
YMcc命令的选项 -V 输出描述分析表及报告语法冲突的文件y.output -d 生成头文件y.tab.h,该文件中用#definei语句定义 YSP文件中的token((终结符) 指定y.tab.c中将不产生ine结构行.在程序完全进行 过debug后使用此选项可使程序简短些 -Qyn-Qy选项输出版本戳信息到y.tab.c文件中.使用户 能了解使用的是哪个yacc版本.Qn选项(缺省选项)不 输出此信息 在标准错误上输出yacc的版本信息 -W 生成可写的分析表缺省为只读
命令的选项 输出描述分析表及报告语法冲突的文件 生成头文件 ,该文件中用#define语句定义 文件中的 (终结符). 指定 中将不产生 结构行.在程序完全进行 过 后使用此选项可使程序简短些. 选项输出版本戳信息到 文件中.使用户 能了解使用的是哪个 版本. 选项(缺省选项)不 输出此信息. 在标准错误上输出 的版本信息. 生成可写的分析表,缺省为只读