编译原理实验4递归下降分析法Word文档下载推荐.docx
- 文档编号:14357488
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:13
- 大小:45.37KB
编译原理实验4递归下降分析法Word文档下载推荐.docx
《编译原理实验4递归下降分析法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《编译原理实验4递归下降分析法Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
(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)输入一以#结束的符号串(包括+—*/()i#):
在此位置输入符号串例如:
i+i*i#
(3)输出结果:
i+i*i#为合法符号串
备注:
输入一符号串如i+i*#,要求输出为“非法的符号串”。
注意:
1.表达式中允许使用运算符(+-*/)、分割符(括号)、字符I,结束符#;
2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好)。
三、实验方法
用C语言,根据递归下降分析法的规则编写代码,并测试。
四、实验步骤
1.对语法规则有明确的定义;
2.编写的分析程序能够对实验一的结果进行正确的语法分析;
3.对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过程;
五、实验结果
六、实验结论
#include<
stdio.h>
dos.h>
stdlib.h>
string.h>
chara[50],b[50],d[200],e[10];
charch;
intnumOfEq,i1=0,flag=1,n=6;
intE();
intE1();
intT();
intG();
intS();
intF();
voidinput();
voidinput1();
voidoutput();
//================================================
voidmain()/*递归分析*/
{intfoe1,i=0;
charx;
d[0]='
E'
;
d[1]='
='
d[2]='
>
'
d[3]='
?
d[4]='
T'
d[5]='
G'
d[6]='
#'
printf("
请输入字符串(以#号结束)\n"
);
do{scanf("
%c"
&
ch);
a[i]=ch;
i++;
}
while(ch!
numOfEq=i;
ch=b[0]=a[0];
文法\t分析串\t\t分析字符\t剩余串\n"
foe1=E1();
if(foe1==0)return;
if(ch=='
)
{printf("
accept\n"
i=0;
x=d[i];
while(x!
x);
i=i+1;
/*输出推导式*/}
\n"
else
error\n"
回车返回\n"
getchar();
return;
intE1()
{intfot,fog;
E->
TG\t"
flag=1;
input();
input1();
fot=T();
if(fot==0)return(0);
fog=G();
if(fog==0)return(0);
elsereturn
(1);
}
intE()
e[0]='
e[1]='
e[2]='
e[3]='
e[4]='
e[5]='
e[6]='
output();
}
intT()
{intfof,fos;
T->
FS\t"
F'
S'
fof=F();
if(fof==0)return(0);
fos=S();
if(fos==0)return(0);
intG()
{intfot;
if(ch=='
+'
)
{b[i1]=ch;
G->
+TG\t"
e[7]='
flag=0;
ch=a[++i1];
G();
return
(1);
}
elseif(ch=='
-'
-TG\t"
^\t"
^'
intS()
*'
S->
*FS\t"
if(fof==0)
return(0);
/'
/FS\t"
a[i1]=ch;
intF()
{intf;
('
F->
(E)\t"
)'
f=E();
if(f==0)return(0);
if(ch=='
F--(E)\t"
}}
i'
{b[i1]=ch;
i\t"
{printf("
voidinput()
{inti=0;
for(;
i<
=i1-flag;
i++)
b[i]);
/*输出分析串*/
\t\t"
%c\t\t"
ch);
/*输出分析字符*/}
voidinput1()
{inti;
for(i=i1+1-flag;
numOfEq;
i++)
a[i]);
/*输出剩余字符*/
voidoutput()
{/*推导式计算*/
intm,k,j,q;
inti=0;
m=0;
k=0;
q
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实验 递归 下降 分析