一、词法分析程序自动生成工具的使用(4小时)
实验目的
学习使用词法分析自动工具LEX。
实验任务
使用LEX工具实现编译器的词法分析程序。
实验内容
(a) 学习文档“LEX的用法.pdf”。
(b) 准备一个LEX工具,如这里提供的“FLEX251.ZIP”,可上网搜索下载更新的版本。
(c) 以文档中提供的4个输入文件为例,测试LEX工具。有些版本的FLEX需要在辅助程序部分增加yywrap()函数:
int yywrap() {return 1;}
- 生成LEX版本的TINY词法分析器,与其它部分组合成一个完整的TINY语言编译器,并完成测试验证。(参见tiny编译器的使用.ppt)
- 编写某语言(如:C-语言)的词法描述文件,生成其词法分析器,与其它部分组合成一个完整的TINY语言编译器,并完成测试验证。(提示:可利用增量编程,修改TINY语言的词法描述文件tiny.l,为C-语言编写词法描述文件。)
(二)语法分析程序自动生成工具的使用(4小时)
学习使用语法分析程序自动生成工具YACC;使用YACC工具实现编译器的词法分析程序。
实验内容
(a) 学习文档“YACC的用法.pdf”。
(b) 准备一个YACC工具,如这里提供的“bison.zip”,可上网搜索下载更新的版本。(有源程序可供参考)
(c) 以文档中提供的输入文件为例,测试YACC工具。需要将两个文件拷贝到特殊目录,详情请阅readme.txt。
- 生成YACC版本的TINY语法分析器,与其它部分组合成一个完整的TINY语言编译器,并完成测试验证。(提示:全局头文件GLOBALS.H需要替换为YACC目录下的那个。)
(3)编写某语言(如:C-语言)的语法描述文件,生成其语法分析器,与其它部分组合成一个完整的TINY语言编译器,并完成测试验证。(提示:可利用增量编程,修改TINY语言的语法描述文件tiny.y,为C-语言编写语法描述文件,全局头文件GLOBALS.H在替换为YACC目录下的那个后需相应修改。)
实验工具及源代码下载
https://pan.baidu.com/s/14nbZ3Xu5nsaGCRPcycJUHw
密码:msry
实验原理讲解
1、LEX工具的使用