- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
compiler实验二语法分析实验指导
实验二 语法分析程序设计
[实验目的]:了解法分析的主要任务熟悉编译程序的编制。[实验内容]:根据文法,构造一程序。出[实验要求]:G[表达式]:表达式→表达式+项|表达式-项项→项*因式|项/因式因式→标识符|无号|(表达式)编写分析程序实现基本的分析器,能够分析。实验报告中要说明使用方法。生成并输出[实验步骤]:写出写出’
G→+TG|∧ ∧为ε
T→FS S为T’
S→*FS|∧
F→i|(E)
编写程序结果分析
[实验]:#include stdio.h
#include dos.h
#include stdlib.h
#include string.h
char a[50],b[50],d[200],e[10];/*数组a存输入串,数组d存推导式,*/
char ch;
int n1,i1=0,flag=1,n=5; /*flag=1处理非终结符,flag=0处理终结符*/
int total=0; /*步骤计数器*/
int E();
int E1();
int T();
int G();/*E’*/
int S();/*T’*/
int F();
void input();
void input1();
void output();
void main() /*递归分析*/
{ int f,p,j=0;
char x;
d[0]=E;
d[1]==;
d[2]=;
d[3]=T;
d[4]=G;
d[5]=#;
printf(请输入字符串(长度50,以#号结束)\n);
do
{ scanf(%c,ch);
a[j]=ch;
j++;
}while(ch!=#);
n1=j;/* n1输入串实际长度 */
ch=b[0]=a[0];
printf(步骤\t文法\t分析串\t\t分析字符\t剩余串\n);
f=E1();
if (f==0)
return; /*有语法错误,失败退出*/
if (ch==#)
{ printf(accept\n); /*输入串是文法的句子*/
p=0;
x=d[p];
while(x!=#)
{ printf(%c,x);
p=p+1;
x=d[p]; /*输出推导式*/
}
}
else
{ printf(error\n);
printf(回车返回\n);
getchar();
getchar();
return;
}
printf(\n);
printf(回车返回\n);
getchar();
getchar();
}
int E1()/* 有语法错误函数返回值为0,否则为1* /
{ int f,t;
printf(%d\tE--TG\t,total);
total++;
flag=1;
input();
input1();
f=T();
if (f==0)
return(0);
t=G();
if (t==0)
return(0);
else return(1);
}
int E()
{ int f,t;
printf(%d\tE--TG\t,total);
total++;
e[0]=E;
e[1]==;
e[2]=;
e[3]=T;
e[4]=G;
e[5]=#;
output();
flag=1;
input();
input1();
f=T();
if (f==0)
return(0);
t=G();
if (t==0)
return(0);
else
return(1);
}
int T()
{ int f,t;
printf(%d\tT--FS\t,total);
total++;
e[0]=T;
e[1]==;
e[2]=;
e[3]=F;
e[4]=S;
e[5]=#;
output();
flag=1;
input();
input1();
f=F();
if (f==0)
return(0);
t=S();
if (t==0)
return(0);
else
return(1);
}
int G()
{ int f;
if(ch==+)
{ b[i1]=ch;
printf(%d\tG--+TG\t,total);
total++;
e[0]=G;
e[1]==;
e[2]=;
e[3]=+;
e[4]=T;
e[5]=G;
e[6]=#;
output();
flag=0;
input();
input1();
ch
您可能关注的文档
最近下载
- 2025年人教pep版六年级上册英语Unit3 Part C Story time.pptx VIP
- “双碳”目标下兴业银行绿色信贷风险管理研究.docx VIP
- 合并同类项练习题.doc VIP
- 天然气管道抢险施工方案.docx
- 外教社2024全新版大学高阶英语:综合教程 第4册 PPT课件U2.pptx VIP
- 兴业银行绿色信贷风险管理.docx VIP
- 不忘初心模板2.pptx VIP
- 重大火灾隐患判定规则GB35181-2025宣贯培训.pptx
- 不忘初心,继续前进PPT模板.ppt VIP
- 书记讲党课使命教育党课强化党的意识践行党的宗旨不忘初心继续前进党课ppt课件模板.pptx VIP
原创力文档


文档评论(0)