《编译原理》课程实验教学大纲 一、课程基本信息 课程代码: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