课程设计工作流程及要求.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文档。上传文档
查看更多
课程设计工作流程及要求

《编译原理》 课程设计报告 指导教师: 班 级: 学生姓名: 学 号: 完成日期: 一、课程设计题目 PL/0语言编译器的设计与实现 二、课程设计目的 设计和实现某一规模适中的语言的编译器,该编译器不仅涉及编译程序的各个阶段,而且也强调了编译的总体设计、各个阶段的接口安排等等。通过上机实践,来设计这个相对完整的编译器,一方面可以使学生增加对编译程序的整体认识和了解——巩固《程序设计语言编译原理》课程所学知识,另一方面,通过上机练习,学生也可以学到很多程序调试技巧和设计大型程序一般的原则,如模块接口的协调,数据结构的合理选择等等。 三、课程设计方案 建议把设计分成三部分,首先阅读本教程第一部分,在这部分就PL/0语言的语法及其编译程序的各个阶段作了简单介绍,以便对PL/0编译程序有个初步的印象。其次要认真阅读理解第三部分所给出的PL/0编译器源程序,使上一阶段的初步印象得以加深、具体化。最后按照第二部分的实验要求扩充PL/0语言的功能并加以实现。 四、课程设计内容 //要求写清自己对下面内容的理解,修改与实现。 对现存的PL/0编译程序可做如下修改或扩充。 注释(20分) 注释由(*和*)包含,不允许嵌套。 布尔类型的数据(30分) 布尔类型的BNF为: var_option → ε| var var_decl_list var_decl_list → var_decl | var_decl_list var_decl var_decl → ident_list : data_type data_type → integer | boolean 这种修改包括: 区别整型与布尔型变量、常量和表达式。 增加按严格计算的布尔类型运算符and、ornot。这些算符以及己有的运算符的优先级与Pascal语言相同。 能够使用布尔常量true和false。 把PL/0语言中的“条件”概念一般化为Pascal语言那样。 布尔表达式可以比较大小:false true 数组(10分) 增加由任何数据类型构造的一维数组。数组的下标限于纯量类型。 注意:数组可以由其它的数组来构造,因而必须考虑多维数组的情况。数组的上下界可为任意的纯量常数。 数组的定义如下: data_type → integer | boolean | array [const..const] of data_type const → ident | number 语言中允许有数组说明,对数组元素赋值,在表达式中引用数组元素。为了便于解释执行,可能要增加新的PL/0机器操作指令。 else子句和repeat语句(10分) for语句,语法参照Pascal或C语言(5分) exit语句(退出当前执行过程)和break语句(跳出包含它的最内层循环),(5分) 更有力的语法错误恢复机制(20分) 另外,为了实现以上功能,你可任意增加PL/0处理机的指令。但要注意指令的简单与合理。 五、 程序流程图 程序 程序体 语句序列 语句 条件 表达式 项 因子 布尔表达式:bexpression(symset fsys); 布尔因子:bfactor(symet fsys); 布尔条件:bcondition(symset fsys); 布尔项:bterm(symset fsys); For语句:(在statement(symset fsys);里面) While语句(在statement(symset fsys);里面) exit语句: (在statement(symset fsys);里面) Break 语句:(在statement(symset fsys);里面) 数组:(定义时候) 六、函数增加的功能及调用过程解释 修改后的PL/0编译/解释器增添了课程设计的各项要求,增加了bool类型,能够识别用(*和*)所包括的不能嵌套的注释部分,增加了处理数组的功能,而且能够使用break ,exit 语句,将词法分析阶段的结果输入到wdsyml.txt中,程序编译后,给出目标代码、显示程序运行的最终结果。如果发现错误,报错,并且标示错误的可能原因,给出改正错误的建议。 词法分析子程序分析:   词法分析子程序名为getsym,功能是从源程序中读出一个单词符号(ch),把它的信息放入全局变量 sym、id和num中,语法分

文档评论(0)

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

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

1亿VIP精品文档

相关文档