您好,欢迎访问三七文档
实验二词法分析有如下算术运算文法:1)E-E+T2)E-E-T3)E-T4)T-T*F5)T-T/F6)T-F7)F-(E)8)F-I9)I-十进制实数|十进制整数|十六进制实数|十六进制整数|八进制实数|八进制整数10)十进制实数-(0|(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*).(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*11)八进制实数-0(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*.(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*12)十六进制实数-0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*.(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*13)十进制整数-0|(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*14)八进制整数-0(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*15)十六进制整数-0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*单词分类:运算符:+-*/()常数:十进制实数十进制整数十六进制实数十六进制整数八进制实数八进制整数1.实验目的在实验一的基础上实现一个语法分析程序,对实验一的结果进行语法分析。2.实验要求输入算术运算式,输出语法分析结果,例如:输入(0124.3+0x35a.4f)*12输出:运算式语法正确!例如:输入(1-44))/4输出第六个单词‘)’出错#includeiostream#includestringusingnamespacestd;intf(char*t){intj;boolss=0,is8=0,is10=0,is16=0;for(j=0;jstrlen(t);j++){if(t[j]=='.')ss=1;}if(t[0]=='0'&&t[1]=='x'){intc=0;for(j=2;jstrlen(t);j++)if((t[j]-'0'=0&&t[j]-'0'10)||(t[j]-'a'=0&&t[j]-'a'6))c++;if(ss&&c==strlen(t)-3)is16=1;if(!ss&&c==strlen(t)-2)is16=1;if(is16&&ss)return1;//cout十六进制实数tendl;elseif(is16)return1;//cout十六进制整数tendl;elsereturn0;//cout错误数据tendl;//return;}if(t[0]=='0'){intcc=0;for(j=1;jstrlen(t);j++)if(t[j]-'0'=0&&t[j]-'0'8)cc++;if(ss&&cc==strlen(t)-2)
本文标题:实验二-语法分析
链接地址:https://www.777doc.com/doc-7225472 .html