- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
布尔表达式翻译为逆波兰式的算法实现
学 号: 课 程 设 计 题 目 布尔表达式的翻译程序设计 学 院 计算机学院 专 业 软件工程 班 级 姓 名 指导教师 何九周 2012 年 1 月 2 日 布尔表达式的递归下降翻译程序设计 1引言 “编译原理”是一门研究设计和构造编译程序原理和方法的课程,是计算机各专业的一门重要的专业基础课。编译原理这门课程蕴含着计算机学科中解决问题的思路、形式化问题和解决问题的方法,对应用软件和系统软件的设计与开发有一定的启发和指导作用。“编译原理”是一门实践性较强的课程,要掌握这门课程中的思想,就必须要把所学到的知识付诸实践。而课程设计是将理论与实践相互联系的一种重要方式。 2概述 2.1设计题目 布尔表达式的递归下降翻译程序设计 2.2设计目的 课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,设计题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。 2.3设计任务内容 布尔表达式的文法: B ( TB′ B′( and T B′|ε T ( FT ′ T′( or FT′|ε F ( not F |true|false |(B)| i rop i 设计布尔表达式文法,给出该文法的属性文法,用递归下降分析法实现对布尔表达式的翻译,给出翻译的逆波兰式结果。 3设计环境与工具 Visual C++ 4设计原则 4.1基本方法 在本程序中,输入一段布尔语句,使用递归下降的方法得到其推到过程,并利用递归下降翻译的方法的到四元式序列,最终根据生成的四元式序列分析得到逆波兰式。 4.2属性文法 B ( TB′ B’.in=T.type B′( and T B′ B’.in=T.type addtype(and,entry,B.in) B′(ε B’.val=ε T ( FT T.in=F.type. T′( or FT′ T’.in=F.type addtype(or,entry,B.in) T′(ε T’val=ε F ( not F F.val= not.F.val F ( true F.val=true F ( false F.val=false F ((B) F.val=B.val F ( i rop i F.val=i.lexval rop i.lexval addtype(i,entry,l 在开始进行本次实验中,本来计划在递归下降分析的过程中就得到逆波兰式,但是经过多次尝试之后总是存在错误,所以采用先得到四元式序列,再根据四元式序列生成逆波兰式这种效率比较低的方法。 6详细的算法描述,框图 6.1主要数据结构的设计 四元式类 在该类中,要包含四元式中的四个元素,运算结果,两个运算数以及一个运算符号 class quad { public: char result[8]; char arg1[8]; char op[8]; char arg2[8]; void print()//输出该四元式 { coutresult=arg1 op arg2endl; } }q[20]; Word结构体 这个结构体的对要用来存储单个单词,包括一个字符串成员。 struct word { char w[10]; void print() { coutw:; } }wr[200]; 逆波兰式结构体 这个结构体的对象用来存储逆波兰式,它的成员是一个word数组 struct nipolan { word nibolan[100]; } n; 翻译器类class interpreter { private: ifstream SourceFile; char buffercode[200];//存放源码的缓冲区 int syn; int current;//buffercode中当前读到的字符下标 char token[8];//记录当前读到的单词 public:
您可能关注的文档
最近下载
- DL∕T 637-2019 电力用固定型阀控式铅酸蓄电池.pdf VIP
- RoboSim虚拟机器人第三课-灯如流水.pdf VIP
- 22、啊哈C语言!逻辑的挑战(修订版)-2020-01-05.pdf VIP
- 《有余数的除法》.pptx VIP
- 山东第四届结构设计竞赛手册(终稿).pdf VIP
- 气排球比赛记分表格模板.doc VIP
- CMA测试试题培训资料.doc VIP
- 超星尔雅学习通《中华诗词之美》章节测试答案满分版.doc VIP
- 幼儿安全教案:会惹祸的阳台.doc VIP
- 第三单元 水溶液中的离子反应与平衡 (⼤单元教学设计)-【大单元教学】高二化学同步备课系列(人教版2019选择性必修1).pdf VIP
文档评论(0)