编译原理实验指导书

编译原理实验指导书

ID:6282939

大小:306.00 KB

页数:9页

时间:2018-01-08

编译原理实验指导书_第1页
编译原理实验指导书_第2页
编译原理实验指导书_第3页
编译原理实验指导书_第4页
编译原理实验指导书_第5页
资源描述:

《编译原理实验指导书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验指导书前言编译原理是计算机专业的主干课和必修课,由于这门课程相对抽象且内容较复杂,一直是比较难学的一门课程。在编译原理的学习过程中,实验非常重要,只有通过上机实验,才能使学生对比较抽象的课程内容产生一个具体的感性认识。本书实验环境主要为C环境,在C环境下手动生成词法分析器及语法分析器,通过这些实验,能使学生对这些部份的工作机理有一个详细的了解。由于这门课实验难度较大,所以希望在实验前学生要做好预习工作。在上机前写好实验预习报告。-i--i-目录实验一手工生成PL/0语言词法分析器1实验二用算符优先分析法进行表达式分析5-i-实验一手工生成PL/0语言

2、词法分析器实验名称:手工生成PL/0语言词法分析器实验目的:编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)实验原理:词法分析过程1、PL/0的词法分析程序Getsym(图1)是一个独立的过程,它把输入的字符串形式的源程序分割成一个个单词符号。为此PL/0编译程序设置了三个全程量的公用单元如下:Sym:存放每个单词的类别,用内部编码形式表示;Id:存放用户所定义的标识符的值,即标识符字符串

3、的机内表示;Num:存放用户定义的数。如果我们把基本字、运算符、界符称为语言固有的单词,而对标识符、常数称为用户定义的单词,那么经词法分析程序分出的单词,对固有的单词只给出类别存放在sym中,而对用户定义的单词(标识符或常数)既给出类别又给值,其类别存放在sym中,值放在id或num中,全部单词种类由编译程序定义的纯量类型sumbol给出,也可称为语法的词汇表。如下面提到的ifsym,thensym,ident,number均属symbol中的元素。因此词法分析程序Getsym将完成下列任务:滤空格:空格在词法分析时是一种不可缺少的界符,而在语法分析时则是无用的

4、,必须滤掉;(1)识别保留字:设有一张保留字表。对每个字母打头的字母、数字串要查此表。若查到则为保留字,将对应的类别放在sym中,如IF对应值IFSYM,THEN对应为THENSYM。若查不到,则认为是用户定义的标识符;(2)识别标识符:对用户定义的标识符将IDENT放在SYM中,标识符本身的值放在ID中;(3)拼数:当所取单词是数字时,将数的类别NUMBER放在SYM中,数值本身的值存放在NUM中;(4)拼复合词:对两个字符组成的算符,如>=,:=,<=等单词,识别后将类别送SYM中;(5)输出源程序:边读入字符边输出(可输出在文件中)。由于一个单词往往是由一

5、个或几个字符组成的,所以在词法分析过程Getsym中又定义了一个取字符过程GETCH(见图2),由词法分析需要取字符时调用。-6-2、GETCH所用单元说明:CH:存放当前读取的字符,初值为空;LINE:为一维数组,其数组元素是字符,界对为1:80。用于读入一行字符的缓冲区。LL和CC为计数器,初值为0;GETSYM流程图的工作单元说明:A:一维数组,数组元素为字符,界对1:10;ID:同A;WORD:保留字表,一维数组,数组元素为以字符为元素的一维数组,界对为1:13,查找方式采用二分法。-6-图2取字符过程GETCH实验步骤:(一)准备:1.阅读课本有关章节

6、,花一周时间明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。2.初步编制好程序。3.准备好多组测试数据。(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,”}“)(二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。第二次上机调试通过。(三)程序要求:程序输入/输出示例:如源程序为C语言。输入如下一段

7、:main(){inta,b;a=10;b=a+20;}要求输出如右图。要求:识别保留字:if、int、for、while、do、return、break、continue其他的都识别为标识符;常数为无符号整形数;运算符包括:+、-、*、/、=、>、<、>=、<=、!=分隔符包括:,、;、{、}、(、)估计实验时间:1.课余准备15小时;2.上机二次4小时;3.完成实验报告5小时。以上为参考,具体可自行增删。实验成果:-6-1.程序源代码(以报告形式提交);2.已经测试通过的测试数据3组(全部存在一个文本文件中附在报告后面,以“第一组输入/输出/第二组输入/输出

8、/第三组输入/输出”的顺

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。