




免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LL(1)语法分析程序2010211306班 赵雪莹(10211310)语法分析程序:该语法分析程序实现对算术表达式的语法分析,并且在对输入表达式进行分析的过程中,输出所采用的产生式。该程序使用的是LL(1)语法分析程序,为给定文法构造预测分析表,并通过预测分析表对输入的表达式进行预测分析,并将栈顶状态和预测分析过程详细输出,如果匹配成功则接受,如果匹配不成功则返回错误信息。给定文法的产生式:E-E+T | E-T | TT-T*F | T/F | FF- id | (E) | num源代码:#include #include #include #include #include using namespace std;struct Node1 char vn; char vt; char s12;MAP22;/存储分析预测表每个位置对应的终结符,非终结符,产生式 int k;char G1212=E-TR,R-+TR,R-TR,R-e,T-FW,W-*FW,W-/FW,W-e,F-(E),F-i,F-n;/存储文法中的产生式 ,用R代表E,W代表T,e代表空char VN6=E,R,T,W,F;/存储非终结符 char VT9=i,n,+,-,*,/,(,),#;/存储终结符 char FOLLOW1212=(,i,n,+,-,),#,(,i,n,*,/,+,-,),#,(,i,n;/存储文法中每个产生式对应的FOLLOW集合 char Right128=-TR,-+TR,-TR,-e,-FW,-*FW,-/FW,-e,-(E),-i,-n;stack stak,stak1,stak2;bool compare(char *a,char *b) int i,la=strlen(a),j,lb=strlen(b); for(i=0;ila;i+) for(j=0;jlb;j+) if(ai=bj) return 1; return 0;char *Find(char vn,char vt) int i; for(i=0;ik;i+) if(MAPi.vn=vn & MAPi.vt=vt) return MAPi.s; return error;char * Analyse(char * word) char p,c,action10,output10; int i=1,l=strlen(word),j,k=0,l_act,m,x; printf(_n); printf(n 对符号串%s的分析过程n,word); for(x=0;xl;x+)/把用字母数字表示的输入串转换为token序列的表示方法 c=wordx; if(c=a)|(c=A) wordx=i; else if(c=0&c=9) wordx=n; else wordx=c; while(!stak.empty()/判断栈中是否为空,若不空就将栈顶元素与分析表匹配进行相应操作 stak.pop(); stak.push(#);/栈底标志 stak.push(E);/起始符号先入栈 printf( 步骤 栈顶元素 输入串 推到所用产生式或匹配n); p=stak.top(); while(p!=#)/查预测分析表将栈顶元素进行匹配,若栈顶元素与输入串匹配成功则向前匹配,否则生成式反序入栈 printf(%7d ,i+); p=stak.top();/从栈中弹出一个栈顶符号,由p记录并输出 stak.pop(); printf(%6c ,p); for(j=k,m=0;j1;j-) stak.push(actionj); if(strcmp(output,#)!=0)/匹配不成功 return ERROR; int main () freopen(in.txt,r,stdin); char source100; int i,j,flag,l,m; printf(n*R代表E,W代表T,e代表空*nn); printf(算术表达式对应的文法产生式如下:n); for(i=0;i8;i+) printf( %sn,Gi); printf(_n); printf(n该文法的FOLLOW集如下:n); /手动生成集合 for(i=0;i8;i+) printf( FOLLOW(%s) = %s n,Gi,FOLLOWi); printf(_n); for(i=0,k=0;i11;i+)/通过集合生成预测分析表 l=strlen(FOLLOWi); for(j=0;jl;j+=2) MAPk.vn=Gi0; MAPk.vt=FOLLOWij; strcpy(MAPk.s,Righti); k+; printf(n表达式文法的预测分析表如下:nn); printf( ); for(i=0;i9;i+) printf(%7c,VTi); printf(n); for(i=0;i5;i+) printf( -n); printf(%7c,VNi); for(j=0;j9;j+) for(m=0;msource)/输入源文件串进行预测分析 printf(n分析结果:%snn,Analyse(source); while(1); return 0;将其改写LL(1)文法:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南开大学滨海学院《农药营销与管理学》2024-2025学年第一学期期末试卷
- 广东以色列理工学院《民航快递实训》2024-2025学年第一学期期末试卷
- 西昌民族幼儿师范高等专科学校《数学课程标准与教材分析》2024-2025学年第一学期期末试卷
- 遂宁能源职业学院《信息管理学》2024-2025学年第一学期期末试卷
- 湖北生物科技职业学院《游泳课保健》2024-2025学年第一学期期末试卷
- 贵州农业职业学院《平面设计》2024-2025学年第一学期期末试卷
- (2025年标准)城市苗木出让协议书
- 海南经贸职业技术学院《生物化学(上)》2024-2025学年第一学期期末试卷
- (2025年标准)承揽运输协议书
- 广东白云学院《机器学习》2024-2025学年第一学期期末试卷
- 酒店客房样板间装修验收记录表
- 2024年高级统计实务考试真题及答案解析
- 铁总物资〔2015〕250号:中国铁路总公司物资采购异议处理办法
- GB/Z 42625-2023真空技术真空计用于分压力测量的四极质谱仪特性
- 人民医院心血管外科临床技术操作规范2023版
- 助理工程师考试试题以及答案
- 送东阳马生序
- 2017年全国大学生数学建模A题
- 2023年专升本计算机题库含答案专升本计算机真题
- GB/T 16674.1-2016六角法兰面螺栓小系列
- 住宅项目景观工程施工策划(图文并茂)
评论
0/150
提交评论