当前位置:文档之家› 编译原理实验(布置版)

编译原理实验(布置版)

编译原理实验(布置版)
实验一:基于有限自动机方法的简单词法分析程序的设计与实现
——无符号实数识别程序
1、实验目的
通过本实验,使学生进一步熟悉词法分析程序所用的工具——自动机方法,掌握文法转换成自动机的技术及用C语言实现有穷自动机识别单词的方法。

2、实验内容
根据教材P46无符号实数的状态转换图,用C或C++语言编制识别无符号实数的程序。

要求:程序执行时,首先给出提示“Please input a unsigned real number:”,输入数据后,给出对该数据的分析结果信息如“The number is right!”或“The number is error!”,反复输入数据和分析,直到输入回车或其他键符,退出程序执行。

3、实验报告要求
按照实验报告模板格式要求组织内容,必须要有以下内容:
(1)无符号实数词法分析的思想。

(2)无符号实数的文法和根据文法生成的状态转换图(即有穷自动机)。

(3)程序处理的流程图
(4)程序运行(测试)结果截图
(5)源程序清单
实验二:综合词法分析程序的设计与实现
1、实验目的
设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。

2、实验内容
(1)本程序自行规定:
关键字:“begin”,“end”,“if”,“then”,“else”,“while”,“write”,“read”,“do”,“call”,“const”,“char”,“until”,“procedure”,“repeat”。

运算符:“+”,“-”,“*”,“/”,“=”
界符:“{”,“}”,“[”,“]”,“;”,“,”,“.”,“(”,“)”,“:”
标识符:以字母开头的字符串。

空格、回车、换行符跳过。

(2)用C或C++语言编制程序,实现对下述一段源程序的词法分析。

//源程序文件位置及名称:F:\…\MY.TXT
begin
x:=9
if x>0 then x:=x+1;
while a:=0 do
b:=2*x/3;
end;
输出结果(在屏幕上显示)形式举例:
( 1 , 无符号整数)
( begin , 关键字)
( if , 关键字)
( +, 运算符)
( ;界符)
( a , 标识符)
……
编程提示:构造一个关键字表,根据关键字表及当前所接受的状态,可以识别出单词的属性。

3、实验报告要求
按照实验报告模板格式要求组织内容,必须要有以下内容:
(1)该词法分析程序的设计思想
(2)识别各种单词的状态转换图
(3)程序处理的流程图(参考教材)
(4)程序运行结果截图
(5)源程序清单
实验三:语法分析程序的设计与实现
1、实验目的
通过本实验,进一步理解递归下降分析算法,掌握和熟悉递归下降分析程序设计方法,实现对词法分析程序所提供的单词序列的语法检查和结构分析。

2、实验内容
待分析的简单语言的语法用BNF表示如下:
1)<程序>→begin<语句串>end
2)<语句串>→<语句>{;<语句>}
3)<语句>→<赋值语句>
4)<赋值语句>→ID:=<表达式>
5)<表达式>→<项>{+<项> | -<项>}
6)<项>→<因子>{*<因子> | /<因子>
7)<因子>→ID | NUM | (<表达式>)
用C或C++语言编制根据上述语法对一个句子进行语法分析的程序。

程序执行后,要求输入一个句子(单词串),并以“#”结束,如果是文法正确的句子,则输出语法分析成功信息“success”,否则输出语法分析错误信息“error”。

例如:
输入begin a:=9; x:=2*3; b:=a+x end #
输出success
输入x:=a+b*c end #
输出error
编程提示:参考教材4.2.4。

3、实验报告要求
按照实验报告模板格式要求组织内容,必须要有以下内容:
(1)该递归下降分析程序的设计思想
(2)程序处理的流程图
(3)程序运行结果截图
(4)源程序清单
附:实验成绩评定办法
分为五个等级,优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)。

(1)优秀:程序运行通畅、输出结果完整且符合要求,能够熟练调试程序,解决问题的能力强;实验报告内容完整(有算法流程图、状态转换图与符合功能的源程序清单、实验结论等)、描述准确、回答问题全面且正确、结论完整。

(2)良好:程序运行通畅、输出结果比较完整且符合要求,能够比较熟练调试程序,解决问题的能力比较强;实验报告内容完整(有算法流程图、状态转换图与符合功能的源程序清单、实验结论等)、描述准确、回答问题全面且正确、结论完整。

(3)中等:程序运行通畅、输出结果比较完整,能够解决实验中遇到的问题;实验报告内容比较完整(有算法流程图、状态转换图与符合功能的源程序清单)、描述比较准确、回答问题比较正确、结论比较完整。

(4)及格:程序运行通畅、输出结果比较完整,在老师或同学帮助下能够解决实验中遇到的问题;实验报告内容比较完整(有算法流程图、状态转换图与符合功能的源程序清单)、回答问题基本正确、结论基本完整。

(5)不及格:不熟悉算法流程、程序功能不完整或无实验结果、无结论;或抄袭、复制其他同学的实验报告和源程序。

相关主题