《编译原理》实验教学大纲

发布 2021-05-13 16:43:28 阅读 6032

《编译原理》课程实验教学大纲。

1.实验课程号: 20013b3sy

2.课程属性:必修。

3.实验属性:非独立设课。

4.学时学分: 12学时。

5.实验应开学期:秋季。

6.先修课程:c语言fortran语言或pascal语言,汇编语言,数据结构,离散数学等。

一、课程的性质与任务。

本课程属于计算机科学与技术专业的一门重要的专业必修课。通过课程学习,使学生掌握编译程序的一般构造原理,包括语言基础知识、词法分析程序设计原理和构造方法。了解各种语法分析技术和中间**生成符号表的构造、**优化、并行编译技术常识及运行时存储空间的组织等基本方法和主要实现技术。

本课程有一定的理论性,又有一定的实践性, 尤其是它与计算机应用中很多领域有紧密联系与广泛应用。了解与掌握本课程的基本内容将有利于学生提高专业素质和适应社会多方面需要的能力。

二、实验的目的与基本要求。

通过实验使学生对比较抽象的编译理论内容产生一个具体的感性认识,能把《编译原理》的相关理论运用到软件开发中。在学生手动生成词法分析器及完成一些小的语法分析器的过程中,使学生对这些部份的工作机理有一个详细的了解,达到“知其然,且知其所以然”,从而提高学生的应用程序设计能力,提高分析问题、解决问题的能力。

三、实验考核方式及办法。

实验成绩评分办法:实验成绩占课程成绩的20%。

四、实验项目一览表。

编译原理实验项目一览表。

五、实验项目的具体内容:

实验一:源程序的输入和扫描。

1.本次实验的目的和要求。

理解源程序被编译器读取的过程,掌握扫描程序的编写方法。

2.实验内容或原理。

编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据);并编制一个扫描子程序,该子程序中每次调用能依次从存放源程序的输入缓冲区中读出一个有效字符。

3.需用的设备:计算机。

4.实验步骤。

1) 准备:确定开发工具,如tc、vc、vc++、delphi等;花一周时间熟悉开发工具。花一周时间确定被处理的语言的语法特点(初步确定,也可使用现成语言如pascal、c等)。

写好实验报告,编好程序。

2) 上机:安装所需的开发工具,输入或拷贝程序,调试。

3) 程序要求:

如源程序为c语言。输入如下一段:

main()

int a,b ,c;

a = 10; b=20;

c=a+b;

要求输出与输入相同。

要点:读字符的子程序作为单独一个过程(函数),每调用它一次只返回缓冲区里的一个字符,主程序连续调用它就得到完整的输出。(见右图)

4) 练习该实验的目的和思路:

程序非常简单,但要明白该程序的作用,为什么要设计成独立的子函数?要将它和在以后的实验中进行比较,可得出这样处理的目的。

5.教学方式。

教学辅导,提供部分源**。

6.考核要求。

程序通过测试并提交实验报告。

7.实验报告要求。

1) 写出编程思路、源**;

2) 写出上机调试时发现的问题,以及解决的过程;

3) 写出你所使用的测试数据;

4) 谈谈你的体会。

实验二词法分析实验。

1.本次实验的目的和要求。

了解词法分析器的内部工作原理,通过本次实验,掌握对字符进行灵活处理的方法。

2.实验内容或原理。

编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号。遇到错误时显示“error”,然后跳过错误部分继续显示)。

3.需用的设备:计算机。

4.实验步骤。

1) 准备:

a. 阅读课本有关章节,花一周时间明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。

b. 初步编写程序:a.

模块设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情;b.写出(画出)设计方案:

模块关系简图、流程图、全局变量、函数接口等;c.编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。

c. 准备好多组测试数据。

2) 上课上机:将源**拷贝到机上调试,发现错误再修改完善。第二次上机调试通过。

3) 程序要求:

程序输入/输出示例:

如源程序为c语言。输入如下一段:

main()

int a,b;

a = 10;

b = a + 20;

要求输出如右图。

要求:识别保留字:if、int、for、while、do、return、break、continue

其他的都识别为标识符;

常数为无符号整形数;

运算符包括》、<

分隔符包括。

4) 程序思路(仅供参考):

a. 定义部分:定义常量、变量、数据结构。

b. 初始化:从文件将源程序全部输入到字符缓冲区中。

c. 取单词前:去掉多余空白。

d. 取单词后:去掉多余空白(可选,看着办)。

e. 取单词:利用实验一的成果读出单词的每一个字符,组成单词,分析类型。(关键是如何判断取单词结束?取到的单词是什么类型的单词?)

f. 显示结果。

5.教学方式。

教学辅导,提供部分源**。

6.考核要求。

程序通过测试并提交实验报告。

7.实验报告要求。

试验报告中应包含以下内容:

1) 功能描述:该程序具有什么功能?

2) 程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图、程序总体执行流程图。

3) 实验过程记录:出错次数、出错严重程度、解决办法摘要。

4) 实验总结:你在编程过程中花时多少?多少时间在纸上设计?

多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?

你是怎么克服的?你对你的程序的评价?你的收获有哪些?

实验三算符优先文法处理判断算术表达式的正确性。

1.本次实验的目的和要求。

了解语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法。

2.实验内容或原理。

算术表达式的文法可以是(可以根据需要适当改变):

e→e+e|e-e|e*e|e/e|(e)|i

根据算符优先分析法,将表达式进行语法分析,判断一个表达式是否正确。

3.需用的设备:计算机。

4.实验步骤。

1) 准备:1.阅读课本有关章节,花一周时间确定算术表达式的文法,设计出算符优先关系表;2.考虑好设计方案;3.设计出模块结构、测试数据,初步编制好程序。

2) 上课上机:上机调试,发现错误,分析错误,再修改完善。教师根据学生的设计方案与学生进行**,以修改方案和**。

3) 程序要求:

程序输入/输出示例:

如参考c语言的运算符。输入如下表达式(以分号为结束)和输出结果:

a)10;输出:正确。

b)1+2;

输出:正确。

c)(1+2)/3+4-(5+6/7);

输出:正确。

d)((1-2)/3+4

输出:错误。

e)1+2-3+(*4/5)

输出:错误。

注意:为降低难度,表达式中不含变量(只含无符号整数);

如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);

测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照;

对学有余力的同学,可增加功能:当判断一个表达式正确时,输出计算结果,计算过程用浮点表示,但要注意不要被0除。

4) 程序思路(仅供参考):

a. 借用实验二的结果,可将其中的取字符函数几乎原封不动地移植过来,其中的分割和分析单词的方法可借用过来分割现在这个实验的运算符、常量和变量。

b. 模块结构:(1)初始化:

设立算符优先关系表(或优先函数)、初始化变量空间(包括堆栈、结构体、数组等);(2)控制部分:将一个表达式从文件中读出;(3)词法分析:将表达式分割成单词序列;(4)利用算符优先文法进行表达式处理:

根据算符优先关系表对表达式单词序列进行堆栈操作,如果遇到错误则显示错误信息。

5) 为了能设计好程序,主意以下事情:

模块设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情。

写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。

编程时注意编程风格:空行的使用、注释的使用、缩进的使用、变量合理命名等。

5.教学方式。

教学辅导,提供部分源**。

6.考核要求。

程序通过测试并提交实验报告。

7.实验报告要求。

1) 功能描述:该程序具有什么功能?

2) 程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图、程序总体执行流程图。

3) 实验过程记录:出错次数、出错严重程度、解决办法摘要。

4) 实验总结:你在编程过程中花时多少?多少时间在纸上设计?

多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?

你是怎么克服的?你对你的程序的评价?你的收获有哪些?

六、实验教材及主要参考资料。

自编。七、教改说明及其他。

主撰人 :王奕。

审核人:贺智勇。

分管教学院长:张林峰。

2024年 5 月 8 日。

《编译原理》实验教学大纲

计算机编译原理 实验教学大纲。说明。一 课程性质 专业核心课程。二 教学目的。设置本实验的目的在于让学生系统地了解并掌握程序设计语言编译程序的构造原理。该课程与其他很多学科紧密相关,编译原理与技术在软件工程,逆向工程,软件工程,语言转换及其他领域中有着广泛的应用,对软件开发也有一定的启发与指导作用。...

编译原理实验教学大纲

课程编号 090069sy课程名称 编译原理实验。英文名称 experiments for principles of compilers学分 0.5学时 17学时。适用年级专业 学科类 计算机科学与技术,三年级 电器信息类 编写人 李凯审稿人 田学东。一 课程概述。一 课程性质。编译原理实验 是配...

化工原理实验教学大纲

化工原理实验 教学大纲。四川理工学院材料与化学工程系实验中心。目录。1 化工原理实验的性质和任务 1 2 大纲编写依据 1 3 适用专业 1 4 先行课程 1 5 考核方式及办法 1 6 实验项目 2 7 实验学时分配 2 8 实验基本要求 3 9 教材及参考资料 7 根据材料与化学工程系实践课程体...