资源简介

编译课程设计,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个文件信息

评论

共有 条评论