编译技术课程设计指导书.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文档。上传文档
查看更多
编译技术课程设计指导书

编译技术 课 程 设 计 指 导 书 题目:L语言编译器的设计与实现 院系: 计 算 机 学 院 2010 第一节 概 述 课程设计的目的和任务 编译技术是一门实践性很强的课程,只有通过实践,才能真正掌握。 实际的编译程序是十分复杂的,有时由多达十几万条指令组成。为此,编译原理的实践教学,采用简化高级程序设计语言文法的办法,重点针对词法分析、语法分析、语义分析和中间代码生成以及目标代码生成等几个关键环节进行编程和调试训练。 每个环节可作为一个独立的实践课题,分别编程调试,然后再连接在一起总调,从而实现一个完整的编译器。 实践方法 任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程,故本实践将定义一个简化的类PASCAL语言——L语言作为源语言,设计调试出它的编译程序。 因任务具有一定的难度和工作量,且时间有限,因此,分组进行实验,每组2人,分别承担词法分析/目标代码生成以及语法/语义分析两部分中的一个,具体分工由组内协商进行,并且整个代码的链接工作由承担词法分析任务的同学完成。 可使用C、VC++等语言编程实现。 实践报告的规范和要求 每位学生完成承担任务后写出格式规范的实验报告,包括封面、任务说明、程序设计时考虑的算法和方法、流程图、主要代码说明、运行结果分析等。 L语言定义 程序定义: 〈程序〉→ program〈标识符〉〈程序体〉. 〈程序体〉→〈变量说明〉〈复合句〉 变量定义: 〈变量说明〉→ var〈变量定义〉|ε 〈变量定义〉→〈标识符表〉:〈类型〉;|〈标识符表〉:〈类型〉;〈变量定义〉 〈标识符表〉→〈标识符〉,〈标识符表〉|〈标识符〉 语句定义: 〈复合句〉→ begin〈语句表〉end 〈语句表〉→〈执行句〉;〈语句表〉|〈执行句〉 〈执行句〉→〈简单句〉|〈结构句〉 〈简单句〉→〈赋值句〉 〈赋值句〉→〈变量〉:=〈表达式〉 〈变量〉→〈标识符〉 〈结构句〉→〈复合句〉|〈if句〉|〈WHILE句〉 〈if句〉→ if〈布尔表达式〉then〈执行句〉| if〈布尔表达式〉then〈执行句〉else〈执行句〉 〈while句〉→ while〈布尔表达式〉do〈执行句〉 表达式定义: 〈表达式〉→〈算术表达式〉|〈布尔表达式〉 〈算术表达式〉→〈算术表达式〉+〈项〉|〈算术表达式〉-〈项〉|〈项〉 〈项〉→〈项〉*〈因子〉|〈项〉/〈因子〉|〈因子〉 〈因子〉→〈算术量〉|(〈算术表达式〉) 〈算术量〉→〈标识符〉|〈整数〉|〈实数〉 〈布尔表达式〉→〈布尔表达式〉or〈布尔项〉|〈布尔项〉 〈布尔项〉→〈布尔项〉and〈布尔因子〉|〈布尔因子〉 〈布尔因子〉→ not〈布尔因子〉|〈布尔量〉 〈布尔量〉→〈布尔常数〉|〈标识符〉|(〈布尔表达式〉)|〈关系表达式〉 〈关系表达式〉→〈标识符〉〈关系运算符〉〈标识符〉 〈关系运算符〉→〈|〈= | =| 〉=| 〉|〈〉 类型定义: 〈类型名〉→ integer|bool | real 单词定义: 〈标识符〉→〈字母〉|〈标识符〉〈字母〉|〈标识符〉〈数字〉 〈整数〉→〈数字〉|〈整数〉〈数字〉 〈实数〉→〈整数〉.|〈实数〉〈数字〉 〈布尔常数〉→ true|false 字符定义: 〈字母〉→ 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│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 源程序书写格式规定 单词必须在一行内写完,即:一个单词不能分两行写; 源程序语句的书写采用自由格式,即:一行可写多个语句,一个语句也可分多行写; 源程序不含注释; 语句以“;”结束,“end”前的一个语句的“;”不可以省略。 第二节 词法分析 目 的 通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力;掌握词法分析器作为子程序以及一遍的处理过程。 源程序词法分析程序 源程序 词法分析程序 符号表文件 token文件 任 务 能对任何L语言源程序进行分析; 采用问答方式输入源程序文件名,然后进行词法分析; 分割单词并转换成机内表示形式,形成token文件(单词序列)、符号表文件; 删除空格等无用符号; 错误处理 给出的错误信息包括:总的出错个数,每个错误所在行号,错误编号及说明; 只处理以下两种错误,其它可不必考虑 非法字符:删除,即,不写入token文件 错误单词 包括三种形式: 数字开头的数字、字母串,如:3a56 实数中出现两个小数点,如:3.14.15 实数的小数部分出现字母,如:5.26B78 处理方

文档评论(0)

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

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

1亿VIP精品文档

相关文档