资源简介
WHILE循环语句的翻译程序设计(递归下降法、输出四元式)
代码片段和文件信息
/*
文法G(S)
S-->WEG W代表while
E-->aFb E代表while的执行条件
F--> >|<
G-->c=R
R-->dTe|d R为一个
T-->+|-|*|/
*/
#include
#include
#include
#include
#include
char a[40]s[40][40]; //a[40]保存输入串s[40][40]保存四元式
char ch;
int i1=0i2=0i3=0; //i1通过自加来取得a[i1]输入串中的字符 i2用来选择用哪种四元式i3用来选择用‘W‘的报错
int total=0;
void S(); //文法开始
void W(); //判断输入是否为while文法.是 则字符串以W开头
void E(); //while(E)
void F(); //“<“or“>“
void G();
void R();
void T();
void main()
{
int pj=0;
char str[20];
printf(“请输入while语句并以#结束:\n“);
do{
scanf(“%s“str);
if(strcmp(str“W“)==0)
{
a[j]=‘W‘;
j++;
}
else if(strcmp(str“a>b“)==0)
{
a[j++]=‘a‘;
a[j++]=‘>‘;
a[j++]=‘b‘;
continue;
}
else if(strcmp(str“a {
a[j++]=‘a‘;
a[j++]=‘<‘;
a[j++]=‘b‘;
continue;
}
else if(strcmp(str“c=d+e“)==0)
{
a[j++]=‘c‘;
a[j++]=‘=‘;
a[j++]=‘d‘;
a[j++]=‘+‘;
a[j++]=‘e‘;
continue;
}
else if(strcmp(str“c=d-e“)==0)
{
a[j++]=‘c‘;
a[j++]=‘=‘;
a[j++]=‘d‘;
a[j++]=‘-‘;
a[j++]=‘e‘;
continue;
}
else if(strcmp(str“c=d*e“)==0)
{
a[j++]=‘c‘;
a[j++]=‘=‘;
a[j++]=‘d‘;
a[j++]=‘*‘;
a[j++]=‘e‘;
continue;
}
else if(strcmp(str“c=d/e“)==0)
{
a[j++]=‘c‘;
a[j++]=‘=‘;
a[j++]=‘d‘;
a[j++]=‘/‘;
a[j++]=‘e‘;
continue;
}
else {
for(int i=0;i {
a[j+i]=str[i];
}
j=j+strlen(str);
}
}while(strcmp(str“#“)!=0);
printf(“\n“);
printf(“输入串变为%s\n“a);
printf(“\n“);
ch=a[0];
S();
if (ch==‘#‘)
{ printf(“accept\n“);
printf(“四元式为:\n“);
p=0;
for(;p<=i2+1;p++)
{
printf(“%d %s\n“ps[p]);
}
}
else {
printf(“error\n“);
printf(“回车返回\n“);
getchar();getchar();
return;
}
printf(“\n“);
printf(“回车返回\n“);
getchar();
getchar();
}
void S()
{
printf(“%d\tS-->WEG\n“total);total++;//total用来记数
W();
E();
G();
}
void W()
{
if(i3==0)
{
ch=a[i1++];
if(ch!=‘W‘)
{
cout<<“不为W2“< printf(“第%d个字符%c为有非法字符请按回车返回!!“i1+1ch);
getchar();
getchar();
exit(1);
}
}
else{
++i1;
ch=a[++i1];
if(ch!=‘W‘)
{
cout<<“不为W“< printf(“第%d个字符%c为有非法字符请按回车返回!!“i1+1ch);
getchar();
getchar();
exit(1);
}
}
}
void E()
{
ch=a[i1++];
if(ch!=‘a‘)
{
cout<<“不为a“< printf(“第%d个字符%c为有非法字符请按回车返回!!“i1+1ch);
getchar();
getch
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 554 2010-01-10 20:08 while语句递归下降法分析\while语句递归下降法分析.dsw
文件 33792 2010-01-10 20:10 while语句递归下降法分析\while语句递归下降法分析.ncb
文件 41984 2010-01-10 20:09 while语句递归下降法分析\Debug\vc60.idb
文件 61440 2010-01-10 20:09 while语句递归下降法分析\Debug\vc60.pdb
文件 282224 2010-01-10 20:09 while语句递归下降法分析\Debug\while语句递归下降法分析.pch
文件 26516 2010-01-10 20:09 while语句递归下降法分析\Debug\while语句递归下降法分析.obj
文件 242356 2010-01-10 20:09 while语句递归下降法分析\Debug\while语句递归下降法分析.ilk
文件 221271 2010-01-10 20:09 while语句递归下降法分析\Debug\while语句递归下降法分析.exe
文件 418816 2010-01-10 20:09 while语句递归下降法分析\Debug\while语句递归下降法分析.pdb
文件 5467 2010-01-10 20:09 while语句递归下降法分析\while语句递归下降法分析.cpp
文件 973 2010-01-10 20:09 while语句递归下降法分析\while语句递归下降法分析.plg
文件 48640 2010-01-10 20:10 while语句递归下降法分析\while语句递归下降法分析.opt
文件 4490 2010-01-10 20:10 while语句递归下降法分析\while语句递归下降法分析.dsp
目录 0 2010-01-10 20:08 while语句递归下降法分析\Debug
目录 0 2010-01-10 20:08 while语句递归下降法分析
----------- --------- ---------- ----- ----
1388523 15
- 上一篇:电商数据分析基础指标体系
- 下一篇:计算机网络管理题库,历年考题,另附考试心得~
相关资源
- IF-ELSE条件语句的翻译程序设计递归下
- WHILE循环语句的翻译程序设计.zip
- 编译——while语句的翻译递归下降,四
- 编译原理FOR循环语句的翻译程序设计
- 赋值语句的翻译程序设计递归下降法
- 赋值语句的语法分析程序递归下降法
- 编译课设While循环LL(1)法,输出四元
- 基于LR方法的WHILE循环语句的编译系统
- DO-WHILE循环语句的翻译程序设计(简单
- WHILE循环语句的翻译程序设计LL1法、输
- IF-ELSE条件语句的翻译程序设计LL1法、
- labview的小程序(包括:case while循环
- IF-ELSE条件语句的翻译程序设计递归下
- FOR循环语句的翻译程序设计(LL法、输
- WHILE循环语句的翻译程序设计(简单优
- IF-ELSE条件语句的翻译程序设计简单优
- IF-ELSE条件语句的翻译程序设计递归下
- WHILE循环语句的翻译程序设计递归下降
评论
共有 条评论