编译原理实验手册4版.docVIP

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

兰州大学计算机科学与技术专业 编译第一节 概述 一、目的 编译是一门实践性很强的课程,。 实际的编译程序是十分复杂的,有时由多达十几万条指令组成。为此,编译的实践教学,采用简化编译过程的办法,选择最关键的个环节──词法分析、语法分析语义每个环节作为一个实践课题。二、实任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程。故本将定义一个简化的语言──PASCAL语言的一个子集作为源语言,分个课题出它的编译程序。前后贯穿这一条主线进行。三、PASCAL语言子集的 由于Pascal语言结构严谨,层次清晰,语法与C语言接近,也便于理解,因此本实验抽取Pascal语言的一个子集,稍加改造,作为源语言,姑且命名为LittleP。一个LittleP程序由一系列全局数据声明和一个主程序体组成。所有数据采用静态存储分配,没有I/O,只支持一种基本数据类型:无符号整数。 Procedure,procedurehead,procedurebody,variable,declare,compound, Statment,definition,list,empty,variablename,style,statement,Block, condition,cycle,arithmeticexpression,relationexpression,term,add,muti, factor,num,identifier,letter,digit,endue赋予 LittleP的→〈程序首部〉〈程序体〉. 〈程序首部〉→ program〈程序名〉;   〈程序体〉→〈变量声明〉〈复合语句〉 〈变量声明〉→ var〈变量定义列表〉|〈空〉 变量定义列表 → 〈变量定义〉〈变量定义列表〉|〈变量定义〉; 〈变量定义〉→〈变量名列表〉: 类型 ; 变量名列表 → 〈变量名〉|〈变量名〉,〈变量名列表〉 类型 → integer 〈复合语句〉→ begin〈语句块〉end 〈语句〉→〈语句〉|〈语句〉〈语句〉〈赋值语句〉→〈〉〈〉→〈〉〈〉→〈〉〈条件语句〉→〈表达式〉〈语句〉〈语句〉〈语句〉→〈表达式〉〈语句〉〈关系运算符〉〈运算符〉〈运算符〉| |〈〉→〈标识符〉〈〉→〈标识符〉〈标识符〉→〈字母〉|〈标识符〉〈字母〉|〈标识符〉〈数字〉〈数〉→〈数字〉|〈数〉〈数字〉 〈关系运算符〉→= 〈运算符〉〈运算符〉〈数字〉→ 12|3|4|5|6|7|8|9|0 2.在此基础上加以扩充,可得功能较强的一个 LittleP 语言的超集:LittleP+。该语言引入了实数、一维数组和过程、函数的定义,参数传递采用传值方式。另外,加入了I/O支持,编译器提供两个系统函数:read()和write()。 〈程序〉→〈程序首部〉〈程序体〉. 〈程序首部〉→ program〈程序名〉;   〈程序体〉→〈变量声明〉分程序声明〈复合语句〉 〈变量声明〉→ var〈变量定义列表〉|〈空〉 变量定义列表 → 〈变量定义〉〈变量定义列表〉|〈变量定义〉; 〈变量定义〉→〈变量名列表〉: 类型 ; 变量名列表 → 〈变量名〉|〈变量名〉,〈变量名列表〉 类型 → 基本类型|数组 基本类型 → integer | real 数组 →array [〈下界〉..〈上界〉] of 基本类型 下界 →整数 上界 →整数 分程序声明 → 〈分程序〉 〈分程序声明〉|〈空〉 〈分程序〉→ 〈分程序首部〉〈变量声明〉〈复合语句〉 〈分程序首部〉→ procedure〈过程名〉( 形参列表 ); | function〈函数名〉( 形参列表 ) : 基本类型; 形参列表 → 〈形参定义〉 ,〈形参列表〉|〈形参定义〉|〈空〉 〈形参定义〉→〈变量名列表〉: 基本类型 〈复合语句〉→ begin〈语句块〉end 〈语句〉→〈语句〉|〈语句〉;〈语句〉〈赋值语句〉→〈〉〈〉→〈〉|〈〉〈〉→〈〉〈条件语句〉→〈表达式〉〈语句〉〈语句〉〈语句〉→〈表达式〉〈语句〉〈语句〉→〈关系运算符〉〈运算符〉〈运算符〉|||〈〉 ||〈〉→〈标识符〉〈〉→〈标识符〉〈〉→〈标识符〉〈〉→〈标识符〉〈标识符〉→〈字母〉|〈标识符〉〈字母〉|〈标识符〉〈数字〉〈数〉→〈数字〉|〈数〉〈数字〉 〈〉→〈数〉〈数〉 〈关系运算符〉→= 〈运算符〉〈运算符〉〈数字〉→ 12|3|4|5|6|7|8|9|0 3.对源程序语法的其他说明: 出现在{ }里的所有字符作为注释跳过。 各单词符号之间的空格可有可无,但关键字和标识符 每个课题完成后写出实报告。实报告程序设计时考虑的算法和;第二节 词法分析 一、目的与要求 1.目的 通过设计调试词法分析程

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档