编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析

编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析

ID:14064242

大小:299.50 KB

页数:18页

时间:2018-07-25

编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析_第1页
编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析_第2页
编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析_第3页
编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析_第4页
编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析_第5页
资源描述:

《编译原理课程设计、正则表达式、ll(1)分析、算符优先、lr分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、福建农林大学计算机与信息学院计算机类课程设计报告课程名称:编译原理课程设计题目:语法分析器姓名:陈润铭系:计算机专业:计算机科学与技术年级:11级计升学号:3116013049指导教师:李小林职称:副教授2012~2013学年第一学期福建农林大学计算机与信息学院计算机类课程设计结果评定评语:成绩:指导教师签字:任务下达日期:评定日期:目录1正则表达式11.1正则表达式11.2确定化(化简)后的状态转换图11.3分析程序代码11.4程序运行截图11.5小结12LL(1)分析22.1LL(1)文法22.2LL(1)预测分析表22.3分析程序代码22.4程序运行

2、截图22.5小结23算符优先分析33.1算符优先文法33.2算符优先关系表33.3分析程序代码33.4程序运行截图33.5小结34LR分析44.1LR文法44.2LR分析表44.3分析程序代码44.4程序运行截图44.5小结4参考文献:41正则表达式1.1正则表达式(a

3、b)*(aa

4、bb)(a

5、b)*(注:该正规式为示例,可更改)1.2确定化(化简)后的状态转换图1.3分析程序代码#include#include#includeusingnamespacestd;//定义一个存储状态转换的类classStat

6、u{public:mapMAP;};intmain(){//定义4个状态并初始化各个状态间的关系,以及定义一个存储当前状态的变量statusStatuA,B,C,D,*status;A.MAP['a']=&B;A.MAP['b']=&C;B.MAP['a']=&D;B.MAP['b']=&C;C.MAP['a']=&B;C.MAP['b']=&D;D.MAP['a']=&D;D.MAP['b']=&D;while(1){string::size_typesize=0;stringstr;boolflag=true;cout<<"请

7、输入符合(a

8、b)*(aa

9、bb)(a

10、b)*的正则表达式"<>str;status=&A;//刚开始指向初始状态constchar*ch=str.c_str();while(ch[size]){15if(ch[size]!='a'&&ch[size]!='b'){flag=false;break;}status=status->MAP[ch[size++]];//根据输入字符串调整状态}if(status==&D&&flag)//若为终结状态则符合此正则表达式cout<<"√正确"<

11、l;}return0;}1.4程序运行截图1.5小结通过定义各个状态,并生成各个状态间的关系可以方便地表示状态转换图,使用关联容器则可以方便的管理状态。152LL(1)分析2.1LL(1)文法E→TE'(注:该文法为示例,可更改)E'→+TE'

12、εT→FT'T'→*FT'

13、εF→(E)

14、i2.2LL(1)预测分析表i+*()#EE→TE'E→TE'E'E'→+TE'E'→εE'→εTT→FT'T→FT'T'T'→εT'→*FT'T'→εT'→εFF→iF→(E)2.3分析程序代码#include#include#incl

15、ude#includeusingnamespacestd;enumSymbols{//终结符号Terminalsymbols:TSTS_I,//iTS_PLUS,//+TS_MULTIPLY,//*TS_L_PARENS,//(TS_R_PARENS,//)TS_EOS,//#,''TS_INVALID,//非法字符//非终结符号Noneterminalsymbols:NTSNTS_E,//ENTS_EE,//E'NTS_T,//TNTS_TT,//T'NTS_F//F};15enumSymbolslexer(charc){sw

16、itch(c){case'i':returnTS_I;case'+':returnTS_PLUS;case'*':returnTS_MULTIPLY;case'(':returnTS_L_PARENS;case')':returnTS_R_PARENS;case'#':returnTS_EOS;//栈底:#终结符号default:returnTS_INVALID;}}intmain(){while(1){cout<<"输入一个以#结束的字符串"<>str;p=str.c_str();map

17、numSymbols,map>t

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

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

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