编译原理实验指导
《编译原理》实验指导书
毛红梅 吴振华 编
南昌航空大学计算机学院 2003年1月初稿 2007年10月修改
编译原理实验指导
目录
编译原理一共开设了三个实验,它们是: 1. 词法分析程序,占2个学时 2. 语法分析程序,占2个学时
3. 扩充的PL/0分析程序(综合实验),占
6个学时。
编译原理实验指导
实验报告格式
1. 姓名 班级 学号 2. 实验名称 3. 实验目的 4. 实验要求
5. 实验内容(这个是实验报告的主要部分) 6. 实验总结(实验心得) 7. 实验报告人 报告时间
编译原理实验指导
实验一 PL/O语言的词法分析程序GETSYM
过程GETSYM的说明:由于一个单词往往是由一个或几个字符组成,
所以在词法分析过程GETSYM中又定义一个取字符过程GETCH,由词法分析需要取字符时调用。
实验目的:
1. 为了更好的配合《编译原理》有关词法分析章节的教学 2. 加深和巩固学生对于词法分析的了解和掌握
3. 让学生初步的认识PL/0语言的基础和简单的程序编写
4. 学生通过本实验能够初步的了解和掌握程序词法分析的整个过程 5. 提高学生的上机和编程过程中处理具体问题的能力
实验要求:
1. 做本实验之前要先阅读完总体的预备知识以及本实验相关的基础知识 2. 实验要求自己独立的完成,不允许抄袭别人的实验结果
3. 编写和调试过程中出现的问题最好做一下记录
4. 实验程序调试完成后, 用给定的PL0测试程序(test.pl0)进行测试,由老师检查测试结果,并给予相应的成绩 5. 实验完成后,要上交实验报告。
实验内容:
1. 阅读所给出的词法分析程序(pl0_lexical.c),搞懂程序中每一个变量的含义,
以及每一个过程的作用,并在该过程中进行中文注释。
2. 阅读完程序后,画出各过程的流程图。
3. 给出的程序包含两处输入错误,利用所给的pl/0源程序(test.pl0)对程序进行调
试,使其能正确对所给文件进行分析并能够解释运行。
4. 在阅读懂所给出的词法分析程序后,将你对词法分析的理解写在实验报告上。
实验环境:
1. 操作系统为Windows 2000或Dos6.2以上 2. 应用软件为Pascal或C语言
GETCH 所用单元说明:
CH :存放当前读取的字符,初值为空, LINE:为一维数组,其数组元素是字符; 界对为1:80。用于读入一行字符的缓冲区; LL,CC: 为计数器,初值为0; GETSYM流程图的工作单元说明:
编译原理实验指导
A: 一维数组,数组元素为字符,界对[1:10]; ID:同A;
WORD:保留字,一维数组,数组元素为以字符为元素的一维数组。界对为[1:13]。查表方式采用二分法。
本实验基础知识:
PL/O语言的编译程序,是用高级语言PASCAL语言书写的。整个编译过程是由一些嵌套及并列的过程或函数完成。词法分析程序是独立的过程GETSYM完成,供语法分析读单词时使用。语法分析是由过程BLOCK完成。采用自顶向下的递归子程序法 。所产生的目标程序为假象栈式计算机的汇编语言。对目标程序的执行是由PASCAL语言书写的解释程序进行的。因此 PL/O语言可以在配备PASCAL语言的任何机器上实现。由于PL/O语言编译程序是适合教学用的实例,它的数据类型只有整形数,数据运算只有四则运算。语句有复制语句、条件语句、While型循环语句、输入、输出语句和不带参数允许递归调用过程语句及复合语句。 注意:程序流程图参见教材P19页,并不是本实验唯一的流程图,大家应该根据自己的思路作一个修改,争取能够体现自己的创新。这个流程图只是做一个参考,在大家上交的实验报告里要具体说明你所编写的程序关于这个过程实现的原理。词法分析程序的设计---使用状态转换图(如图1所示)实现
表示状态,对应每个状态编一段程序,每个状态调用取字符程序,根据当前字符转到不同的状态,并做相应操
作。
表示终态,已识别出一个单词。
图1 一个可能的状态机示例
词法分析程序GETSYM的功能包括:
1. 滤空格,空格在词法分析时是一种不可缺少的界符,而在语法分析时是无用的,所
编译原理实验指导
以必须滤掉。
2. 识别保留子:设有一张保留字表。对每个字母打头的字母、数字字符串要查此
表。若查着则为保留字,对应的类别放在SYM中。如IF对应值为THENSYM。 3. 识别标识符:对用户定义的标识符将IDENT放在SYM中,标识符本身的值放在ID中。 4. 拼数:当所取单词是数字时,将树的类别NUMBER放在SYM中,数值本身
的值放在NUM中。
5. 拼复合词:对两个字符组成的算符如:>=、:=、<= 等单词,识别后将类别送SYM中。
6. 打印源程序:为边读入字符边打印。
打印每个单词的识别类别(如果是标识符或数字应该给出其值即id和num中的值。图2所示即为给定PL0源程序的一个可能输出)。
图2 源程序中前七行一个可能的输出
编译原理实验指导
实验二 PL/O语言的语法分析过程BLOCK
实验目的:
1. 为了更好的配合《编译原理》有关词法分析章节的教学
2. 加深和巩固学生对于语法分析的了解和掌握
3. 让学生进一步的认识PL/0语言的基础和简单的程序编写
4. 使学生通过本实验能够初步的了解和掌握程序语法分析的整个过程 5. 提高学生的上机和编程过程中处理具体问题的能力
实验要求
1. 在做本实验之前要先阅读完总体的预备知识以及本实验相关的基础知识。 2. 本实验要求自己独立的完成,不允许抄袭别人的实验结果。 3. 在编写和调试过程中出现的问题最好做一下记录。
4. 阅读懂所给出的语法分析程序,然后进行改进。
5. 在阅读懂所给出的语法分析程序后,老师将进行逐个的检查以及提问,然后给出
成绩。
实验内容:
1. 阅读所给出的语法分析程序(pl0_syntax.c),搞懂程序中每一个变量的含义,
以及每一个过程的作用,并在该过程中进行中文注释。 2. 阅读完程序后,画出各过程的流程图。
3. 给出的程序包含两处输入错误,利用所给的pl/0源程序(test.pl0)对程序进行调
试,使其能正确对所给文件进行分析并能够解释运行。 4. 在阅读懂所给出的语法分析程序后,将你对语法分析的理解写在实验报告上。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试编译原理实验指导书在线全文阅读。
相关推荐: