资源简介
编译课程设计,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个文件信息
相关资源
- 微软masm汇编编译器
- 编译原理实验工具及参考源码(lex&
- 类pascal语言编译器(编译原理实验)
- 编译原理课程设计:词法语法编译器
- 递归下降分析器分析普通的四则运算
- 中科院 编译原理 习题及解答
- 编译原理四元式和逆波兰式
- unity3d反编译工具
- 汇编语言编译器masm5.0
- 《编译原理》清华大学版中的pl0扩充
- PL/0功能扩充break功能
- 编译词法分析器识别关键字常数和符
- uCOS编译环境建立 BC45 TASM
- zlib 最新 1.2.8 win32 win64 编译好的dll
- 编译原理LR(0)语法分析
- 编译原理中间代码生成程序
- 编译原理:LR分析程序
- C编译器源代码(超级牛b).rar
- Delphi反编译工具的源码
- 小程序反编译文件wxappUnpacker.rar
- win10 64位下编译的opencv4.5.5库,opencv
- 易语言模块反编译助手
- librdkafka win7 64位 vs2015编译Release版本
- 编译原理实验:词法分析,语法分析
- 吉林大学编译原理课件
- delphi 反编译工具 源码
- 编译好的json_lib.lib 包含64位,32位,头
- frcc.exe fastreport编译中文没乱码
- 编译原理龙书答案
- 编译原理 第三章课后习题答案
评论
共有 条评论