编译原理-实验4递归下降分析法

上传人:F****n 文档编号:100119417 上传时间:2019-09-22 格式:DOC 页数:11 大小:71KB
返回 下载 相关 举报
编译原理-实验4递归下降分析法_第1页
第1页 / 共11页
编译原理-实验4递归下降分析法_第2页
第2页 / 共11页
编译原理-实验4递归下降分析法_第3页
第3页 / 共11页
编译原理-实验4递归下降分析法_第4页
第4页 / 共11页
编译原理-实验4递归下降分析法_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《编译原理-实验4递归下降分析法》由会员分享,可在线阅读,更多相关《编译原理-实验4递归下降分析法(11页珍藏版)》请在金锄头文库上搜索。

1、编译原理实验报告项目名称 递归下降分析法设计与实现 专业班级 学 号 姓 名 实验成绩:批阅教师:年 月 日实验4递归下降分析法设计与实现实验学时: 2 实验地点: 实验日期: 一、实验目的根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。二、实验内容程序输入/输出示例(以下仅供参考): 对下列文法,用递归下降分析法对任意输入的符号串进行分析: (1)E-TG(2)G-+TG|TG(3)G-(4)T-FS(5)S-*FS|/FS(6)S-(7)F-(E)(8)F-i输出的格式如下:(1)递归下降分析程序,编制人:姓名,学号,班

2、级(2)输入一以#结束的符号串(包括+*/()i#):在此位置输入符号串例如:i+i*i# (3)输出结果:i+i*i#为合法符号串备注:输入一符号串如i+i*#,要求输出为“非法的符号串”。注意:1. 表达式中允许使用运算符(+-*/)、分割符(括号)、字符I,结束符#; 2. 如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好)。三、实验方法用C语言,根据递归下降分析法的规则编写代码,并测试。四、实验步骤1. 对语法规则有明确的定义;2. 编写的分析程序能够对实验一的结果进行正确的语法分析;3. 对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过

3、程;五、实验结果六、实验结论#include#include#include#includechar a50,b50,d200,e10;char ch;int numOfEq,i1=0,flag=1,n=6;int E();int E1();int T();int G();int S();int F();void input();void input1();void output();/=void main()/*递归分析*/ int foe1,i=0; char x; d0=E;d1=;d2=;d3=?;d4=T;d5=G;d6=#;printf(请输入字符串(以#号结束)n);do sca

4、nf(%c,&ch);ai=ch;i+;while(ch!=#);numOfEq=i;ch=b0=a0;printf(文法t分析串tt分析字符t剩余串n);foe1=E1();if (foe1=0) return;if (ch=#) printf(acceptn);i=0;x=di;while(x!=#) printf(%c,x);i=i+1;x=di;/*输出推导式*/printf(n);else printf(errorn); printf(回车返回n);getchar();getchar();return;/=int E1() int fot,fog;printf(E-TGt);flag

5、=1;input();input1();fot=T();if (fot=0) return(0);fog=G();if (fog=0) return(0);else return(1); /=int E() int fot,fog; printf(E-TGt); e0=E;e1=;e2=;e3=?;e4=T;e5=G;e6=#; output(); flag=1; input();input1(); fot=T(); if (fot=0) return(0); fog=G(); if (fog=0) return(0); else return(1); /=int T() int fof,fo

6、s; printf(T-FSt); e0=T;e1=;e2=;e3=?;e4=F;e5=S;e6=#; output(); flag=1; input();input1(); fof=F(); if (fof=0) return(0); fos=S(); if (fos=0) return(0); else return(1); /=int G() int fot; if(ch=+) bi1=ch; printf(G-+TGt); e0=G;e1=;e2=;e3=?;e4=+;e5=T;e6=G;e7=#; output(); flag=0; input();input1(); ch=a+i1

7、; fot=T(); if (fot=0) return(0); G(); return(1); else if(ch=-) bi1=ch; printf(G-TGt); e0=G;e1=;e2=;e3=?;e4=-;e5=T;e6=G;e7=#; output(); flag=0; input();input1(); ch=a+i1; fot=T(); if (fot=0) return(0); G(); return(1); printf(G-t);e0=G;e1=;e2=;e3=?;e4=;e5=#;output();flag=1;input();input1();return(1);/

8、=int S() int fof,fos; if(ch=*) bi1=ch;printf(S-*FSt); e0=S;e1=;e2=;e3=?;e4=*;e5=F;e6=S;e7=#; output(); flag=0; input();input1(); ch=a+i1; fof=F(); if (fof=0) return(0); fos=S(); if (fos=0) return(0); else return(1); else if(ch=/) bi1=ch;printf(S-/FSt); e0=S;e1=;e2=;e3=?;e4=/;e5=F;e6=S;e7=#; output()

9、; flag=0; input();input1(); ch=a+i1; fof=F(); if (fof=0) return(0); fos=S(); if (fos=0) return(0); else return(1); printf(S-t); e0=S;e1=;e2=;e3=?;e4=;e5=#; output(); flag=1; ai1=ch; input();input1(); return(1); /=int F()int f; if(ch=() bi1=ch;printf(F-(E)t); e0=F;e1=;e2=;e3=?;e3=(;e4=E;e5=);e7=#; ou

10、tput(); flag=0; input();input1(); ch=a+i1; f=E(); if (f=0) return(0); if(ch=) bi1=ch;printf(F-(E)t); flag=0;input();input1(); ch=a+i1; else printf(errorn);return(0);else if(ch=i)bi1=ch;printf(F-it);e0=F;e1=;e2=;e3=?;e4=i;e5=#;output();flag=0;input();input1();ch=a+i1;elseprintf(errorn);return(0);return(1);/=void input() int i=0;for (;i=i1-flag;i+)printf(%c,bi);/*输出分析串*/printf(tt);printf(%ctt,ch);/*输出分析字符*/=void input1()int i;for (i=i1+1-flag;inumOfEq;i+) printf(%c,ai);/*输出剩余字符*/printf(n

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

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