资源简介
基于tiny的小型编译器,包括词法分析,语法分析,转化成三地址码,最后转化成c语言代码,在c语言编译器上编译运行
代码片段和文件信息
#include
#include
#include
#include
#include
struct LRNode
{
int flag;
int num;
};
typedef struct CSNode
{
char data[40];
struct CSNode *firstchild*nextsibling*next*parent;
}CSNode*CSTree;
CSTree pT;
char pre[40];
int b;
CSTree t[100];//指针崭
int top3;
int S1[100];//状态栈
int S2[100];//符号栈
int top1;
int top2;
int mark1=1;
int mark2=1;
int count=0;
int Sif[100];//if栈
int topi=0;
int tmp=0;//:=临时变量标号Ttmp
char a[40];
int Srepeat[100];//repeat栈
int topr=0;
int linenumber=1;
char Difined[100][100];//用于存储已经定义的变量
int dif=0;
struct Gram
{
char ch;
int length;
};
int strstr1(char str[40]char ch)
{
for(int i=0;i {
if(str[i]==ch)
return 1;
}
return 0;
}
void Strprint(char str[20])
{
int i;
int l=strlen(str);
for(i=0;i {
if(str[i]==‘:‘)
break;
printf(“%c“str[i]);
}
printf(“\n“);
}
int Exchange1(char str[20])//非数字
{
int num;
if(!strcmp(str“if“)) num=0;
else if(!strcmp(str“then“)) num=1;
else if(!strcmp(str“end“)) num=2;
else if(!strcmp(str“else“)) num=3;
else if(!strcmp(str“repeat“)) num=4;
else if(!strcmp(str“until“)) num=5;
else if(!strcmp(str“read“)) num=6;
else if(!strcmp(str“write“)) num=7;
else if(!strcmp(str“:=“)) num=8;
else if(!strcmp(str“<“)) num=9;
else if(!strcmp(str“=“)) num=10;
else if(!strcmp(str“+“)) num=11;
else if(!strcmp(str“-“)) num=12;
else if(!strcmp(str“*“)) num=13;
else if(!strcmp(str“/“)) num=14;
else if(!strcmp(str“(“)) num=15;
else if(!strcmp(str“)“)) num=16;
else if(!strcmp(str“;“)) num=17;
else num=18;
return num;
}
int Exchange2(char ch)
{
int num;
if(ch==‘P‘) num=21;
else if(ch==‘S‘) num=22;
else if(ch==‘G‘) num=23;
else if(ch==‘I‘) num=24;
else if(ch==‘U‘) num=25;
else if(ch==‘A‘) num=26;
else if(ch==‘R‘) num=27;
else if(ch==‘W‘) num=28;
else if(ch==‘E‘) num=29;
else if(ch==‘B‘) num=30;
else if(ch==‘C‘) num=31;
else if(ch==‘O‘) num=32;
else if(ch==‘M‘) num=33;
else if(ch==‘T‘) num=34;
else if(ch==‘F‘) num=35;
return num;
}
void PrintCSTree(CSTree Tint i)//按凹入表形式打印输出树的元素i表示结点所在层次初次调用时i=0
{
int j;
CSTree q;
for(j=1;j<=i;j++) printf(“ “); //留出i个空格以表现出层次
if(!strcmp(T->data“<“))
{
printf(“op:“);
printf(“%s\n“T->data); //打印元素换行
}
else if(!strcmp(T->data“=“))
{
printf(“op:“);
printf(“%s\n“T->data); //打印元素换行
}
else if(!strcmp(T->data“+“))
{
printf(“op:“);
printf(“%s\n“T->data); //打印元素换行
}
else if(!strcmp(T->data“-“))
{
printf(“op:“);
printf(“%s\n“T->data); //打印元素换行
}
else if(!strcmp(T->data“/“))
{
printf(“op:“);
printf(“%s\n“T->data); //打印元素换行
}
else if(!strcmp(T->data“*“))
{
printf(“op:“);
printf(“%s\n“T->data); //打印元素换行
}
else if(strstr(T->data“:=“))
{
printf(“assign to:“);
Strprint(T->data); //打印元素换行
}
else
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 104 2009-12-29 10:33 编译原理课设(最终)\1.txt
文件 134 2009-12-29 10:35 编译原理课设(最终)\2.txt
文件 217 2009-12-29 10:36 编译原理课设(最终)\3.txt
文件 184 2009-12-29 10:36 编译原理课设(最终)\4.txt
文件 121 2009-12-29 10:36 编译原理课设(最终)\5.txt
文件 197 2009-12-29 12:22 编译原理课设(最终)\Clanguage.txt
文件 134 2009-12-24 17:07 编译原理课设(最终)\data.txt
文件 41984 2009-12-29 12:25 编译原理课设(最终)\Debug\vc60.idb
文件 61440 2009-12-29 12:25 编译原理课设(最终)\Debug\vc60.pdb
文件 254072 2009-12-29 12:25 编译原理课设(最终)\Debug\编译原理课设(最终).exe
文件 261192 2009-12-29 12:25 编译原理课设(最终)\Debug\编译原理课设(最终).ilk
文件 287684 2009-12-29 12:25 编译原理课设(最终)\Debug\编译原理课设(最终).pch
文件 459776 2009-12-29 12:25 编译原理课设(最终)\Debug\编译原理课设(最终).pdb
文件 63035 2009-12-29 12:25 编译原理课设(最终)\Debug\编译课程设计(最终).obj
文件 121 2009-12-29 12:22 编译原理课设(最终)\MidLan.txt
文件 469 2009-12-29 12:22 编译原理课设(最终)\so.txt
文件 104 2009-12-29 10:33 编译原理课设(最终)\测试用例\1.txt
文件 134 2009-12-29 10:35 编译原理课设(最终)\测试用例\2.txt
文件 217 2009-12-29 10:36 编译原理课设(最终)\测试用例\3.txt
文件 184 2009-12-29 10:36 编译原理课设(最终)\测试用例\4.txt
文件 121 2009-12-29 10:36 编译原理课设(最终)\测试用例\5.txt
文件 1328 2009-12-29 10:31 编译原理课设(最终)\测试用例\测试用例说明.txt
文件 1328 2009-12-29 10:31 编译原理课设(最终)\测试用例说明.txt
文件 4454 2009-12-29 12:25 编译原理课设(最终)\编译原理课设(最终).dsp
文件 548 2009-12-29 12:24 编译原理课设(最终)\编译原理课设(最终).dsw
文件 33792 2009-12-29 12:25 编译原理课设(最终)\编译原理课设(最终).ncb
文件 48640 2009-12-29 12:25 编译原理课设(最终)\编译原理课设(最终).opt
文件 2092 2009-12-29 12:25 编译原理课设(最终)\编译原理课设(最终).plg
文件 41159 2009-12-29 12:25 编译原理课设(最终)\编译课程设计(最终).cpp
目录 0 2009-12-29 12:25 编译原理课设(最终)\Debug
............此处省略5个文件信息
- 上一篇:C语言http客户端通信实现
- 下一篇:模拟 Linux 文件系统 C++
相关资源
- STM32F10实现照相功能照相机
- stm32实现高精度频率测定
- cubeMX设计实现stm32f407上的CAN及485的通
- 工程库实现面向对象编程
- 使用Qt实现Excel读取工具
- 对话框中实现浮动工具栏
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- SVM算法实现(源码+文档)
- 算法A律U律实现
- C++ STL实现
- C语言实现 设备信息管理系统
- 基于VSCode和CMake实现C++开发
- stm8l四按键状态机实现
- stm32 实现Fatfs对U盘文件操作(main.c)
- QR二维码C++源码 算法实现
- 链表实现学生管理系统(main.c)
- 银行家算法分配资源的模拟实现(m
- C语言编译器的设计与实现.doc
- 2048小游戏c语言实现
- 转 VC++ 实现电子邮件(Email)发送
- 使用 IBM Rational Systems Developer 和 Rati
- 23种设计模式(C++实现版本
- 扫描线多边形填充算法实现
- 可靠性试验数据处理方法与工程实现
- c++实现的文件上传服务器
- 一个C++实现的源代码行数统计工具
- 利用C++类实现PNG图像读写及显示
- TD-SCDMA测试仪中Iub接口实现RLC层信令解
评论
共有 条评论