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

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

ID:8906715

大小:38.50 KB

页数:16页

时间:2018-04-11

南航金城学院编译原理课程设计杨阳教的_第1页
南航金城学院编译原理课程设计杨阳教的_第2页
南航金城学院编译原理课程设计杨阳教的_第3页
南航金城学院编译原理课程设计杨阳教的_第4页
南航金城学院编译原理课程设计杨阳教的_第5页
资源描述:

《南航金城学院编译原理课程设计杨阳教的》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、产生式主程序:Program->main(){DefList;StmtList}定义变量:DefList->Def;DefListDefList->DefDef->TypeIDListType->intType->floatIDList->id,IDListIDList->id定义语句:StmtList->Stmt;StmtListStmtList->Stmt;赋值语句:Stmt->id:=E条件分支语句Stmt->if(BE){StmtList}else{StmtList}算数表达式:(1)自上而下分析法(2)自下而上分析法E->TE’E->TE’->+TE’E->E+TE

2、’->εT->FT->FT’T->T*FT’->*FT’F->(E)T’->εF->idF->(E)F->numF->idF->floatnumF->intnumF->floatnum布尔表达式:BE->idid>idBE->id=idBE->idid>intnumBE->id=intnum课程设计要实现的内容:(1)设计词法分析器设计各单词的状态转换图,并为不同的单词设计种别码。功能包括:a.能够拼出语言中的各个关键字、运算符和界符;b.能够识别出标识符和不同类型的常量;c.能对输入的一段文本程序输出其词法成分的各种别编码和属性值(对关键

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

4、符不在表中,则报错。验收要求1、有标识符表的构造说明文档(可选)2、有种别编码表的说明文档3、有词法分析的DFA图4、若使用了递归下降分析法需要有根据产生式构造的first/follow集、若使用了LL(1)分析法需要有预测分析表,若使用了SLR(1)分析法需要有SLR(1)分析表5、有可执行的源程序,能输出词法分析的结果、语法分析的语法树(和标识符表)源程序:#include#includeusingnamespacestd;#include#include#includeinti,

5、j,k,flag,number,status,m=0,n=0,d,dian;//d为在计算小数时除以0.1的次数/*statuswhichisusetojudgethestringiskeywordsornot!*/charch;floatnumber1;charwords[10]={""};charprogram[500];intflags[500];//存储输入句子stringcnt[500];//标识符inttemp=0;//数组下标intis_right=1;//判断输出信息charnum[500];//-----------------------词法分析-----

6、------------------------intScan(charprogram[]){char*keywords[9]={"int","char","float","if","else","do","while","printf","main"};//关键字number=0;status=0;j=0;ch=program[i++];//遍历while(ch==''

7、

8、ch=='')//跳过空字符(无效输入)ch=program[i++];if((ch>='a')&&(ch<='z'))//字母{while((ch>='a')&&(ch<='z')){words[j

9、++]=ch;ch=program[i++];}i--;words[j++]='';for(k=0;k<9;k++)if(strcmp(words,keywords[k])==0)//判断是否为关键字switch(k){case0:{flag=1;status=1;break;}case1:{flag=2;status=1;break;}case2:{flag=3;status=1;break;}case3:{flag=4;status=1;break;}case4:{flag=5;status=1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。