- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息工程学院编译原理实习指导书(老版)
编译原理实验指导书
西北农林科技大学信息工程学院
2017年3月7日
实验一 词法分析 1
实验二 语法分析 3
实验三 语义分析1 4
实验四 语义分析2 4
实验五 错误处理 4
附录 5
实验环境和工具 5
MiniC语言 21
实习一 词法分析
一、实验目的:
1. 熟悉Javacc工作原理,掌握词法分析相关的类:
Token:表示单词的类。每个Token对象的主要成员:intkind表示单词的种别 String image 存储了token所代表的内容beginLine表示单词所处的行nt beginColumn表示单词所处的TokenMgrError:词法错误类当识别到非法单词时弹出的错误对象
1. 词法分析器的功能和输出格式
词法分析器的功能是读入源程序,输出单词序列。词法分析器的单词常表示成二元式:(单词种别码,单词在源代码中的字符串)。
2. 词法分析器需要把对象语言的词法规则全部描述出来,在这我们取C语言子集,它的词法定义如下:
(1)关键字KEYWORD
if else int return void while…….. 所有的关键字都是小写。
(2)标识符IDENTIFIER
标识符的定义采取正则表达式定义方式,标识符由字母、数字、下划线“_”组成,并且首字母不能是数字。
(3)分隔符SEPARATER
; , { } [ ] ( )
(4)运算符OPERATOR
+ - * / =
(5)常数CONSTANT
简化为只表示整型常数。
(6)词法分析过滤的字符
空格“ ”、制表符“\t”、回车“\r” 和换行符“\n”。
三、实验过程和指导:
1. 准备
编译原理的实习借助的javacc插件版本是1.5.33,要求jdk版本是1.7。请提前安装调试好。
2. 新建一个用于javacc编辑的jj模板文件:
(1)新建java项目
(2)建立一个词法分析包(例如:package lexical)
(3)在lexical 包内,“新建”-“其它”-“JavaCC Template File”
(4)创建一个“.jj”文件,如图1所示:
图1 新建jj模板文件
3. 在模板文件中修改第三部分,将“二、实验预习提示”部分的词法规则写入。
图2 jj模板文件格式
4. 在熟悉词法分析器工作原理的基础上,在main方法中编写词法分析程序,并输出单词序列。要求:准备好多组测试源程序。
四、程序输入/输出示例:
图3 测试源代码
图4 词法分析输出1
对照图图(单词种别码,单词在源代码中的字符串)。图4中最后一行提示词法错误的原因是
实验二 语法分析
一、实验目的:
??? 设计MiniC的上下文无关文法,利用JavaCC生成调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。
二、语法分析器:
按照MiniC语言的语法规则检查词法分析输出的记号流是否符合这些规则,并根据这些规则所体现出的语言中的各种语法结构的层次性。把规则写入到JavaCC的 .jjt文件中,可以生成树状的层次结构。
三、JavaCC:
在JavaCC的文法规范文件中,不仅可以描述语言的语法规范,而且可以描述词法规范,本次实习中,利用JavaCC以MiniC语言构造一个不含语义分析的编译器前端,包括词法分析、语法分析,并要考虑语法分析中的错误恢复问题。通过使用JavaCC, 可以体会LL(k)文法的编写特点,掌握编写JavaCC文法规范文件的方法。
内容:利用JavaCC生成一个MiniC的语法分析器;
要求:
用流的形式读入要分析的C语言程序,或者通过命令行输入源程序。
具有错误检查的能力,如果有能力可以输出错误所在的行号,并简单提示
如果输入的源程序符合MiniC的语法规范,输出该程序的层次结构的语法树
具体实施步骤如下:
1.把MiniC转换为文法如下
〈程序〉→ int main() {〈语句块〉
〈语句块〉→〈语句〉{〈语句串〉}
〈语句〉→〈语句〉|〈条件语句〉|〈循环语句〉〈语句〉→〈〉| 〈赋值语句〉
〈赋值语句〉→ ID =〈表达式
〈条件语句〉→ if〈条件〉〈语句块〉
〈循环语句〉→ while〈条件〉〈语句块〉
〈条件〉→(〈表达式〉〈关系符〉〈表达式〉)〈表达式〉→〈表达式〉〈〉〈表达式〉〈表达式〉〈〉→|-|*|/
〈关系符〉→<|<=|>|>=|==|实验三 语义分析
一、实习目的
通过上机实习,加深对语法制时翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。
二、实习要求
采用递归下降语法制导翻译法对算术表达式、赋值语句、条件语句、循环语句进行语义分析生成四元
您可能关注的文档
最近下载
- (必会)人身险销售从业人员近年考试真题题库汇总(答案).docx
- 大队委竞选讲话稿PPT.pptx
- 毕业论文_-——汽车凸轮轴加工工艺分析.doc
- 国家安全概论-西安交通大学-中国大学MOOC慕课答案.pdf
- 2024年中国成人心肌炎临床诊断与治疗指南解读课件PPT.pptx
- 2024-2025学年小学信息技术(信息科技)四年级全一册义务教育版(2024)教学设计合集.docx
- 项目四 任务六 旅游娱乐(练习-解析版)-《旅游概论》 (高教社第二版)同步精品课堂.docx
- 第四届-全国大学生结构设计信息技术大赛竞赛题-20211206.docx
- 慢性阻塞性肺疾病患者健康服务规范(试行)培训课件.pptx
- 《全国医疗服务价格项目规范(2012年版)》规范目录.pdf
文档评论(0)