- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.1 实验一 编译程序的分析与验证 1. 实验目的 了解编译程序中LR分析表的作用以及语义加工程序的功能。 2. 实验要求 通过编译程序PAS和COMPILER的运行,检验编译程序输出结果的正确性。 3. 实验内容 (1) 验证下述程序输出结果的正确性: (2) 自行设计一程序进行正确性验证, 给出二元式序列的注释及状态栈STACK加工分析对应的符号栈内容。 10.2 实验二 算术表达式的扩充 1. 实验目的 掌握LR分析表的设计方法和语义加工程序的扩充。 2. 实验要求 参照算术表达式LR分析表的设计方法,设计扩充后的算术表达式LR分析表,并对原语义加工程序进行修改,加入新添加的内容。 3. 实验内容 算术表达式文法扩充如下: E→E+E∣E-E∣E*E∣E/E∣(E)∣i试根据该文法重新设计LR分析表,并修改语义加工程序,最后验证修改的结果。 10.3 实验三 添加新的程序语句(一) 1. 实验目的 通过添加新的程序语句,全面了解一个语句的编译程序设计过程。 2. 实验要求 对添加的语句设计LR分析表及相应的处理程序,并将其添加到程序语义处理程序中。 3. 实验内容 将计数循环for语句的功能添加到编译程序中。for语句的文法及每个产生式相应的语义子程序如下: 4. 说明 (1) 实现时可对for语句的文法设计出一个LR分析表,然后将该文法的开始符看做程序语句LR分析表中的一个终结符,即像赋值语句一样处理(当然仍要重新设计程序语句的LR分析表)。另一种方法就是直接将for语句的文法纳入到程序语句文法中(即像if和while语句一样处理),并重新设计程序语言的LR分析表。 (2) ?for语句中产生式的语义动作需要参考编译程序中对if和while语句的处理部分做相应修改。 10.4 实验四 添加新的程序语句(二) 1. 实验目的 掌握另一种添加语句功能的方法。 2. 实验要求 通过深入了解语句的内在功能,利用等价变换的方法实现语句的编译过程。 3. 实验内容 已知repeat语句与while语句的功能结构图如图10-1所示。 图10-1 条件循环语句结构图 通过等价变换用while语句实现repeat语句的格式如下: S; while not B do S;试在编译程序中用等效的while语句实现repeat语句的功能。 4. 说明 可采用预处理方法先将源程序中的repeat语句用等效的while语句替换,但这种替换在嵌套语句中处理起来比较麻烦。 10.5 编译原理课程设计 编译原理课程设计的目的是让学生在编译原理实验的基础上,实际动手完成高级程序语言的词法、语法、语义及中间代码生成程序的设计与实现,从而掌握高级程序语言编译的基本能力,初步具备程序设计语言的词法分析、语法分析、语义分析及中间代码生成等各环节的设计能力,能够设计并完成一个高级程序设计语言语句的编译(由高级语言到中间语言)。 通过编译原理课程设计,应使学生达到下述能力: (1) 学会程序设计语言的词法分析程序的设计与实现; (2) 学会程序设计语言的语法分析程序的设计与实现; (3) 学会程序设计语言的语义分析程序的设计与实现; (4) 学会将程序设计语言的语句翻译为中间语言的完整实现过程。 * 第十章 上机实验内容 第十章 上机实验内容 10.1 实验一 编译程序的分析与验证 10.2 实验二 算术表达式的扩充 10.3 实验三 添加新的程序语句(一) 10.4 实验四 添加新的程序语句(二) 10.5 编译原理课程设计 * 第十章 上机实验内容
文档评论(0)