小型编译器(词法语法分析).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文档。上传文档
查看更多
小型编译器(词法语法分析)

目录 一.设计题目 1 二.主要内容 1 三.具体要求 1 四.进度安排 2 五.成绩评定 2 六.设计思路 2 1.词法分析 2 (1)关键字: 2 (2)函数说明: 2 2.语法分析 3 (1)首尾符集 3 (2) 算符优先表如下图所示 3 (3).i*(i+i) 的分析过程 4 七.源程序及运行结果 4 程序截图: 14 八.设计体会 17 一.设计题目 小型程序设计语言编译器的设计与实现 二.主要内容 自定义一种简单的小型高机程序设计语言,采用任意一种编程语言和编程工具设计并实现其编译器,展示编译系统中词法分析和语法分析的全过程。 三.具体要求 1、对单词的构词规则有明确的定义; 2、编写的词法分析程序能够正确识别源程序中的单词符号; 3、识别出的单词以种别码,值的二元式形式保存在符号表中并输出; 4、构造出程序设计语言各语法单位的SLR分析表;(其他分析表亦可) 5、能够对输入的源程序做出正确的语法分析并输出清晰的结果; 6、高级语言的规模不易过大,注重编译器内核的设计,对于界面无要求; 7、课程设计报告中应对所自定义高级语言进行简单描述,对编译器的设计进行简单的需求分析,给出设计说明和程序结构框架,阐明设计思路、用到的原理和方法。 8、不可更改课程设计报告中已有的字体和格式,课程设计报告中新加入内容,汉字采用宋体五号字,英文字符和数字采用Times New Roman五号字。 9、课程设计报告中的运行结果应以程序运行截图形式出现。 10、程序源代码以邮件名称:“班级学号姓名”发送至指定邮箱:sqckcsj08@126.com 四.进度安排 序号 内 容 时间(天) 1 布置题目、查找资料 1 2 概要设计 1 3 详细设计 3 4 调试分析 1 5 测试结果 0.5 6 总结和完成设计报告 1 合 计 7.5 五.成绩评定 1.考核方法:通过结合学生的动手能力,独立分析解决问题的能力和创新精神,学习态度综合考评。成绩分优、良、中、及格和不及格五等。int main() //这个函数用来除去字符串中连续的空格和换行。第一个参数为目标字符串,第二个参数为开始位置。返回值为连续的空格和换行后的第一个有效字符在字符串的位置 int Clear_space(string str,int n) //获得一个单词,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在原字符串的位置。string Get_words(string str,int n,int m) //判断i当前所指的字符是否为一个分界符,是的话返回真,反之假 bool Is_boundary(string str,int n) //判断i当前所指的字符是否为一个运算符,是的话返回真,否则返回假 bool Is_operation(string str,int n) //将文本的全部信息保存在全局字符数组buf[1000]中string Get_text() //将分析结果输出void Output_text(vectorpairint,string v) //判断否为关键字,是则返回真,否则返回假bool Is_key(string str) //对一个字符串数组进行词法分析,返回一个pairint,string型容器 vectorpairint,string word_analyse(vectorstring vec) 2.语法分析 优先函数语法分析自下而上语法分析的基本思想是:从输入串开始,利用文法的产生式步步向上归约,试图归约到文法的初始符号。 如果从语法树的角度看,自下而上分析的过程是以输入串作为末端结点符号串,向着根结点的方向往上构造语法树,使开始符号正好是该语法树的根结点。 算符优先分析器,对常见的算术表达式语句进行分析。实现以下功能: 1) 组织算术表达式的输入; 2) 组织算符优先关系表或者优先函数的输入; 3)若输入的符号串是一个算术表达式语句,则输出一个分析过程(既每一步规约用到的最左素短语),最后归约成“#S#”的形式,则归约成功,打印分析过程,否则输出错误信息,提示该语句不满足语法,不能归约。。 待分析的语法描述为: E-E+T|T T-T*F|F F-〉PF|P P-(E)| i 基本实现方法是“移进-归约“法。即用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分替换成(归约为)该产生式的左部符号。如此继续,直到输入串的末端。最后如栈(顶)底为开始符号,则所分析的输入串为合法的符号串,报告成功;否则,是不符合语法的符号串,报告失败及出错信息。 (1)首尾符集 FIRSTVT(E)={+,*

文档评论(0)

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

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

1亿VIP精品文档

相关文档