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