- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理》实验书
2010 年 11 月
实验目录:
实验 1:词法分析程序( 3 学时,第 12 周) ....................................................................... 2
实验 2:语法分析 -递归子程序法( 3 学时,第 13 周).................................................... 11
实验 3:语法分析 -预测分析法(选做) ............................................................................. 27
实验 4:语义分析和代码生成( 12 学时,第 14~17 周) ................................................. 37
适用专业及实验总学时:
2007 级计算机科学与技术专业 (软件方向 ),18 学时。
任课教师:
黄玲
E-mail: huangl@mailbox.gxnu.edu.cn
恭喜你!你将进入非常重要的专业课程的实践。 编译原理的知识影响到专业人员的素质,
除编译程序外有大量专业工作与编译技术相关 。你现在需要通过脚踏实地的实践学习 (很辛
苦的! ) ,把自己的专业水平提高一个层次。你需要在实验课前自己阅读程序代码,在实验
课中调试程序,实验课后完成实验报告(每一个实验上交一份实验报告) ,实验报告必须阐
述清楚你的所做的工作, 内容包含修改思路、 关键修改代码、 运行结果、 对运行结果的评价、
进一步改进的建议。最重要的是,通过实践你可以获得专业的能力和自信。加油!
1
实验 1:词法分析程序( 3 学时,第 12 周)
一、实验目的和内容:
1.实验目的:通过词法分析程序,了解词法分析的过程。
2.实验内容:用 C 实现对 Pascal的子集程序设计语言的词法识别。
3.实验要求:要求修改文法和程序,增加浮点数处理功能。
4. 实验环境是 Windows 操作系统、 Visual C++ 开发环境。
二、未增加浮点数处理的原设计:
1. 程序设计语言的描述:
程序 →程序首部 分程序 .
程序首部 →PROGRAM 标识符 ;
分程序 →[ 常量说明部分 ][ 变量说明部分 ][ 过程说明部分 ] 复合语句
常量说明部分 →CONST 常量定义 {, 常量定义 };
常量定义 →标识符 =无符号整数
变量说明部分 →VAR 变量定义 {, 变量定义 };
变量定义 →标识符 {, 标识符 }: 类型
类型 →INTEGER|LONG
过程说明部分 →过程首部 分程序 ;{ 过程首部 分程序 ;}
过程首部 →PROCEDURE 标识符 ;|PROCEDURE 标识符 (标识符 :类型);
语句 →赋值语句 |条件语句 |当型循环语句 |过程调用语句 |读语句
|写语句 |复合语句 |ε
赋值语句 →标识符 :=表达式
条件语句 →IF 条件 THEN 语句
当型循环语句 →WHILE 条件 DO 语句
过程调用语句 →标识符 |标识符 (表达式 )
读语句 →READ ( 标识符 ,{ 标识符 })
写语句 →WRITE ( 表达式 {, 表达式 })
复合语句 →BEGIN 语句{; 语句}END
条件 →表达式 关系运算符 表达式 |ODD 表达式
表达式 →[+|-] 项{ 加型运算符 项}
项→因子{ 乘型运算符 因子}
因子 →标识符 |无符号整数 |(表达式 )
加型运算符 →+|-
乘型运算符 →*|/
关系运算符 →=|||=||=
其中:
用左右尖括号括起来的符号串表示非终结符
→ 定义为
{ } 表示该语法成分可以重复 0~n 次
[ ] 表示方括号内为可选项,即 0 或 1 次
2
2. 程序设计语言单词的内部编码: (35 个终结符 )
内 单词 内码 单词 内码 单词 内码 单词
码
1 PROGRAM 2 CONST 3 VAR 4 INTEGER
5 LONG 6 PROCEDURE 7 IF 8 THEN
9 WHILE 10 DO 11 READ 12 WRITE
13 BEGIN 14 END 15 ODD 16 +
17 - 18 * 19 / 20 =
21 22 23 = 24
25 = 26 . 27 , 28 ;
29 : 30 := 31 ( 32 )
33 无符号整数 34 标识符 35 #
3.下面是一个词法分析程序, 该程序能够将源程序,也就是相应字符流转换成内码, 并输
出到文件。 程序的执行需要提供两个参数, 第一个参数是源程序文件名, 第
文档评论(0)