资源简介
基于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++
相关资源
- 利用C++哈希表的方法实现电话号码查
- 用回溯法解决八皇后问题C语言实现
- 操作系统课设 读写者问题 c语言实现
- 3des加密算法C语言实现
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- 编译原理c语言编译器
- 线性回归算法c语言实现
- 用C语言实现的一个打字游戏
- C语言实现的DES对称加密算法
- 用C语言实现高效日志
- 用VC6.0实现多边形扫描线填充算法
- C语言实现十进制转十六进制
- 串口通讯技术实现--两台pc机通过串口
- 文件传输和聊天程序(c语言实现)
- 基于C语言实现的网络爬虫(搜索引擎
- VC++实现CMD命令执行与获得返回信息
- STM32读CS1237实现秤重测量
- Qt的纽带风格界面实现(Office Ribbon风
- qt 实现画板
- Qt 实现心电图
- Qt实现 屏幕截图
- qt cmd实现ping
- QT实现USB摄像头拍照
- 使用QWT库实现接收串口数据,并根据
- 简易web服务器的设计与实现
- STM32 LIN通信数据发送实现 测试通过
- 程序案例 利用LabVIEW实现串口通讯
- STM32F10实现照相功能照相机
- stm32实现高精度频率测定
评论
共有 条评论