顺序连接起来,构成给定的符号串,则符号串得到识别。例设有文法和符号串„根据文法有因此我们说符合此文法图过程分析自顶向下分析的难点及解决办法自顶向下分析的难点对于形如„的规则,可能需要对所有的规则都要试探。难点的解决办法该解决办法是把文法中每个非终结符号的右部称为的候选式,对候选式的选择,则根据当前输入符号来决定。方法首先对文法的每个规则求可选集。当时,则对于当前输入的符号,若有,则可以选用规则进行推导。若对于非终止符号有条规则即有个候选式的处理方法首符号集不相同的解决办法对于文法,有„,其右部的个候选式的首符号集均不相同即∩,对于待分析的符号串,如果最左的非终结符号为,若其句子中对应的下个符号当前输入符号为,且有,则选择规则来作为推导的候选式。例设有文法,和句子首符号相同的解决办法对于文法,有„,若有∩,采用试探法即从首字符中有输入符号的多个候选式中任选个来试探,如果不成功,就换另个接着试。试探法有可能形成回溯现象。对于回溯现象,可以通过左提因子方法对文法进行修改来消除。递归子程序递归子程序方法这里讲的递归子程序方法是种自顶向下的编译方法,其思想是通过对源程序的每个语法成分编制个处理子程序,通过子程序调用来对源程序进行语法和语义分析。递归子程序及其调用常用的子程序的种类有种。贺世娟,陈冀川程序设计北京中国水利水电出版社出版,。杨克玉程序设计实训教程北京机械工业出版社出版,。陈明教程北京人民邮电出版社,。徐谡应用与开发案例教程北京清华大学出版社,。周峰案例开发集锦北京电子工业出版社,。简单的编译原理语法分析器的实现摘要编译程序般由词法分析程序语法分析程序语义分析程序中间代码生成程序目标代码生成程序代码优化程序表格管理程序和出错处理程序等成分构成。在编译原理的教学过程中,算法的讲解都需要对算法进行详细的分析,包括算法条件的判断,文法分析表的构造过程,文法分析表的具体生成,针对文法的句子的分析过程等,这些过程往往需要占用大量时间来分析制表等。本软件的主要任务就是利用程序来完成算法的上述相关过程,以达到高效,直观的效果。本文旨在介绍语法分析方法中的种自上而下的分析方法分析法。所谓分析法是指语法分析是按自左至右的顺序向前查看个输入字符串,并分析过程中产生句子的最左推导。关键词编译语法分析算法演示学过程中,语法和语义分析阶段关于算法的讲解都需要对算法进行详细的分析,包括算法条件的判断,文法分析表的构造过程,文法分析表的具体生成,针对文法的句子的分析过程等。这些过程往往需要占用大量时间来分析制表等。教学主要是对这些过程的讲解和分析,没有必要花这么多的时间来做这些工作。本软件的主要任务就是利用程序来完成算法的上述相关过程,节约教学时间。目标个编译原理语法分析器的设计与实现主要通过文本方式获取相关文法,并实现以下相关操作判断文法是否符合的要求获取文法的终结符和非终结符求文法的集其中包括集和集的求解并判断集是否符合算法的要求根据文法和集构造文法分析表根据文法分析表判断输入的句子是否符合文法名词解释语法分析逐分析词法分析所得的属性字,检查其中的语法,如果没有发现语法,则给出正确的语法结构。句子的分析句子的分析实际就是分析源程序中的语句是否符合给定的文法。文法对语言结构的定义和描述,即在形式上用于描述和规定语言结构。由若干条规则组成。规则为个二元组,通常格式为或其中为规则的左部,是个符号是规则的右部,是贯有穷字符串。规则又称为产生式。表示法即巴科斯范式表示法,它引进了符号,符号表示或。运用符号把相同左部的规则缩写在起,这样显得文法更为紧凑。文法规则的非空有穷集合,其中为文法的识别符号或开始符号,它至少要在条规则的左部出现。字汇表在文法中,由全部规则的左部和右部中的所有符号组成的符号集。非终结符文法中出现在规则左部的符号,它们组成的集合称为非终结符集。终结符文法中凡不属于非终结符集的符号,它们组成的集合称为终结符集。递归同操作或组操作的连续重复,其实质上是处理过程的性质,在这种过程的每步都要用到它自身的上步或上几步的结果。递归定义在定义种事物时又用到其本身。直接左递归规则型如的规则称为直接左递归规则。集首符号集。集向前看集。集可选集。文法对于文法,其每个非终结符的不同规则具有不相交的集,则称该文法为文法。算法简介自顶向下分析对于文法,给顶个待分析的句子字符串,自顶向下分析的基本思想是从识别符号开始,根据文法试着目录论文总页数页引言项目背景目标名词解释算法简介自顶向下分析递归子程序分析方法分析方法分析表系统流程图程序流程图系统模块流程图系统实施文件读取模块文件读取使用的控件介绍文法左递归的判断算法分析模块求集求集求集分析表构造模块构造文法分析表规则规则ε规则句子分析模块读取句子分析句子特殊问题及解决方法集的求解问题描述解决方案解决结果为添加水平滚动条问题描述解决方案解决结果结果测试测试正确文法测试文法结论参考文献引言项目背景编译原理是计算机专业中最难的门课程,在理论上它要求学生掌握有关形势语言和自动机的抽象概念,在技术上要求学生能够熟练地利用各种数据结构进行编程。编译程序是现代计算机系统的基本组成部分之。编译程序般由词法分析程序语法分析程序语义分析程序中间代码生成程序目标代码生成程序代码优化程序表格管理程序和出错处理程序等成分构成。在编译原理的求集首符号集既求解文法每条规则右边的第个符号并且必须是终结符,因为文法使用数组存放,所以既求文法每行规则的第个字符既可如果规则左边第个字符为非终结符,则通过循环对该非终结符再求首符号集。,判断第条规则右边的首符号是否是终结符判断,在中是否已经存在求集求向前看集主要分两种情况,种是可以直接循环推导出终结符第二种是推出的还是非终结符的,如果推出的还是非终结符的就循环对该非终结符再求向前看集第三种情况是不能对该非终结符求向前看集,但是可以通过对该非终结符推导出的第二个非终结符求向前看集的方法求出终结符。判断是不是对文法起始符求集判断,在中是否已经存在判断,是不是终结符,判断,在中是否已经存在查找,对应的非终结符在文法的第几行,分析表构造模块在已经得到文法集的前提下,以次为依据,对文法的三种类型的规则型型ε型分别构造分析表,并用个三维数组ε特殊问题及解决方法在程序的开发过程中,遇到的问题及解决办法如下集的求解问题描述解决方案通过参照编译原理中集和集的具体求解步骤,通过多重循环的嵌套,完成了集的求解过程,具体代码请参照节。解决结果在成功获得集后,对其进行了输出,结果如图所示图显示集为添加水平滚动条问题描述在中,系统提供的只有垂直滚动条,而没有水平滚动条。当控件中行的数据超过的宽度时,数据会显示不完整。添加的水平滚动条的宽度也应该能动态的改变,以最宽的行数据为水平滚动条宽度的依据。解决方案解决结果运行后的结果如图所示图的水平滚动条结果测试在系统开发完成后,对系统各个功能做了详细的测试,对于正确的文法,系统能正常的演示整个文法分析的每个过程对于预设置的处理,系统也能给出正确的判断,指出文法的类型。测试正确文法测试文法句子有种情况句子不符合文法,提示如图所示图句子不符合文法句子中有终结符以外的字符,提示如图所示图句子不符合文法结论编译原理是计算机专业中最难的门课程,在理论上它要求学生掌握有关形势语言和自动机的抽象概念,在技术上要求学生能够熟练地利用各种数据结构进行编程。尤其对于向前看集的算法实现,我觉得是最难的部分,因为涉及到的情况太多,循环和选择句型的嵌套使用如果不仔细分析就容易出现。在数据的处理上我采用各模块全数组操作,并且将最终结果通过字符串方式保存,通过字符串来向其他模块传送数据,这种新的尝试也让我的程序带有个人的风格,让我对编程的多样化有了更深的了解和认识。通过
温馨提示:手指轻点页面,可唤醒全屏阅读模式,左右滑动可以翻页。
第 1 页 / 共 32 页
第 2 页 / 共 32 页
第 3 页 / 共 32 页
第 4 页 / 共 32 页
第 5 页 / 共 32 页
第 6 页 / 共 32 页
第 7 页 / 共 32 页
第 8 页 / 共 32 页
第 9 页 / 共 32 页
第 10 页 / 共 32 页
第 11 页 / 共 32 页
第 12 页 / 共 32 页
第 13 页 / 共 32 页
第 14 页 / 共 32 页
第 15 页 / 共 32 页
预览结束,还剩
17 页未读
阅读全文需用电脑访问
1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。
1、该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读。
2、有的文档阅读时显示本站(www.woc88.com)水印的,下载后是没有本站水印的(仅在线阅读显示),请放心下载。
3、除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑、修改、打印。
4、有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载。
5、该文档为会员上传,下载所得收益全部归上传者所有,若您对文档版权有异议,可联系客服认领,既往收入全部归您。