编译原理_实验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理_实验报告

编译原理实验报告 《编译原理》实验教学大纲 一、课程名称:编译原理(Principle of Compiler) 二、课程编码:4111204 三、课程总学时: 72 学时[理论: 54 学时;实验: 18 学时 四、课程总学分: 4 学分 五、适用专业和开课学期:计算机科学与技术专业,第7学期。 六、实验的目的与任务: 编译原理是计算机类专业特别是计算机软件专业的一门重要专业课。设置该课程的目的在于系统地向学生讲述编译系统的结构、工作流程及编译程序各组成部分的设计原理和实现技术,使学生通过学习既掌握编译理论和方法方面的基本知识,也具有设计、实现、分析和维护编译程序等方面的初步能力。编译原理是一门理论性和实践性都比较强的课程。进行上机实验的目的是使学生通过完成上机实验题目加深对课堂教学内容的理解。同时培养学生实际动手能力。 七、主要仪器设备及台(套)数:一人一机。 八、主要实验教材(指导书)及参考用书: [1]《编译原理》,吕映芝、张素琴、蒋维杜,清华大学出版社,1998年出版 [2] 《编译程序设计原理》,杜书敏、王永宁,北京大学出版社,1988年出版 [3] 《计算机编译原理》,张幸儿,科学出版社,1999年出版 [4]《编译程序原理与技术》,李赣生等,清华大学出版社,1997年10月出版。 九、成绩考核方式及评分标准: 由指导教师结合实验报告质量及学习态度等采用5级记分制评分。实验成绩占期终综合测评成绩的30%。 十、实验开出率:100% 十一、实验项目与要求: 序 号 实验项目名称 学时 项目要求 项目性质 项目类别 每台(套)仪器人数 目的要求 1 词法分析 4 必修 设计 操作 微机,每人一台。 1.确定编译中使用的表格、词法分析器的输出形式、标识符与关键字的区分方法。 2. 2 语法分析 10 必修 设计 操作 微机,每人一台。 1. 2. 3 语义分析 4 必修 设计 模拟 微机,每人一台。 1. 2. 实验一:词法分析 一、实验目的 给出PL/0文法规范,要求编写PL/0语言的词法分析程序。 二、实验准备 微机CPU主频1.3G以上,128M内存,安装好C语言,PASCAL语言,或C++。 三、实验时间 6学时 四、实验内容 已给PL/0语言文法,输出单词(关键字、专用符号以及其它标记)。 二.实验内容 1、格式 输入:源程序文件。 输出:关键字、专用符号以及其它标记。 2、编译对象: 包含如下基本内容 1) 变量说其它标记: 明语句 2) 赋值语句 3) 条件转移语句 4) 表达式(算术表达式和逻辑表达式) 5) 循环语句 6) 过程调用语句 3、 实现过程 本次实验所用的语言为标准C,以下同。本功能实现的主函数为getToken函数。通过从文件中读取字符到缓冲区中并由C语言字符的状态转换图流程判断返回一个字符(Token)。分析出来的Token主要分为关键字,专用符号,标记符号。 本实验实现的C语言的基本词法如下: 关键字: els if int return void while 专用符号: + - * / = == != = ; , ( ) [ ] { } /* */ 其它标记: id num ID = letter letter* NUM = digit digit* letter = a|b|...|z|A|B|...|Z| ditit= 0|1|...|9 通过在C语言中定义一个枚举类型来识别这些符号: PL/0语言的EBNF表示 常量定义::=标识符=无符号整数; 标识符::=字母={字母|数字}; 加法运算符::=+|- 乘法运算符::=*|/ 关系运算符::==|#||=||= 字母::=a|b|…|X|Y|Z 数字::=0|1|2|…|8|9 4、主体结构的说明 在这里说明部分告诉我们使用的LETTER,DIGIT, IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward ,references).这些代码应该再标记%{和%}之间;规则部分gt;可以包括任何你想用来分析的代码;我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能. 5、实现原理 程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。 三:设计过程 1. 关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf 并为小写。 2

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档