资源描述:
《编译原理_实验指导》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《编译原理》上机指导河南工业大学信息科学与工程学院刖5《编译原理》是计算机专业的重要专业课Z—,主要介绍程序设计语言编译构造的基木原理和基木实现方法。由于这门课程相对抽象且内容复杂,i直是最难学的一门课程。编译原理是一门理论性和实践性较强的课程,在学习过程屮,实验非常重要,只有通过上机实验,才能使学生对比较抽象的课程内容产生一个具体的感性认识。但是,目前国内市场上很少有较详细且比较适合我校实际的实验指导书。为此,我们特编了这份指导书,希望能对我校的《编译原理》教学工作有所帮助。由于这门课实验难度较大,所以希望任课教
2、师在实验前安排好学生的预习工作。在上机前要求学生写好实验预习报告。本书中c程序均在Turboc2.0下调试通过。由于编者水平有限,木书中必然存在着不少缺点,在此恳请大家给予批评和指止,我们将尽力纠正。如对木书有批评指正,请Email至houhf72@163.com。在此特对关心支持编写木书的院系领导表示感谢。实验一源程序的输入和扫描1实验二词法分析2实验三递归下降分析法8实验四LL(1)分析法14实验五算符优先法处理算术表达式与赋值语句19实验六逆波兰式的产生及计算31实验七LR(1)分析法36附录一实验报告样例4
3、1附录二词法分析器生成工具FLEX简介45附录三语法分析器生成工具YACC简介511•主程序的部分伪代码:从输入设备接收所冇输入到缓冲区While读入-字符成功显示该字符endwhile2.读入一字符的部分伪代码:if缓冲区非空then读出该字符改变缓冲区指针返回该字符else返回结束标记end讦实验一源程序的输入和扫描一、实验目的:编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据);并编制一个扫描子程序,该子程序中每次调用能依次从存放源程序的输入缓冲区中读出一个有效字符
4、。二、估计实验时间:1.课余准备2小时以上;2上机一次2小时;3.完成实验报告2小时。三、实验过程和指导:(-)准备:确定开发工具,如TC、VC、VC卄、Delphi等;花一周时间熟悉开发工具。花一周时间确定被处理的语言的语法特点(初步确定,也町使用现成语言如Pascal、C等)。写好实验报告,编好程序。(-)上机:安装所需的开发工具,输入或拷贝程序,调试。(三)程序要求:如源程序为C语言。输入如下一段:main(){inta,b,c;a=10;b=20;c=a+b:}要求输出与输入相同。要点:读字符的了程序作为单
5、独一个过程(函数),每调用它一•次只返回缓冲区里的一个字符,主程序连续调用它就得到完整的输出。(见右图)(四)练习该实验的目的和思路:1•程序非常简单,但要明白该程序的作用,为什么要设计成独立的了函数?要将它和在以后的实验屮进行比较,可得出这样处理的目的。2.通过练习,掌握字符处理的方法。四、实验报告要求:1•写出编程思路、源代码;2.写出上机调试时发现的问题,以及解决的过程;3.写出你所使用的测试数据:4.谈谈你的休会。五、上交:1•实验报告;2.程序源文件(通过网络提交)。实验二词法分析一、实验目的:通过设计编
6、制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号口身值。(遇到错误吋可显示“Error”,然后跳过错课部分继续显示)二、实验预习提示1、词法分析器的功能和输出格式诃法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示成以下的二元式(单词种别学,单词符号的属性值)
7、。木实验中,采用的是一类符号一种别码的方式。2、单词的BNF表示v标识符>->v字母〉v字母数字串〉v字母数字串〉x字母><字母数字串>lv数字x字母数字串>1V下划线>V字母数字串>1EV无符号整数>>V数字>v数字串〉V数字串>->V数字X数字串>I£V加法运算符》+V减法运算符>->・V人于关系运算符>>>V大于等于关系运算符〉〉>=3、“超前搜索”方法词法分析时,常常会用到超前搜索方法。如当前待分析字符串为“a>+”,当前字符为此吋,分析器倒底是将具分析为大于关系运算符还是大于等于关系运算符呢?显然,只有知
8、道卜•一个字符是什么才能下结论。于是分析器读入下一个字符这吋可知应将、'解释为大于运算符。但此时,超前读了一个字符所以要回退-个字符,词法分析器才能正常运行。在分析标识符,无符号整数等时也有类似情况。4、模块结构三、实验过程和指导:(―)准备:(2,”main”)(5,"(“)(5,,,)“)(5,(1,”int”)(2,”犷)(5,,,,,,)(2,V)(