南航金城学院编译原理课程设计杨阳教的.doc

上传人:博****1 文档编号:564997605 上传时间:2023-05-19 格式:DOC 页数:16 大小:38.50KB
返回 下载 相关 举报
南航金城学院编译原理课程设计杨阳教的.doc_第1页
第1页 / 共16页
南航金城学院编译原理课程设计杨阳教的.doc_第2页
第2页 / 共16页
南航金城学院编译原理课程设计杨阳教的.doc_第3页
第3页 / 共16页
南航金城学院编译原理课程设计杨阳教的.doc_第4页
第4页 / 共16页
南航金城学院编译原理课程设计杨阳教的.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《南航金城学院编译原理课程设计杨阳教的.doc》由会员分享,可在线阅读,更多相关《南航金城学院编译原理课程设计杨阳教的.doc(16页珍藏版)》请在金锄头文库上搜索。

1、产生式主程序: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-

2、 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. 能对输入的一段文本程序输出其词法成分的各种别编码和属性值(对关键字,输出其种别编码,属性值为空;对常量,输出其种别编码和常

3、量的值;对变量,输出其种别编码和变量名)。(2)语法分析要求用递归下降分析法、LL(1)分析法或SLR(1)分析法,对词法分析的结果进行语法分析。(实现对标识符表的插入和查找,见(3)若语法正确,则输出一棵语法树。若语法错误,则报错。(3)设计标识符表,并实现一定的语义分析(可选)标识符表应至少包括名字栏和数据类型栏。在语法分析中:对在声明语句中出现的关于标识符的声明,如果该名字在符号表中不存在,则将其加入到符号表中,并将数据类型填入。若名字已经存在被声明过,则报错。对一般语句中出现的标识符,可以查找标识符表,若标识符不在表中,则报错。验收要求1、 有标识符表的构造说明文档(可选)2、 有种别

4、编码表的说明文档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 judg

5、e 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

6、=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 =

7、 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

8、 = 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 =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 法律文献 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号