欢迎来到天天文库
浏览记录
ID:13630729
大小:251.50 KB
页数:38页
时间:2018-07-23
《编译原理实验讲义》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《编译原理》实验书2011年3月实验目录实验1:词法分析程序(3学时、第6、7周)2实验2:语法分析-递归子程序法(3学时,第7、8周)11实验3:语法分析-预测分析法(3学时,第9、10周)28实验4:语义分析和代码生成(15学时,第10~17周)38适用专业及实验总学时:2008级计算机科学与技术专业2008级计算机科学与技术专业(网络方向)24总学时恭喜你!你将进入非常重要的专业课程的实践。编译原理的知识影响到专业人员的素质,除编译程序外有大量专业工作与编译技术相关。你现在需要通过脚踏实地的
2、实践学习,把自己的专业水平提高一个层次。如何才能把实验做好?实验课时非常有限,建议打印本学期的全部实验资料。如果可以,你的私人电脑安装VisualStudioC++开发环境,以便课余继续练习。上实验课之前,一定要仔细研究实验课相关程序,设计好解决方案。上实验课时,直接调试程序并获得结果,如有不懂之处,应该也必须及时提问、解决。实验课后,完成实验报告。每个实验必须提交实验报告。实验报告内容含:关键问题、设计思路、实现的关键代码、程序运行结果、总结及进一步改善建议。每个实验报告1500字~2500字,
3、约2~3页A4纸。实验报告打印出来后上交。不允许抄袭实验报告。实验报告内容超过60%相同,涉及人员均作为抄袭处罚。一份汗水,一份收获。只要你认真完成上述实验,你一定获得更加专业的自信。加油!38实验1:词法分析程序(3学时、第6、7周)1.实验目的和内容:1)实验目的:通过完成词法分析程序,了解词法分析的过程。2)实验内容:用C实现对Pascal的子集程序设计语言的词法识别。3)实验要求:要求修改文法和程序,增加浮点数处理功能。实验环境是Windows操作系统、VisualC++开发环境。2.程序
4、设计语言的描述:<程序>→<程序首部><分程序>.<程序首部>→PROGRAM<标识符>;<分程序>→[<常量说明部分>][<变量说明部分>][<过程说明部分>]<复合语句><常量说明部分>→CONST<常量定义>{,<常量定义>};<常量定义>→标识符=无符号整数<变量说明部分>→VAR<变量定义>{,<变量定义>};<变量定义>→标识符{,标识符}:<类型><类型>→INTEGER
5、LONG<过程说明部分>→<过程首部><分程序>;{<过程首部><分程序>;}<过程首部>→PROCEDURE标
6、识符;
7、PROCEDURE标识符(标识符:<类型>);<语句>→<赋值语句>
8、<条件语句>
9、<当型循环语句>
10、<过程调用语句>
11、<读语句>
12、<写语句>
13、<复合语句>
14、ε<赋值语句>→标识符:=<表达式><条件语句>→IF<条件>THEN<语句><当型循环语句>→WHILE<条件>DO<语句><过程调用语句>→标识符
15、标识符(<表达式>)<读语句>→READ(标识符,{标识符})<写语句>→WRITE(<表达式>{,<表达式>})<复合语句>→BEGIN<语句>{;<语句>}END<条件>→<表达式
16、><关系运算符><表达式>
17、ODD<表达式><表达式>→[+
18、-]<项>{<加型运算符><项>}<项>→<因子>{<乘型运算符><因子>}<因子>→标识符
19、无符号整数
20、(<表达式>)<加型运算符>→+
21、-<乘型运算符>→*
22、/<关系运算符>→=
23、<>
24、<
25、<=
26、>
27、>=其中:<>用左右尖括号括起来的符号串表示非终结符→定义为{}表示该语法成分可以重复0~n次[]表示方括号内为可选项,即0或1次383.程序设计语言单词的内部编码:(35个终结符)内码单词内码单词内码单词内码单词1PROGRAM2CO
28、NST3VAR4INTEGER5LONG6PROCEDURE7IF8THEN9WHILE10DO11READ12WRITE13BEGIN14END15ODD16+17-18*19/20=21<>22<23<=24>25>=26.27,28;29:30:=31(32)33无符号整数34标识符35#4.词法分析程序的设计思想:为了使实现的编译程序实用,规定源程序可以采用自由书格式,即一行内可以书写多个语句,一个语句也可以写成多行;标识符的前20个字符有效;整数用2个字节表示;长整数用4个字节表示。这样
29、,词法分析程序的主要工作为:1)从源程序中读入字符。2)统计行数和列数用于错误单词的定位。3)删除空格类字符,包括回车、制表符空格。4)对拼写的单词,用(内码,属性)二元式表示。5)填写符号表。这里采用一遍扫描的方法,即从左到右只扫描一次源程序,词法分析作为语法分析的一个子程序,在编写词法分析程序时,用重复调用词法分析子程序取一单词方法,得到整个源程序的内码流。5.调试时可以使用下面的源程序作为下述词法分析程序的输入(当然,你也可以自己编写一个源程序),词法分析程序输出词法分析结果
此文档下载收益归作者所有