编译原理课程设计____C语言编译器的实现.docVIP

编译原理课程设计____C语言编译器的实现.doc

  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文档。上传文档
查看更多
南华大学 编译原理课程设计名:编译代生成器设计 专业 计算机科学与技术 学生姓名 熊浩斌 班 级 计算机01班 学 号 20109440114 指导老师 陈星 实验地点 8栋 2-209 完成日期:2013.6.2 一、课程设计的目的 编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。为了让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识,提高他们的软件设计能力,特设定该课程的课程设计,通过设计一个简单的PASCAL语言(EL语言)的编译程序,提高学生设计程序的能力,加深对编译理论知识的理解与应用。 二、课程设计的要求 明确课程设计任务,复习编译理论知识,查阅复印相关的编译资料。 按要求完成课程设计内容,课程设计报告要求文字和图表工整、思路清晰、算法正确。 写出完整的算法框架。 编写完整的编译程序。 三、课程设计的内容 课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于编译的知识量较复杂而且综合性较强,因而对一个完整的编译程序不适合平时实验。通过课程设计可以达到综合设计编译程序的目的。本课程的课程设计要求学生编写一个完整的编译程序,包括词法分析器、语法分析器以及实现对简单程序设计语言中的逻辑运算表达式、算术运算表达式、赋值语句、IF语句、While语句以及do…while语句进行编译,并生成中间代码和直接生汇编指令的代码生成器。 四、总体设计方案及详细设计 总体设计方案: 1.总体模块 2. 表2.1 各种单词符号对应的种别码 单词符号 种别码 单词符号 种别码 bgin 1 : 17 If 2 := 18 Then 3 20 wile 4 21 do 5 = 22 end 6 23 lettet(letter|digit)* 10 = 24 dight dight* 11 = 25 + 13 ; 26 — 14 ( 27 * 15 ) 28 / 16 # 0 详细设计: 4.1界面导入设计 (1)一共三个选项: ①choice 1--------cifafenxi ②choice 2--------yufafenxi ③choice 3--------zhongjiandaima (2)界面演示 图一 图二 图三 4.2词法分析程序 (1)流程图设计 (2)具体功能的具体设计 1、cifafenxi( ) 首先设置prog[n]来接收输入的语句,以‘#’来结束; 调用扫描子程序 scaner1( ),每一次得到一个类型码; 用switch判别相应输出; 直到syn1=0为止。 2、扫描子程序scaner1( )-----------------扫描输入的语句 首先设置3个变量: ①token1用来存放构成单词符号的字符串; ②sum1用来存放整型单词; ③syn1用来存放单词符号的类型码。 有关scaner1()中关键点解析: ① while((ch== )||(ch==\n)) ch=prog[p++]; ;忽略空格 ② if(((ch=z)(ch=a))||((ch=Z)(ch=A))) { while(((ch=z)(ch=a))||((ch=Z)(ch=A))||((ch=0)(ch=9))) { token[m++]=ch; ch=prog[p++]; }

文档评论(0)

精品文库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档