《编译原理》课程实验教学大纲 一、课程基本信息 课程代码:16084903 课程名称:编译原理 英文名称:Compiling principle 实验总学时:6 适用专业:计算机科学与技术 课程类别:专业必修 先修课程:离散数学,程序设计、数据结构 二、实验教学的总体目的和要求 1、对学生的要求:掌握词法分析、语法分析、语义分析原理及实现方法 2、对教师的要求:熟练掌握编译原理理论及编程技能 3、对实验条件的要求:PC,C语言编程环境 三、实验教学内容 实验项目一 实验名称:词法分析的设计与实现 实验内容: 一、实验目的与任务 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解 并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分 析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词, 即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的
《编译原理》课程实验教学大纲 一、课程基本信息 课程代码:16084903 课程名称:编译原理 英文名称: Compiling principle 实验总学时:6 适用专业:计算机科学与技术 课程类别:专业必修 先修课程:离散数学,程序设计、数据结构 二、实验教学的总体目的和要求 1、对学生的要求:掌握词法分析、语法分析、语义分析原理及实现方法 2、对教师的要求:熟练掌握编译原理理论及编程技能 3、对实验条件的要求:PC,C 语言编程环境 三、实验教学内容 实验项目一 实验名称:词法分析的设计与实现 实验内容: 一、实验目的与任务 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。 并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分 析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词, 即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的
内部编码及单词符号自身值。(遇到错误时可显示“ErOr”,然后跳过错误部 分继续显示) 二、实验涉及的相关知识点 1、词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常 常表示成以下的二元式(单词种别码,单词符号的属性值)。本实验中,采用的是 一类符号一种别码的方式。 2、单词的BNF表示 ->〈字母>-> 川e -〉 ->|e -〉+ -〉一 -〉〉 〈大于等于关系运算符>->> 3、“超前搜索”方法 词法分析时,常常会用到超前搜索方法。如当前待分析字符串为“>+”,当 前字符为’)’,此时,分析器倒底是将其分析为大于关系运算符还是大于等于 关系运算符呢?显然,只有知道下一个字符是什么才能下结论。于是分析器读入 下一个字符’+’,这时可知应将'>’解释为大于运算符。但此时,超前读了 个之符 ,所以要回 一个字符,词法分析器才能正常运行。在分析标识符, 无符号整数等时也有类似情况。、 三、实验内容与过程 程序输入/输出示例: 如源程序为C语言。输入如下一段:
内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部 分继续显示) 二、实验涉及的相关知识点 1、词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常 常表示成以下的二元式(单词种别码,单词符号的属性值)。本实验中,采用的是 一类符号一种别码的方式。 2、单词的 BNF 表示 -> ->|| |ε -> -> |ε -> + -> - -> > -> >= 3、“超前搜索”方法 词法分析时,常常会用到超前搜索方法。如当前待分析字符串为“a>+”,当 前字符为’>’,此时,分析器倒底是将其分析为大于关系运算符还是大于等于 关系运算符呢?显然,只有知道下一个字符是什么才能下结论。于是分析器读入 下一个字符’+’,这时可知应将’>’解释为大于运算符。但此时,超前读了一 个字符’+’,所以要回退一个字符,词法分析器才能正常运行。在分析标识符, 无符号整数等时也有类似情况。、 三、实验内容与过程 程序输入/输出示例: 如源程序为 C 语言。输入如下一段:
main() int a,b; a=10: b=a+20: 要求输出如右图。 要求: 识别保留字:if、int、for、while、.do、return、break、.continue:: 单词种别码为1。 其他的都识别为标识符:单词种别码为2。 常数为无符号整形数:单词种别码为3。 运算符包括:+、-、*、/、=、>、〈、)=、仁、=: 单词种别码为4。 分隔符包括:,、、【小、():单词种别码为5 四、实验结果及分析 (2,”main”) (5,”(“) (5,”)“) (5,”{“) (l,”int” (2,”a”) (5,”,”) (2,”b”)
main() { int a,b; a = 10; b = a + 20; } 要求输出如右图。 要求: 识别保留字:if、int、for、while、do、return、break、continue; 单词种别码为 1。 其他的都识别为标识符;单词种别码为 2。 常数为无符号整形数;单词种别码为 3。 运算符包括:+、-、*、/、=、>、=、<=、!= ; 单词种别码为 4。 分隔符包括:,、;、{、}、(、); 单词种别码为 5。 四、实验结果及分析 (2,”main”) (5,”(“) (5,”)“) (5,”{“) (1,”int”) (2,”a”) (5,”,”) (2,”b”)
(5,”:”) (2,”a”) (4,”=”) (3,”10”) (5,”:”) (2,”b”) (4,”=”) (2,”a”) (4,”+”) (3,”20”) (5,”:”) (5,”}“)实验性质:设计性 实验学时:2 实验目的与要求: 加深对词法分析器的工作过程的理解:加强对词法分析方法的掌握:能够采 用一种编程语言实现简单的词法分析程序:能够使用自己编写的分析程序对简单 的程序段进行词法分析。 实验条件:PC,C语言编程环境 研究与思考:如何识别出的单词以的形式保存在符号表中,正确设 计和维护符号表,通过自动机引入事物状态的转换机制,结合中国传统文化中“不 积眭步无以至千里”,弘扬中国传统文化自信,科学的探索事物状态转换的触 发条件以及状态转换的规律。 实验项目二 实验名称:常数处理机设计与实现 实验内容:
(5,”;”) (2,”a”) (4,”=”) (3,”10”) (5,”;”) (2,”b”) (4,”=”) (2,”a”) (4,”+”) (3,”20”) (5,”;”) (5,”}“)实验性质:设计性 实验学时:2 实验目的与要求: 加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采 用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单 的程序段进行词法分析。 实验条件:PC,C 语言编程环境 研究与思考:如何识别出的单词以的形式保存在符号表中,正确设 计和维护符号表。通过自动机引入事物状态的转换机制,结合中国传统文化中“不 积跬步无以至千里”,弘扬中国传统文化自信,科学的探索事物状态转换的触 发条件以及状态转换的规律。 实验项目二 实验名称:常数处理机设计与实现 实验内容:
一、实验项目: 熟悉并实现一个Pascal常数处理机 、 设计自动机: 2。设计处理Pascal常数的算法 3.编写代码并上机调试运行通过 ·要求:输入一 一一个Pascal常数字符串: 输出 一一相应Pascal常数: 二、常数处理机设计: 1.自动机: ①d A共他( 其他()甚他) ·自动机的转换矩阵: 0- -err 2.翻译器:
一、实验项目: 熟悉并实现一个 Pascal 常数处理机 1.设计自动机; 2.设计处理 Pascal 常数的算法; 3.编写代码并上机调试运行通过。 ·要求:输入——一个 Pascal 常数字符串; 输出——相应 Pascal 常数; 二、常数处理机设计: 1.自动机: 1 2 3 4 5 6 7 8 d . d e +|- d d e d d d 其他(-1) 其他(-1) 其他(-1) ·自动机的转换矩阵: d . e +|- 其他 (-1) 1 2 0 0 0 8 2 2 3 5 0 0 3 4 0 0 0 8 4 4 0 5 0 0 5 7 0 0 6 0 6 7 0 0 0 0 7 7 0 0 0 8 8 0 0 0 0 0 0---err 2.翻译器: 初始化 S=1 S=8? Getchar(ch) 查状态转换矩阵 得到下一状态 S=0? 输出NUM 结束 临时数据处理 No No Yes Yes
·主控程序: ·语义动作q q: 初始化,N:=P:=m:=t:=0:e:=l;NUM:=0: Qa: 10*N+d q3:t:=1: 将字符d转换为数字d qa:N:=10*N+(d:m:=m+1l; 5:t:=1: qs:if‘then e:-l: q:P:=10*p+(d) qg:NUM:=N*10;STOP。 实验性质:设计性 实验学时:2 实验目的与要求: 掌握自动机工作原理和机制:深入理解并设计处理Pascal常数的算法:掌 握编写自动机的代码并上机调试运行通过。 实验条件:PC,C语言编程环境 研究与思考: 对于遇到的语法错误,如何能够做出简单的错误处理,给出简单的错误提示 保证顺利完成自动机分析过程。通过自动机引入事物状态的转换机制,结合中国 传统文化中“不积跬步无以至干 里” 弘扬中国传统文化自信,科学的探素事 物状态转换的触发条件以及状态转换的规律。 实验项目三 实验名称:LR语法分析器设计与实现 实验内容: 实验项目 熟悉LR语法分析器设计 1. 设计SLR)语法分析器算法: 2.编写代码并上机调试运行通过。 ·要求:输入一一表达式: 输出 一表达式语法是否正确。 二、语法分析器设计
·主控程序: ·语义动作 qi: q1:初始化,N:=P:=m:=t:=0;e:=1;NUM:=0; q2:N:=10*N+(d); q3:t:=1; 将字符 d 转换为数字 d q4:N:=10*N+(d); m:=m+1; q5:t:=1; q6:if ‘-‘ then e:=-1; q7:P:=10*P+(d); q8:NUM:=N*10e*P-m;STOP。 实验性质:设计性 实验学时:2 实验目的与要求: 掌握自动机工作原理和机制;深入理解并设计处理 Pascal 常数的算法;掌 握编写自动机的代码并上机调试运行通过。 实验条件:PC,C 语言编程环境 研究与思考: 对于遇到的语法错误,如何能够做出简单的错误处理,给出简单的错误提示, 保证顺利完成自动机分析过程。通过自动机引入事物状态的转换机制,结合中国 传统文化中“不积跬步无以至千里”,弘扬中国传统文化自信,科学的探索事 物状态转换的触发条件以及状态转换的规律。 实验项目三 实验名称:LR 语法分析器设计与实现 实验内容: 一、实验项目: 熟悉 LR 语法分析器设计 1.设计 SLR(1)语法分析器算法; 2.编写代码并上机调试运行通过。 ·要求:输入——表达式; 输出——表达式语法是否正确。 二、语法分析器设计
1.算术表达式文法 G(E): F' E→E+ E→T T→T*期 [3) T>E F→(E) 6 F→i SLR(1)分析表如下: 状 ACTION GOTO 县 g T下 10s4 0 0 s16 A jo 2 12sI7 rI2rI2 3 r14r14 r14r14 415 14 Q 6515 s14 9 s15 s14 10 8 s16 11 0 r11s17 r1r1 10 r1313 r13r3 r I 5 r I 5 实验性质:设计性 实验学时:2 实验目的与要求: 加深对语法分析器工作过程的理解:加强对LR分析法实现语法分析程序的 实验条件:PC,C语言编程环境 研究与思考: 如何根据LR分析的方法进行语法分析,直到源程序结束。引入对事物运行 的本质性探索,尽管有多种方法制Actior表和Goto表,但都运用于LR分析法 中。 四、考核方式
1.算术表达式文法 G(E): E’→E [0] E→E+T [1] E→T [2] T→T*F [3] T→F [4] F→(E) [5] F→i [6] SLR(1)分析表如下: 实验性质:设计性 实验学时:2 实验目的与要求: 加深对语法分析器工作过程的理解;加强对 LR 分析法实现语法分析程序的 掌握;能够采用一种编程语言实现简单的语法分析程序;能够使用自己编写的分 析程序对简单的程序段进行语法翻译。 实验条件:PC,C 语言编程环境 研究与思考: 如何根据 LR 分析的方法进行语法分析,直到源程序结束。引入对事物运行 的本质性探索,尽管有多种方法制 Action 表和 Goto 表,但都运用于 LR 分析法 中。 四、考核方式
实验报告 五、推荐实验教材和教学参考书 (1)推荐教材:编译原理,作者:龚宇辉,王丽敏,出版社:电子工业出版社, 出版时间2018年06月 (2)参考书: [山编译原理(第2版),(美)阿霍等著,赵建华等译,出版社:机械工业出版社, 出版时间2008年12月 2程序设计语言一编译原理(第3版),作者:陈火旺,出版社国防工业出版社, 出版时间2020年08月 [3编译原理(第3版),作者:王生原,董渊,张素琴,吕映芝,蒋维杜著,出版社 清华大学出版社,出版时间2015年06月 [4编译原理,作者:李维华,岳昆,周小兵,出版社:北京邮电出版社,出版时 间:2023年2月 六、其他需说明的 大纲修订人:沈永珞 修订日期:2023年2月 大纲审定者: 审定日期:
实验报告 五、推荐实验教材和教学参考书 (1)推荐教材:编译原理,作者:龚宇辉,王丽敏,出版社:电子工业出版社, 出版时间:2018 年 06 月 (2)参 考 书: [1] 编译原理(第 2 版),(美)阿霍 等著,赵建华等译,出版社:机械工业出版社, 出版时间:2008 年 12 月 [2] 程序设计语言—编译原理(第 3 版),作者:陈火旺,出版社:国防工业出版社, 出版时间:2020 年 08 月 [3] 编译原理(第 3 版),作者:王生原,董渊,张素琴,吕映芝,蒋维杜著,出版社: 清华大学出版社,出版时间:2015 年 06 月 [4] 编译原理,作者:李维华,岳昆,周小兵,出版社:北京邮电出版社,出版时 间:2023 年 2 月 六、其他需说明的 大纲修订人:沈永珞 修订日期:2023 年 2 月 大纲审定者: 审定日期: