资源简介
编译课程设计,while语句的翻译,(递归下降,四元式)
代码片段和文件信息
#include
#include
#include
#define buf 20
#define MAXBUF 255
typedef struct Token
{
int label;
char name[buf];
int code;
}Token;
typedef struct Symbol_i
{
int symbol_i;
int state;
}Symbol_i;
int Getsymbol();
void ERROR();
void S(); //S->while (B) S | i=E
void B(); //B->E relop E
void relop(); //relop->< | = | >
void E(); //E->(E)F | iF | nF
void F(int A); //F->+EF | -EF | *EF | /EF | ε
void F();
char symch;
int symbol_L=0symbol_L1=0symbol_L2=0symbol_L3=0symbol_L4=0;
int ll1l2l3l4;
int L_i=0S_i=0B_i=0E_i=0F_i=0relop_i=0i_i=0n_i=0;
int k=0;
int ren=0t=0;
int i1=0i2=0i3=0i4=0;
char *wh=“while“;
Token token1[MAXBUF]token2[MAXBUF];
Symbol_i L[MAXBUF]L1[MAXBUF]L2[MAXBUF]L3[MAXBUF]L4[MAXBUF];
FILE *input;
FILE *output;
int strcmp(char *schar *t)
{
for(;*s==*t;s++t++)
if(*s==0) return 0;
return 1;
}
void main()
{
if((input=fopen(“input.txt““rt“))==NULL)
printf(“cannot open input file \n“);
if((output=fopen(“output.txt““wt+“))==NULL)
printf(“cannot open output file\n“);
for(int i=0;i for(int j=0;j {
token1[i].name[j]=‘\0‘;
token1[i].name[j]=‘\0‘;
}
for(int j=0;j {
L[j].symbol_i=-1;
L[j].state=0;
L1[j].symbol_i=-1;
L1[j].state=0;
L2[j].symbol_i=-1;
L2[j].state=0;
L3[j].symbol_i=-1;
L3[j].state=0;
L4[j].symbol_i=-1;
L4[j].state=0;
}
sym=fgetc(input);
S();
cout<<“Lnext: exit“< fprintf(output“%s““Lnext: exit“);
cout< if(k==1)
{
cout<<“分析结束!“< cout<<“成功分析!“< }
}
int Getsymbol()
{
while(sym!=EOF)
{
if((sym>=‘a‘&&sym<=‘z‘)||(sym>=‘A‘&&sym<=‘Z‘))
{
int h1=0;
while((sym>=‘a‘&&sym<=‘z‘)||(sym>=‘A‘&&sym<=‘Z‘)||sym==‘_‘||(sym>=‘0‘&&sym<=‘9‘))
{
token1[t].name[i1++]=sym;
n=t;
sym=fgetc(input);
}
h1=strcmp(token1[t].namewh);
t++;
i3=i1;
i1=0;
if(!h1)
return 16; //返回while给主程序
else
return 13;
} //已经取了下一个字符
else
if(sym>=‘0‘&&sym<=‘9‘)
{
while(sym>=‘0‘&&sym<=‘9‘)
{
token2[t].name[i2++]=sym;
n=t;
sym=fgetc(input);
}
t++;
i4=i2;
i2=0;
return 12;
}
else
if(sym==‘/‘)
{
sym=fgetc(input);
ch=‘/‘;
return 1;
}
else
if(sym==‘*‘)
{
sym=fgetc(input);
ch=‘*‘;
return 2;
}
else
if(sym==‘-‘)
{
sym=fgetc(input);
ch=‘-‘;
return 3;
}
else
if(sym==‘+‘)
{
sym=fgetc(input);
ch=‘+‘;
return 4;
}
else
if(sym==‘(‘)
{
sym=fgetc(input);
return 15;
}
else
if(sym==‘)‘)
{
sym=f
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2010-01-05 20:39 WHLE语句语法分析\Debug\output.txt
文件 74752 2010-01-08 09:22 WHLE语句语法分析\Debug\vc60.idb
文件 61440 2010-01-08 09:21 WHLE语句语法分析\Debug\vc60.pdb
文件 200805 2010-01-08 09:21 WHLE语句语法分析\Debug\while.exe
文件 253860 2010-01-08 09:21 WHLE语句语法分析\Debug\while.ilk
文件 49134 2010-01-08 09:21 WHLE语句语法分析\Debug\while.obj
文件 268404 2010-01-08 08:40 WHLE语句语法分析\Debug\while.pch
文件 549888 2010-01-08 09:21 WHLE语句语法分析\Debug\while.pdb
文件 221293 2010-01-07 13:24 WHLE语句语法分析\Debug\WHLE语句语法分析.exe
文件 450360 2010-01-07 13:24 WHLE语句语法分析\Debug\WHLE语句语法分析.ilk
文件 268404 2010-01-07 12:25 WHLE语句语法分析\Debug\WHLE语句语法分析.pch
文件 574464 2010-01-07 13:24 WHLE语句语法分析\Debug\WHLE语句语法分析.pdb
文件 24 2010-01-08 08:40 WHLE语句语法分析\input.txt
文件 386 2010-01-08 09:22 WHLE语句语法分析\output.txt
文件 13824 2010-01-08 09:21 WHLE语句语法分析\while.cpp
文件 3389 2010-01-08 08:40 WHLE语句语法分析\while.dsp
文件 535 2010-01-08 09:24 WHLE语句语法分析\while.dsw
文件 50176 2010-01-08 09:24 WHLE语句语法分析\while.ncb
文件 48640 2010-01-08 09:24 WHLE语句语法分析\while.opt
文件 1158 2010-01-08 09:21 WHLE语句语法分析\while.plg
文件 91136 2007-01-23 18:39 WHLE语句语法分析\WHILE循环语句的翻译程序设计.doc
文件 4387 2006-06-13 23:29 WHLE语句语法分析\WHLE语句语法分析.dsp
文件 557 2006-06-13 23:02 WHLE语句语法分析\WHLE语句语法分析.dsw
文件 50176 2010-01-07 13:25 WHLE语句语法分析\WHLE语句语法分析.ncb
文件 48640 2010-01-07 13:25 WHLE语句语法分析\WHLE语句语法分析.opt
文件 926 2010-01-07 13:24 WHLE语句语法分析\WHLE语句语法分析.plg
文件 13824 2007-01-23 18:37 WHLE语句语法分析\课程设计任务书.doc
文件 388 2010-01-07 15:26 WHLE语句语法分析\输入例子.txt
目录 0 2010-01-12 10:47 WHLE语句语法分析\Debug
目录 0 2010-01-12 10:47 WHLE语句语法分析
............此处省略3个文件信息
相关资源
- 编译原理 三地址代码生成器
- 编译原理实验报告+源代码 预测分析法
- LL(1)分析过程模拟
- 编译原理实验常工院版
- 编译原理FOR循环语句的翻译程序设计
- LR(0)完整的语法分析方法(拓广文
- OUC编译原理全部实验
- 编译原理上机源代码LR语法分析器
- 编译原理LR0分析代码完整
- 哈工大编译原理实验三语义分析实验
- 赋值语句的翻译程序设计递归下降法
- 编译原理实验报告,词法分析,语法
- 算符优先分析程序的设计可趁设计
- 赋值语句的语法分析程序递归下降法
- 山东大学编译原理实验
- Sample语言词法分析器标准答案
- 编译原理语法分析实验报告
- 编译原理-语法分析-LL1
- SLR1语法分析生成器
- windows下用MinGW编译ffmpeg+x265库
- LDMicro梯形图编译软件1.9版支持AVR/PI
- 编译原理优先算法代码,及详细实验
- 编译原理 课后习题答案 陈意云 张昱
- opencv 320 编译需要 vgg_generated 包
- exe2c反编译工具
- snmp++ 编译snmp_pp.lib工程
- lua_cjson vs2013 项目,已经编译通过
- 编译原理语法树的实现
- Keil5配置GCC编译器编译STM32工程
- 将一个vue文件编译成js文件的工具
评论
共有 条评论