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