欢迎来到天天文库
浏览记录
ID:9289187
大小:31.70 KB
页数:17页
时间:2018-04-26
《谈沈从文小说中的悲剧女性形象》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、简单LR语法分析程序自动生成器的实现学号____________姓名____________指导教师____________2013年11月需求分析设计目的:设计、编制和调试一个典型的LR(1)分析器,进一步掌握LR(0)语法分析方法掌握用预分析分析LR(0)文法的具体过程。加深对LR(0)文法和预测分析文法的理解。基本要求以BNF形式给定某种简单程序设计语言组成部分的若干语法规则及测试用例:1、读入语法规则,自动生成对该语言进行语法分析的表驱动语法分析程序—LR(0)语法分析器;2、对于给定的测试用例(程序)
2、,生成的表驱动语法分析程序即LR(0)语法分析器能够对其进行语法分析,按照自底向上的顺序输出推导过程中用到的语法规则输入以BNF形式给定描述某种高级程序设计语言组成部分的若干语法规则及测试用例(可读取文件获取)输出程序运行时应该能够根据不同的输入(即语法规则),自动生成对该语言进行语法分析的表驱动语法分析程序--LR(0)语法分析器,运行该语法分析程序可以对测试用例进行语法分析并按照“自底向上”的顺序输出推导过程中用到的语法规则;基本功能:根据LR(0)分析法编写一个语法分析程序,输入已给定文法,直接输入根据己
3、知文法构造的LR(0)分析表。对于输入的符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子,并要求输出分程程序开发运行所需环境:C++三、详细设计3.1判断是否为终极符号boolJudge(charch){if((ch>='A'&&ch<='Z')
4、
5、ch=='-'
6、
7、ch=='>'
8、
9、ch==''){returntrue;}elsereturnfalse;}读入输出给定文法3.2检查读入的文法并将文法转换是否为终极符是否重复YN是否重复YY删除重复删除重复NN输出终极符及输出非终极符voidbegi
10、n(){FILE*fp;charch;intvnloc[30];intreal_row=0,w=0,i,j,k,l;cout<<"给定文法析出如下:"<11、ch=fgetc(fp);for(i=1;i12、h!=';';j++){//所以最后一个文法必以分号结尾if(Judge(ch)==0){//如果是终结符(除了A-Z,-,>,;)之外for(intk=1,COL=col;k<=COL;k++){//判断是否有重复的终结符,终结符放在table[0]这个二维数组里,每个都是table[0][x][0]位置if(table[0][k][0]==ch)break;//有重复,弹出if(k==COL)table[0][col++][0]=ch;//检查完之前所有已确定的终结符均未发现重复,//则表格第一行第col列13、为终结符ch}}//ifendcout<14、<<"非终结符个数为:"<
11、ch=fgetc(fp);for(i=1;i12、h!=';';j++){//所以最后一个文法必以分号结尾if(Judge(ch)==0){//如果是终结符(除了A-Z,-,>,;)之外for(intk=1,COL=col;k<=COL;k++){//判断是否有重复的终结符,终结符放在table[0]这个二维数组里,每个都是table[0][x][0]位置if(table[0][k][0]==ch)break;//有重复,弹出if(k==COL)table[0][col++][0]=ch;//检查完之前所有已确定的终结符均未发现重复,//则表格第一行第col列13、为终结符ch}}//ifendcout<14、<<"非终结符个数为:"<
12、h!=';';j++){//所以最后一个文法必以分号结尾if(Judge(ch)==0){//如果是终结符(除了A-Z,-,>,;)之外for(intk=1,COL=col;k<=COL;k++){//判断是否有重复的终结符,终结符放在table[0]这个二维数组里,每个都是table[0][x][0]位置if(table[0][k][0]==ch)break;//有重复,弹出if(k==COL)table[0][col++][0]=ch;//检查完之前所有已确定的终结符均未发现重复,//则表格第一行第col列
13、为终结符ch}}//ifendcout<14、<<"非终结符个数为:"<
14、<<"非终结符个数为:"<
此文档下载收益归作者所有