确定所读入的文法是否符合文法的规则。程序中所用到的公有数据成员有文法的行数终结符的个数非终结符的个数,集用与临时存放集中元素的数组终结符集非终结符集求集设有文法,并有规则,则该规则的可选集为具体实现代码如下,为空当不为空当εε为空字符串求集首符号集既求解文法每条规则右边的第个符号并且必须是终结符,因为文法使用数组存放,所以既求文法每行规则的第个字符既可如果规则左边第个字符为非终结符,则通过循环对该非终结符再求首符号集。,判断第条规则右边的首符号是否是终结符判断,在中是否已经存在求集求向前看集主要分两种情况,种是可以直接循环推导出终结符第二种是推出的还是非终结符的,如果推出的还是非终结符的就循环对该非终结符再求向前看集第三种情况是不能对该非终结符求向前看集,但是可以通过对该非终结符推导出的第二个非终结符求向前看集的方法求出终结符。判断是不是对文法起始符求集判断,在中是否已经存在判断,是不是终结符,判断,在中是否已经存在查找,对应的非终结符在文法的第几行,。添加的水平滚动条的宽度也应该能动态的改变,以最宽的行数据为水平滚动条宽度的依据。解决方案解决结果运行后的结果如图所示图的水平滚动条结果测试在系统开发完成后,对系统各个功能做了详细的测试,对于正确的文法,系统能正常的演示整个文法分析的每个过程对于预设置的处理,系统也能给出正确的判断,指出文法的类型。测试正确文法测试文法句子有种情况句子不符合文法,提示如图所示图句子不符合文法句子中有终结符以外的字符,提示如图所示图句子不符合文法结论编译原理是计算机专业中最难的门课程,在理论上它要求学生掌握有关形势语言和自动机的抽象概念,在技术上要求学生能够熟练地利用各种数据结构进行编程。尤其对于向前看集的算法实现,我觉得是最难的部分,因为涉及到的情况太多,循环和选择句型的嵌套使用如果不仔细分析就容易出现。在数据的处理上我采用各模块全数组操作,并且将最终结果通过字符串方式保存,通过字符串来向其他模块传送数据,这种新的尝试也让我的程序带有个人的风格,让我对编程的多样化有了更深的了解和认识。通过个编译原理语法分析器的设计与实现的使用,希望在提高教学质量的同时,也能对同学们在编译原理的学习中起到帮助,让大家更好的了解算法的整个过程。参考文献钱焕延编译技术第版南京东南大学出版社出版,。康慕宁编译原理西安西北工业大学出版社出版,。贺世娟,陈冀川程序设计北京中国水利水电出版社出版,。杨克玉程序设计实训教程北京机械工业出版社出版,。陈明教程北京人民邮电出版社,。徐谡应用与开发案例教程北京清华大学出版社,。周峰案例开发集锦北京电子工业出版社,。分析表构造模块在已经得到文法集的前提下,以次为依据,对文法的三种类型的规则型型ε型分别构造分析表,并用个三维数组保存。形如,其中,表示分析表的第行,表示第列,表示第行第列所对应的格子中的第个数据。构造文法分析表在求解集完成后,结果按照非终结符放入分析表轴,没有出现在对应规则右部首部的终结符放入分析表轴,终结符放入分析表轴等规则放置。如图。文法分析表终结符非终结符文法可选集未出现在对应规则右部首部的终结符放入分析表轴放入分析表轴放入分析表轴图分析表构造流程规则对于,,则令,表示用的逆串替换后,继续读入下个符号。当为时,即,有,规则对于,,且有则,表示用的逆串替换后,重读当前符号ε规则对于,且有,则,句子分析模块本部分主要通过中的对话框读入待分析句子,并与分析表进行对照,逐步分析所输入的句子是否符合文法。分析过程均用维数组进行保存。相关程序片段如下程序中所用到的公有数据成员有存放句子分析过程中的分析栈存放句子分析过程中的输入符号栈读取句子读取句子分析句子现在我们把句型的右端部分逆向放入分析堆栈中,使成为栈顶,利用分析栈,当栈顶符号与输入串当前符号相匹配时,则从栈顶删除该符号。然后再把相应的规则逆向压入栈顶,替换原栈顶的非终结符。ε特殊问题及解决方法在程序的开发过程中,遇到的问题及解决办法如下集的求解问题描述解决方案通过参照编译原理中集和集的具体求解步骤,通过多重循环的嵌套,完成了集的求解过程,具体代码请参照节。解决结果在成功获得集后,对其进行了输出,结果如图所示图显示集为添加水平滚动条问题描述在中,系统提供的只有垂直滚动条,而没有水平滚动条。当控件中行的数据超过的宽度时,数据会显示不完整集和集的求解并判断集是否符合算法的要求根据文法和集构造文法分析表根据文法分析表判断输入的句子是否符合文法名词解释语法分析逐分析词法分析所得的属性字,检查其中的语法,如果没有发现语法,则给出正确的语法结构。句子的分析句子的分析实际就是分析源程序中的语句是否符合给定的文法。文法对语言结构的定义和描述,即在形式上用于描述和规定语言结构。由若干条规则组成。规则为个二元组,通常格式为或其中为规则的左部,是个符号是规则的右部,是贯有穷字符串。规则又称为产生式。表示法即巴科斯范式表示法,它引进了符号,符号表示或。运用符号把相同左部的规则缩写在起,这样显得文法更为紧凑。文法规则的非空有穷集合,其中为文法的识别符号或开始符号,它至少要在条规则的左部出现。字汇表在文法中,由全部规则的左部和右部中的所有符号组成的符号集。非终结符文法中出现在规则左部的符号,它们组成的集合称为非终结符集。终结符文法中凡不属于非终结符集的符号,它们组成的集合称为终结符集。递归同操作或组操作的连续重复,其实质上是处理过程的性质,在这种过程的每步都要用到它自身的上步或上几步的结果。递归定义在定义种事物时又用到其本身。直接左递归规则型如的规则称为直接左递归规则。集首符号集。集向前看集。集可选集。文法对于文法,其每个非终结符的不同规则具有不相交的集,则称该文法为文法。算法简介自顶向下分析对于文法,给顶个待分析的句子字符串,自顶向下分析的基本思想是从识别符号开始,根据文法试着建立个推导序列,若得到所给的句子,则句子得到识别,表明其结构符合文法,如果经过各种推导都不能得到所分析的句子,则该符号串不符合文法。或者说,从根结点出发,自上而下地建立颗语法树,其未端结点按从左到右的顺序连接起来,构成给定的符号串,则符号串得到识别。例设有文法和符号串根据文法有因此我们说符合此文法图过程分析自顶向下分析的难点及解决办法自顶向下分析的难点对于形如的规则,可能需要对所有的规则都要试探。难点的解决办法该解决办法是把文法中每个非终结符号的右部称为的候选式,对候选式的选择,则根据当前输入符号来决定。方法首先对文法的每个规则求可选集。当时,则对于当前输入的符号,若有,则可以选用规则进行推导。若对于非终止符号有条规则即有个候选式的处理方法首符号集不相同的解决办法对于文法,有,其右部的个候选式的首符号集均不相同即∩,对于待分析的符号串,如果最左的非终结符号为,若其句子中对应的下个符号当前输入符号为,且有,则选择规则来作为推导的候选式。例设有文法,和句子首符号相同的解决办法对于文法,有,若有∩,采用试探表示用的逆串替换后,重读当前符号对于,且有,则,对于每个,不出现于规则右部的首部,则令,对于,令,表示分析结束,输入串得到识别。非上述种情况,则置出错,分析表中用空白表示。系统流程图程序流程图项目的程序流程图如图所示图程序流程图系统模块流程图系统的模块流程图如图所示程序开始调用打开对话框输入文法优化输入的文法并判断文法合法性获取文法的终结符和非终结符对文法求集并判断集合法性构造文法分析表输入并分析句子结束图系统模块流程图系统实施个编译原理语法分析器的设计与实现主要分为四个模块文件读取模块文件读取模块主要完成将记事本中的待分析文法读入到内存中的功能。其中包括了对可能出现的文法表示法的判断以及对文法中是否存在直接左递归规则的判断。算法分析模块算法演示系统文法输入文法分析句子输入与分析文法分析表构造获取终结符和非终结符求文法的集判断集的合法性求集求集算法分析模块是个编译原理语法分析器的设计与实现中的关键模块。本模块包含了算法中的大部分重要数据和信息,其中包括获取输入文法的终结符集和非终结符集,对文法中每条规则求集集的求解又包括求集或者集,以及对集合法性的判断,即同非终结符所对应的不同规则的集中不能有相同的终结符。分析表构造模块分析表构造模块的主要功能是将算法分析模块所求解出的符合算法规则的文法的集转化成文法分析表,以便下模块的调用。句子分析模块句子分析模块是整个个编译原理语法分析器的设计与实现的主体演示模块,包括句子读取句子合法性判断句子分析等部分。其中句子合法性的判断又分为句子中是否有文法终结符以外的符号和句子是否符合文法规则的判断。下面将对以上四个模块的具体实现技术数据结构及关键程序片段进行详细的说明。文件读取模块本模块通过调用中控件的方法启动打开文件对话框,获取需要读取的文件的路径,再调用命令打开文件,将文件中保存的文法读入内存,用二维数组进行保存。文件读取使用的控件介绍控件提供诸如打开和保存文件设置打印选项选择颜色和字体等操作的组标准对话框。调用打开文件对话框的具体代码如下文件路径用方法显示对话框用属性获取选定文件的名称文法左递归的判断文法中使用递归规则以后,可以用有限的规则刻划无限语言,但不利的是对与具有左递归性的文法,不能采用自顶
温馨提示:手指轻点页面,可唤醒全屏阅读模式,左右滑动可以翻页。
第 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、该文档为会员上传,下载所得收益全部归上传者所有,若您对文档版权有异议,可联系客服认领,既往收入全部归您。