资源简介
编译课程设计的课程设计,里面包含一个“班级”的编译课程设计,供大家参考!
代码片段和文件信息
//有效字符串: IFELSETHEN abx>=
/*
文法:
S->id=id | if E then S else S
E->id < id
*/
#include
#include
#include
#define $ASSIGN 249
#define $IF 250
#define $THEN 251
#define $ELSE 252
#define $GREAT 253
#define $LESS 248
#define $ID 254
typedef struct Wtoken
{
int type;
char ch;
}Wtoken;
typedef enum{JUMPJGJLASSIGNEND}OpKind;
typedef struct
{
int label;//标号
OpKind op;
char par1par2;
union{
char result;
int address;
};
}Fourtable;//四元式
#define MAX_TOKEN 256 //Wtoken表大小
#define MAX_QUAD 256 //四元式数组大小
Wtoken tokentable[MAX_TOKEN];
Fourtable quad[MAX_QUAD];
int token_index;//token表索引
int total_len;//token表有效长度
int quad_len;//四元式表有效长度
int quad_index;//四元式索引
int label;
ifstream ins;
bool init(char filename[255]);
bool cifafenxi();
void print();
void ERROR();
void S(intint);
void E(intintint);
bool nexttoken();
int newlabel();
void yuyifenxi();
void printFourtable();
void main()
{
cout<<“Please input the name of file:“;
char fname[200];
cin>>fname;
if(!init(fname))
return;
if(!cifafenxi())
return;
char ch;
while(1)
{
if(ins.eof())
break;
ins>>ch;
}
cout<<“The result of CIFA analyse :“< print();
cout< nexttoken();
cout<<“The Grammar:“< yuyifenxi();
cout<<“The FourTable as followings:“< printFourtable();
}
int newlabel()
{
return label++;
}
bool init(char filename[255])
{
token_index=0;
total_len=0;
quad_len=0;
quad_index=0;
label=100;
ins.open(filenameios::nocreate | ios::in);
if(ins.fail())
{
cout<<“文件打开出错!“< return false;
}
return true;
}
//
bool cifafenxi()
{
char buf[16];
char ch;
while(1)
{
ins>>ch;
if(ins.fail())
break;
if(ch==‘I‘)
{
ins>>buf;
if(strcmp(buf“F“)==0)
tokentable[total_len++].type=$IF;
}
else if(ch==‘T‘)
{
ins>>buf;
if(strcmp(buf“HEN“)==0)
tokentable[total_len++].type=$THEN;
}
else if(ch==‘E‘)
{
ins>>buf;
if(strcmp(buf“LSE“)==0)
tokentable[total_len++].type=$ELSE;
}
else if(ch==‘>‘)
{
tokentable[total_len++].type=$GREAT;
}
else if(ch==‘<‘)
{
tokentable[total_len++].type=$LESS;
}
else if(ch==‘=‘)
{
tokentable[total_len++].type=$ASSIGN;
}
else if(ch==‘x‘ || (ch>=‘a‘ && ch<=‘z‘))
{
tokentable[total_len].type=$ID;
tokentable[total_len++].ch=ch;
}
}
return true;
}
#define AD_RESULT(nlabelnopnpar1npar2nresult) {quad[quad_len].label=nlabel; quad[quad_len].op=nop; quad[quad_len].par1=npar1; quad[quad_len].par2=npar2; quad[quad_len].result=nresult; quad_len++; }
#define AD_ADDRESS(nlabelnopnpar1npar2naddress) { quad[quad_len].label=nlabel; quad[quad_len].op=nop; quad[quad_len].par1=npar1; quad[quad_len].par2=npar2; quad[quad_len].address=naddress; quad_len++; }
Wtoken cur;
bool nexttoken()
{
if(token_ind
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 92 2009-06-21 12:58 1\1\01\源程序\bianyi.txt
文件 225380 2009-06-21 16:25 1\1\01\源程序\Debug\条件语句.exe
文件 31 2009-06-19 07:33 1\1\01\源程序\tiaojian.txt
文件 6207 2009-06-21 13:06 1\1\01\源程序\条件语句.cpp
文件 196691 2005-12-30 09:08 1\1\01\源程序\条件语句.exe
文件 68 2009-06-20 22:13 1\1\02\chanic.txt
文件 14871 2009-06-19 20:54 1\1\02\chenzhuo.cpp
文件 233567 2009-06-20 22:12 1\1\02\Debug\chenzhuo.exe
文件 13969 2009-06-18 13:19 1\1\03\cjt.cpp
文件 581727 2009-06-18 15:49 1\1\03\Debug\cjt.exe
文件 37 2009-06-18 12:15 1\1\03\input.txt
文件 7600 2009-06-21 16:47 1\1\04\源代码以及测试文件\LRcompiler.cpp
文件 39 2009-06-21 16:53 1\1\04\源代码以及测试文件\test0.txt
文件 86 2009-06-21 16:53 1\1\04\源代码以及测试文件\test1.txt
文件 3449 2010-01-06 10:58 1\1\04\源代码以及测试文件\LRcompiler.dsp
文件 74752 2010-01-06 10:59 1\1\04\源代码以及测试文件\Debug\vc60.idb
文件 110592 2010-01-06 10:58 1\1\04\源代码以及测试文件\Debug\vc60.pdb
文件 2148736 2010-01-06 10:58 1\1\04\源代码以及测试文件\Debug\LRcompiler.pch
文件 322746 2010-01-06 10:58 1\1\04\源代码以及测试文件\Debug\LRcompiler.obj
文件 823296 2010-01-06 10:58 1\1\04\源代码以及测试文件\Debug\LRcompiler.ilk
文件 589953 2010-01-06 10:58 1\1\04\源代码以及测试文件\Debug\LRcompiler.exe
文件 1131520 2010-01-06 10:58 1\1\04\源代码以及测试文件\Debug\LRcompiler.pdb
文件 33792 2010-01-06 10:59 1\1\04\源代码以及测试文件\LRcompiler.ncb
文件 766 2010-01-06 10:58 1\1\04\源代码以及测试文件\LRcompiler.plg
文件 48640 2010-01-06 10:59 1\1\04\源代码以及测试文件\LRcompiler.opt
文件 528 2010-01-06 10:59 1\1\04\源代码以及测试文件\LRcompiler.dsw
文件 94 2009-06-21 16:20 1\1\05\2.txt
文件 6766 2009-06-21 14:22 1\1\05\if.cpp
文件 0 2009-06-21 12:59 1\1\06\bianyi\build\classes\.netbeans_automatic_build
文件 8 2009-06-21 12:59 1\1\06\bianyi\build\classes\bianyi\bianyi.rs
............此处省略279个文件信息
相关资源
- 计算机组成原理基于cop200课程设计 写
- 计算机网络课程设计,校园网的设计
- 单片机课程设计:数字电压表8路通道
- 信息安全基础课程设计实验报告
- PIC CCS C编译器使用手册
- 酒店客房管理系统数据库课程设计1
- opencv3.4.3 mingw32编译
- 网络互联课程设计
- UML软件建模技术期末课程设计_教学管
- EDA课程设计带完整设计报告.zip
- 微机原理抢答器(双数码管)课程设
- 嵌入式系统课程设计报告--多功能电子
- 嵌入式系统课程设计--多功能电子钟设
- 汇编51单片机密码锁含论文、程序、
- win10 VS2017 编译成功的openssl 32位和64位
- 数据结构课程设计报告(最小生成树
- 操作系统课程设计报告(进程控制与
- 河北工业大学编译原理实验报告及源
- 车牌识别课程设计,能运行,模板匹
- 《数字电路课程设计及实验》李维 主
- GDAL,geos联合编译的库,版本为1.8.0
- Authorware 多媒体 课程设计
- 就爱江湖专用OD.zip
- 编译原理陈火旺版共十章ppt讲义
- 网页课程设计
- 2048游戏的WINDOWS SDK实现 面向对象
- libevent-2.1.8-stable for iOS 包含静态库与
- 整套软件工程课设文档和程序
- tracert课程设计
- 广东海洋大学网络工程课程设计
评论
共有 条评论