编译原理实验指导书80940.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文档。上传文档
查看更多
编译原理实验指导书80940.doc

编译原理实验指导书 计算机科学与技术系 2007年6月 目 录 实验目的和任务 1 实验一:词法分析器 1 实验二:语法分析器1 5 实验三:语法分析器2 9 实验四:语义分析和中间代码生成器 11 实验目的和任务编译是一门实践性很强的课程,只有通过实践,才能真正掌握。 实际的编译程序是十分复杂的,有时多达十几万条指令组成。编译的实,最关键的3个环节──词法分析、语法分析 实验设备及工具硬件:软件:以下单词符号与种别对照表要求文法的词法分析器。 1. 文法G程序) 程序(BEGIN 语句表 END. 语句表(语句|语句;语句表 语句(赋值语句︱条件语句︱WHILE语句︱复合语句 赋值语句(变量=算术表达式 条件语句(IF 关系表达式 THEN 语句 ELSE 语句 WHILE语句(WHILE 关系表达式 DO 语句 复合语句(BEGIN 语句表 END 算术表达式(项|算术表达式+项|算术表达式-项 项(变量|整数 关系表达式(算术表达式关系运算符算术表达式 关系运算符(︱= =︱ 变量(标识符 标识符(标识符字母|标识符数字|字母 整数(数字|数字整数 字母(A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z 数字(0|1|2|3|4|5|6|7|8|9 整数标识符2. 单词符号与种别对照表单词符号与种别对照表种别 单词符号 种别 单词符号 种别 单词符号 1 BEGIN 2 END 3 IF 4 THEN 5 ELSE 6 WHILE 7 DO 8 = 9 + 10 - 11 12 = = 13 14 . 15 ; 16 整数 17 标识符 20个字符有效;整数用2个字节表示。这样词法分析程序的主要工作为: 从源程序文件中读入字符。 统计行数和列数用于错误单词的定位。 删除空格类字符,包括回车、制表符空格。 按拼写单词,并用(种别,单词)二元式表示。 根据需要是否填写标识符表供以后各阶段使用。 这里采用的编译程序的实现方法是一遍扫描,即从左到右只扫描一次源程序,也就是词法分析作为语法分析的一个子程序。故在编写词法分析程序时,用重复调用词法分析子程序取一单词的方法得到整个源程序的二元式流。 源程序存放到文件*.pas。 词法分析器从*.pas中读取字符流,输出为单词二元式流,并将输出存放到(.dc文件。测试程序test.pas: BEGIN I=10; J=I+5; WHILE I= =10 DO BEGIN R=J+I; I=I-1 END END.(1 ,“BEGIN”)(1,“”) ( ,“”) (,“”) (1,“”) 实验完成后,将词法分析器程序代码、测试程序代码(正确的及错误的至少各一例)、输出的单词二元式流1 实验目的 掌握自上而下的语法分析方法,构造预测分析程序。 实验内容 构造FIRST集合FOLLOW集合LL(1)分析表构造预测分析的总控程序总控程序设备及工具硬件:软件:本次实验是设计性实验,可参考以下处理方法预测分析器设计。 由于预测分析是自上向下的分析方法,将实验一中的文法改写成无左递归和无左共因子的:程序(BEGIN 语句表 END. 语句表(语句语句表 语句表(;语句表| 语句(赋值语句︱条件语句︱WHILE语句︱复合语句 赋值语句(变量=算术表达式 条件语句(IF 关系表达式 THEN 语句 ELSE 语句 WHILE语句(WHILE 关系表达式 DO 语句 复合语句(BEGIN 语句表 END 算术表达式(项算术表达式 算术表达式(+项算术表达式|-项 算术表达式|ε 项(变量|整数关系表达式(算术表达式关系运算符算术表达式 关系运算符(︱= =︱ 变量(标识符非终结符的内码表 为了将非终结符和终结符一起存入栈参,将非终结符的内码从128开始标记。其对照表见表-1。表-1 非终结符和内码对照表 内码 非终结符 内码 非终结符 内码 非终结符 128 程序 129 语句表 130 语句 131 语句表 132 赋值语句 133 条件语句 134 WHILE语句 135 复合语句 136 变量 137 算术表达式 138 关系表达式 139 项 140 算术表达式 141 关系运算符 ? 程序设计思想 为了压缩存储,采用一个二维数组存放规则的右部,每个规则对应一个子数组,用0表示每条规则的结束。在预测分析表中用规则的序号代表相应的规则,分析表中的出错用-1表示。由于规则的右部存在相同的符号串,故相同的符号串只要保存一个即可,如ε规则。(这种方法对语法识别没有影响,但在语义分析和代码生成时,需区分是何种规则的右部)。规则右部符号串编号及内码表示

文档评论(0)

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

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

1亿VIP精品文档

相关文档