信息工程学院编译原理实习指导书(老版).doc

信息工程学院编译原理实习指导书(老版).doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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〈条件〉〈语句块〉 〈条件〉→(〈表达式〉〈关系符〉〈表达式〉)〈表达式〉→〈表达式〉〈〉〈表达式〉〈表达式〉〈〉→|-|*|/ 〈关系符〉→<|<=|>|>=|==| 实验三 语义分析 一、实习目的 通过上机实习,加深对语法制时翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。 二、实习要求 采用递归下降语法制导翻译法对算术表达式、赋值语句、条件语句、循环语句进行语义分析生成四元

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档