资源简介
WHILE循环语句的翻译程序设计(LR方法、输出四元式)
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include “conio.h“
using namespace std;
ofstream coutf(“cifa.txt“ios::out);//结果输出至文件cifa.txt
ofstream couty(“yufa.txt“ios::out);//结果输出至文件yufa.txt
ofstream couts(“obj.txt“ios::out);//结果输出至文件obj.txt
char shuru[100]tmp;
char sr[100];
char b[10]op[10]rop[10];
char a[10];
int q=0;
struct Table{
char act_0[10];
int act_1[10];
int go[4];
}action[18];
struct sys{
char f;
char op1;
char op2;
char result;
}equ[10];
void Init(){
/*--------------- ACTION -----------------------*/
action[0].act_0[0]=‘s‘; action[0].act_1[0]=2;
action[1].act_0[9]=‘Z‘;
action[2].act_0[1]=‘s‘; action[2].act_1[1]=3;
action[3].act_0[5]=‘s‘; action[3].act_1[5]=5;
action[4].act_0[2]=‘s‘; action[4].act_1[2]=6;
action[5].act_0[2]=‘r‘; action[5].act_1[2]=7;
action[5].act_0[7]=‘s‘; action[5].act_1[7]=7;
action[6].act_0[3]=‘s‘; action[6].act_1[3]=9;
action[7].act_0[5]=‘s‘; action[7].act_1[5]=8;
action[8].act_0[2]=‘r‘; action[8].act_1[2]=6;
action[9].act_0[5]=‘s‘; action[9].act_1[5]=14;
action[10].act_0[4]=‘r‘; action[10].act_1[4]=3;
action[10].act_0[5]=‘s‘; action[10].act_1[5]=14;
action[11].act_0[4]=‘s‘; action[11].act_1[4]=12;
action[12].act_0[9]=‘r‘; action[12].act_1[9]=1;
action[13].act_0[4]=‘r‘; action[13].act_1[4]=2;
action[14].act_0[8]=‘s‘; action[14].act_1[8]=17;
action[14].act_0[6]=‘s‘; action[14].act_1[6]=15;
action[15].act_0[5]=‘s‘; action[15].act_1[5]=14;
action[16].act_0[4]=‘r‘; action[16].act_1[4]=4;
action[16].act_0[5]=‘r‘; action[16].act_1[5]=4;
action[17].act_0[4]=‘r‘; action[17].act_1[4]=5;
action[17].act_0[5]=‘r‘; action[17].act_1[5]=5;
/*-------------------- GOTO -------------------------*/
action[0].go[0]=1;
action[3].go[2]=4;;
action[9].go[1]=11;
action[9].go[3]=10;
action[10].go[1]=13;
action[10].go[3]=10;
action[15].go[3]=16;
}
void cifa()
{
int i=0j=0k=0m=0;
for(q=1;q {
tmp=sr[q];
if(tmp>=‘0‘&&tmp<=‘9‘||tmp>=‘a‘&&tmp<=‘z‘||tmp>=‘A‘&&tmp<=‘Z‘)
a[i++]=tmp;
else if(tmp==‘+‘||tmp==‘-‘||tmp==‘/‘||tmp==‘*‘)
op[j++]=tmp;
else if(tmp==‘>‘||tmp==‘<‘)
rop[k++]=tmp;
else if(tmp==‘(‘||tmp==‘)‘||tmp==‘{‘||tmp==‘}‘||tmp==‘;‘)
b[m++]=tmp;
}
cout<<“词法分析完成结果输出到文件cifa.txt“< coutf<<“词法分析结果:“< coutf<<“关键字:“<<“w“< coutf<<“变量名:“;
for(i=0;i {
coutf< }
coutf< coutf<<“表达式运算符:“;
for(i=0;i {
coutf< }
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2010-01-10 16:12 0708袁立明13\cifa.txt
文件 0 2010-01-07 15:24 0708袁立明13\Debug\cifa.txt
文件 0 2010-01-07 15:24 0708袁立明13\Debug\obj.txt
文件 82944 2010-01-10 16:12 0708袁立明13\Debug\vc60.idb
文件 118784 2010-01-07 10:31 0708袁立明13\Debug\vc60.pdb
文件 602256 2010-01-10 16:12 0708袁立明13\Debug\while(LR).exe
文件 850072 2010-01-10 16:12 0708袁立明13\Debug\while(LR).ilk
文件 354722 2010-01-10 16:11 0708袁立明13\Debug\while(LR).obj
文件 2480928 2010-01-07 10:31 0708袁立明13\Debug\while(LR).pch
文件 1180672 2010-01-10 16:12 0708袁立明13\Debug\while(LR).pdb
文件 0 2010-01-07 15:24 0708袁立明13\Debug\yufa.txt
文件 17 2010-01-10 16:12 0708袁立明13\input.txt
文件 0 2010-01-10 16:12 0708袁立明13\obj.txt
文件 9925 2009-06-21 22:33 0708袁立明13\while(LR).cpp
文件 3439 2010-01-10 16:11 0708袁立明13\while(LR).dsp
文件 526 2010-01-10 16:12 0708袁立明13\while(LR).dsw
文件 41984 2010-01-10 16:12 0708袁立明13\while(LR).ncb
文件 48640 2010-01-10 16:12 0708袁立明13\while(LR).opt
文件 753 2010-01-10 16:12 0708袁立明13\while(LR).plg
文件 0 2010-01-10 16:12 0708袁立明13\yufa.txt
目录 0 2010-01-10 18:39 0708袁立明13\Debug
目录 0 2010-01-10 18:39 0708袁立明13
----------- --------- ---------- ----- ----
5775662 22
相关资源
- 编译原理综合实习答辩PPT
- DO-WHILE循环语句的翻译程序设计LL1法、
- IF-ELSE条件语句的翻译程序设计LR方法
- 翻译程序设计输出四元式
- DO-WHILE简单优先法输出三地址
- WHILE循环语句的翻译程序设计递归下降
- 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循环语句的翻译程序设计递归下降
评论
共有 条评论