编译原理实验教学大纲2.doc

上传人:s9****2 文档编号:558245330 上传时间:2023-05-27 格式:DOC 页数:15 大小:175KB
返回 下载 相关 举报
编译原理实验教学大纲2.doc_第1页
第1页 / 共15页
编译原理实验教学大纲2.doc_第2页
第2页 / 共15页
编译原理实验教学大纲2.doc_第3页
第3页 / 共15页
编译原理实验教学大纲2.doc_第4页
第4页 / 共15页
编译原理实验教学大纲2.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《编译原理实验教学大纲2.doc》由会员分享,可在线阅读,更多相关《编译原理实验教学大纲2.doc(15页珍藏版)》请在金锄头文库上搜索。

1、编译原理课程实验教学大纲【编 写】 朱少林 【审 核】【课程类别】 专业选修 【课程学时】 51【开课学期】 【实验学时】 16 - 34【授课专业】计算机科学与技术 1、 课程简介 编译程序是现代计算机系统的基本组成部分之一。“编译原理”是计算机专业的一门重要专业课,同时也是一门实践性很强的课程,只有通过实践,才能真正掌握。编译技术,作为一门计算机软件技术,内涵极为丰富。有关词法、文法的分析,有关表格的处理,有关符号信息的处理方法,有关清晰有效的算法描述方法,有关部门形形色色数据结构的运用,自动机理论及其规划程序的指导作用。通过对本课程的学习,不仅可以掌握编译程序本身的基本实现原理和技术,同

2、时也有助于提高对程序设计语言的理解,提高语言设计及程序设计能力。2、实验目的及要求通过实验环节,加强学生对所学编译原理知识的深入理解及熟练掌握,为今后进行各种程序的编制和开发打下良好的基础。要求在掌握理论知识的基础上,设计有关算法,编写程序,调试程序。编程语言可为C、C+或Java。1) 正确理解什么是编译程序;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序的组成结构;了解编译程序的生成过程和构造工具。2) 理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。3) 理解词法分析器功能及形式;熟练掌握词法分析器设计的原理,掌握运用状态转换图进行

3、词法分析器设计。4) 正确理解自下而上语法分析的基本思想,以及归约、短语、句柄、分析树等概念;根据预先由文法规则建立的LR(k)分析表,对输入串进行语法分析。3、对先修课的基本要求 C语言及程序设计、离散数学、数据结构、操作系统、面向对象程序设计等。4、实验方式及要求1) 了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序的组成结构;了解编译程序的生成过程和构造工具。2) 理解程序语言词法、语法和语义等概念;熟悉高级程序语言一般结构和主要共同特征。3) 熟练使用Java或C/C+语言,编程实现词法分析、符号表管理、中间代码生成和语法分析等程序,理解和掌握编译系统的工作原理。5、主要仪

4、器设备微型计算机实验平台:操作系统:Windows 2000/XP语言平台选用Visual C+: VC+6.0或以上兼容版本选用C: Turbo C 2.0或以上兼容版本选用Java:J2SDK1.5.0_06或兼容版本、Eclipse3.1或TextPad 4.7或其它兼容编辑器7、实验教材及参考书编译原理(第2版),陈意云、张昱,高等教育出版社编译原理,吕映芝,清华大学出版社编译原理 侯文永,电子工业出版社编译原理学习辅导 张伟,清华大学出版社编译原理(第2版) 蒋立源 西北工业大学出版社实验 1 查填符号表1、实验目的:运用所学知识,选择语言、选择算法(数据结构),编程实现符号表管理程

5、序。熟悉编译过程,训练编写程序的能力,为后续实验积累经验。2、实验的基本原理 基于一种搜索算法,建立表示符表;利用界符进行单词解析;运用文法(自动机)进行标识符识别。3、 实验内容及要求a. 运用所学知识,编程实现符号表管理程序。读出源程序中与C语言词法规定相一致的标识符,并在符号表中进行查找,若存在则输出该标识符及其编号和位置;否则将其填入符号表,并分配编号,确定位置,输出该标识符。b. 输出标识符表。4、 实验步骤a) 建立简单的符号表,可以只包含标识符和编号;b) 编写单词解析子程序,从源程序中分离出单词;c) 编写查找标识符的子程序(应考虑查找算法),插入新的标识符;d) 程序调试,输

6、出标识符表。5、 实验数据的处理与实验报告要求e) 写出实验报告。实验报告包括程序设计时考虑的算法和方法;调试过程中出现的问题和解决的措施;打印出程序清单和调试时所用的源程序。源程序清单中应该添加足够的注释。f) 完成习题2中的练习2.1、2.7、2.8。实验 2 简单词法分析1、实验目的:通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法;掌握词法分析的实现方法;上机调试编出的词法分析程序。2、实验的基本原理 利用单词描述工具(文法、自动机及它们之间的关系)进行单词

7、解析。3、实验内容及要求 掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。 掌握词法分析的实现方法。 上机调试编出的词法分析程序。 为简单起见,假设编译语言为具有下特征的C_minus。该词法分析器要求至少能够识别C_minus中的以下几类单词:a 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写;b 标识符:识别与C语言词法规定相一致的标识符,通过下列正则表达式定义:ID = letter (letter | digit)*;c 常数:NUM=(+ | - |)digit digit*(.digit dig

8、it* |)(e(+ | - |) digit digit* |),letter = a|.|z|A|.|Z|,digit = 0|.|9,包括整数,如123, -123, +123等;小数,如123.45, +123.45, -123.45;科学计数法表示的常数,如+1.23e3,-2.3e-9;d 专用符号:+ - * / = = != = ; , ( ) /* */;4、实验步骤将词法分析程序设计成独立一遍扫描源程序的结构。其流程图见下图。图 词法分析程序流程图实验要求: 所有识别出的单词都用两个字节的等长表示,称为内部码。第一个字节为 t ,第二个字节为 i 。 t 为单词的种类。关键

9、字的 t=;分界符的 t=;算术运算符的 t=;关系运算符的 t=;无符号数的 t=;标识符的 t=。i 为该单词在各自表中的指针或内部码值。表 5-1 为关键字表;表 5-2 为分界符表;表 5-3 为算术运算符的 i 值;表 5-4 为关系运算符的 i 值。表5-1 关键字表表5-2 分界符表指针1关键字指针1分界符0break 0,1do1;2else2.3float3=4if4(5int5)6677表5-3 算术运算符表5-4 关系运算符i 值算术运算符i 值关系运算符00H10H+01H21H/04H=05H常数表和标识符表是在编译过程中建立起来的。其 i 值是根据它们在源程序中出现

10、的顺序确定的。 常数分析程序、关键字和标识符分析程序、其他单词分析程序请参阅范例自行设计。5、实验数据的处理与实验报告要求a) 写出实验报告。实验报告包括程序设计时考虑的算法和方法;调试过程中出现的问题和解决的措施;打印出程序清单和调试时所用的源程序。源程序清单中应该添加足够的注释。b) 完成习题2中的练习2.4。实验3 递归下降分析器的设计1、实验目的:使用递归子程序法设计一个语法分析程序,理解自顶向下分析方法的原理,掌握手工编写递归下降语法分析程序的方法。2、实验的基本原理 对于一个给定文法,通过消除左递归、提左因子等变换,使其满足LL(1)文法的要求;通过构造非终结符的FIRST和FOL

11、LOW集合,为每个非终结符写一个递归下降分析程序,并对给定的句子进行语法分析。语法分析中通过词法分析子程序获得一个单词的词法记号。3、 实验内容及要求a. 运用所学知识,编程实现递归下降语法分析程序。使用递归下降分析算法分析表达式是否符合下文法:exp exp addop term | termAddop + | -term term mulop factor | factormulop * | /factor (exp) | id | number其中number可以是多位的十进制数字串(整数即可),因此这里还需要一个小的词法分析器来得到id 和number的值。b. 从数据文件中读出符号串

12、,输出表达式并给出其正误评判。c. 实验数据文件中应该有多个表达式,可能有正确的也应该有错误的表达式;表达式有形式简单的也应该有复杂的。每个表达式写在一行,以回车结束。4、 实验步骤首先将上述文法改写成LL(1)文法,准备好用于实验的表达式数据,并存储在文件中。a) 建立简单的符号表,可以只包含标识符和编号;b) 编写单词分析子程序,能从源程序中分离出单词;词法分析器以子程序形式出现,当需要进行词法分析时进行调用;c) 编写递归下降语法分析程序,对给定的表达式进行语法分析;分析程序应该能够识别正确和错误的表达式;d) 逐个输出表达式,并给出正误评判。5、 实验数据的处理与实验报告要求写出实验报

13、告。实验报告包括程序设计时考虑的方法和算法;调试过程中出现的问题和解决的措施;给出源程序清单和调试时所用的数据,源程序清单中应该添加足够的注释;给出实验结果。实验4 LL分析器的设计1、实验目的:使用递归子程序法设计一个语法分析程序,理解自顶向下分析方法的原理,掌握手工编写非递归下降语法分析程序的方法。2、实验的基本原理对于一个给定文法,通过消除左递归、提左因子等变换,使其满足LL(1)文法的要求;通过构造非终结符的FIRST和FOLLOW集合,进而构造预测分析表。预测分析程序根据此表,对给定的句子进行语法分析。语法分析中通过词法分析子程序获得一个单词的词法记号。3、实验内容及要求a. 运用所

14、学知识,编程实现递归下降语法分析程序。使用递归下降分析算法分析表达式是否符合下文法:exp exp addop term | termAddop + | -term term mulop factor | factormulop * | /factor (exp) | id | number其中number可以是多位的十进制数字串(整数即可),因此这里还需要一个小的词法分析器来得到id 和number的值。b. 从数据文件中读出符号串,输出表达式并给出其正误评判。c. 实验数据文件中应该有多个表达式,可能有正确的也应该有错误的表达式;表达式有形式简单的也应该有复杂的。每个表达式写在一行,以回车结束。4、实验步骤首先将上述文法改写成LL(1)文法,准备好用于实验的表达式数据,并存储在文件中。a) 建立简单的符号表,可以只包含标识符和编号;b) 编写单词分析子程序,能从源程序中分离出单词;词法分析器以子程序形式出现,当需要进行词法分析时进行调用;c) 构造分析表,编写非递归下降的预测分析程序,对给定的表达式进行语法分析;分析程序应该能够识别正确和错误的表达式;非递归的预测分析算法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号