资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
产生式主程序:Program- main () DefList; StmtList定义变量:DefList- Def; DefListDefList- DefDef- Type IDListType- intType- floatIDList- id, IDListIDList- id定义语句:StmtList- Stmt; StmtListStmtList- Stmt;赋值语句:Stmt- id:=E条件分支语句Stmt- if (BE) StmtList else StmtList算数表达式:(1) 自上而下分析法 (2) 自下而上分析法E- TEE- TE- +TEE- E+TE- T- FT- FTT- T*FT- *FTF- (E)T- F- idF- (E)F- numF- idF- floatnumF- intnumF- floatnum布尔表达式:BE- id id idBE- id = idBE- id id intnumBE- id = intnum课程设计要实现的内容:(1)设计词法分析器设计各单词的状态转换图,并为不同的单词设计种别码。功能包括:a. 能够拼出语言中的各个关键字、运算符和界符;b. 能够识别出标识符和不同类型的常量;c. 能对输入的一段文本程序输出其词法成分的各种别编码和属性值(对关键字,输出其种别编码,属性值为空;对常量,输出其种别编码和常量的值;对变量,输出其种别编码和变量名)。(2)语法分析要求用递归下降分析法、LL(1)分析法或SLR(1)分析法,对词法分析的结果进行语法分析。(实现对标识符表的插入和查找,见(3)若语法正确,则输出一棵语法树。若语法错误,则报错。(3)设计标识符表,并实现一定的语义分析(可选)标识符表应至少包括名字栏和数据类型栏。在语法分析中:对在声明语句中出现的关于标识符的声明,如果该名字在符号表中不存在,则将其加入到符号表中,并将数据类型填入。若名字已经存在被声明过,则报错。对一般语句中出现的标识符,可以查找标识符表,若标识符不在表中,则报错。验收要求1、 有标识符表的构造说明文档(可选)2、 有种别编码表的说明文档3、 有词法分析的DFA图4、 若使用了递归下降分析法需要有根据产生式构造的first/follow集、若使用了LL(1)分析法需要有预测分析表,若使用了SLR(1)分析法需要有SLR(1)分析表5、 有可执行的源程序,能输出词法分析的结果、语法分析的语法树(和标识符表)源程序:#include #includeusing namespace std;#include#include #includeint i,j,k,flag,number,status,m=0,n=0,d,dian;/d为在计算小数时除以0.1的次数/*status which is use to judge the string is keywords or not!*/char ch;float number1;char words10 = ;char program500;int flags500; /存储输入句子string cnt500;/标识符int temp=0; /数组下标int is_right=1; /判断输出信息char num500;/-词法分析-int Scan(char program) char *keywords9 = int,char,float,if,else,do,while,printf,main; /关键字number=0;status=0;j=0;ch=programi+; /遍历while(ch= |ch=n) /跳过空字符(无效输入) ch=programi+; if (ch = a) & (ch = a) & (ch = z ) wordsj+=ch; ch=programi+; i-; wordsj+ = 0;for (k = 0; k = 0) & (ch = 0 ) & (ch =0)&(ch: if (ch = ) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 403; else i-; flag = 404; break; case: if (ch = )wordsj+ = ch;wordsj = 0;ch = programi+;if (ch = =)wordsj+ = ch;wordsj = 0;flag = 405;elsei-;flag = 406;break;case!:if (ch = !)wordsj+ = ch;wordsj = 0;ch = programi+;if (ch = =)wordsj+ = ch;wordsj = 0;flag = 407;elsei-;flag = 408;break;case+:if (ch = +)wordsj+ = ch;wordsj = 0;ch = programi+;if (ch = =)wordsj+ = ch;wordsj = 0;flag = 409;else if (ch = +)wordsj+ = ch;wordsj = 0;flag = 410;elsei-;flag = 411;break;case-:if (ch = -)wordsj+ = ch;wordsj = 0;ch = programi+;if (ch = =)wordsj+ = ch;wordsj = 0;flag = 412;else if( ch = -)wordsj+ = ch;wordsj = 0;flag = 413;elsei-;flag = 414;break;case*:if (ch = *)wordsj+ = ch;wordsj = 0;ch = programi+;if (ch = =)wordsj+ = ch;wordsj =
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号