资源简介
包含词法分析,语法分析,语义分析,中间代码产生,目标代码产生(C或者masm ) 初始语言为抽象语言,每个模块都有单独源码和exe文件,使用不同语言,自行选择所需模块
代码片段和文件信息
#include
#include
#include
using namespace std;
struct Tree
{
char string[40];
struct Tree * child;
struct Tree * brother;
struct Tree * nextaction;
}* head*p[10000];//语法树的定义
struct quad
{
char result[8];
char string[40];
}q[10000];//生成的三地址代码
int qnum=0;
char word[20];
struct Tree * TT;
char filepath[200];
char * newtemp() //建立一个新的节点
{
char *p;
p=new char[8];
char x[10];
int t=qnum;
int i=1;
p[0]=‘T‘;
itoa(tx10);
for(int j=0;x[j]!=‘\0‘;i++j++)
p[i]=x[j];
p[i]=‘\0‘;
return p;
}
void Getfirstword(char str[])//获取一个字符串中的第一个单词(只在分析read时调用)
{
int i=0j=0;
while(str[j]==‘ ‘)
{
j++;
}
while(str[j]!=‘ ‘&&str[j]!=‘\0‘)
{
word[i]=str[j];
i++;
j++;
}
word[i]=‘\0‘;
}
char * explain(struct Tree *t)//分析语法生成树
{
char * p=new char[40];
char string[40];
int num=qnumcount=qnumtem;
Getfirstword(t->string);
if(!strcmp(word“read“))//分析read
{
strcpy(q[num].resultnewtemp());
qnum++;
strcpy(pq[num].result);
strcpy(q[num].stringt->string);
if(t->nextaction!=NULL)
explain(t->nextaction);
}
else if(!strcmp(t->string“write“))//分析write
{
strcpy(stringexplain(t->child));
num=qnum;
strcpy(q[num].resultnewtemp());
qnum++;
strcpy(pstring);
strcpy(q[num].string“write “);
strcat(q[num].stringstring);
if(t->nextaction!=NULL)
explain(t->nextaction);
}
else if(!strcmp(t->string“if“))//分析if
{
strcpy(stringexplain(t->child));
num=qnum;
strcpy(q[num].resultnewtemp());
qnum++;
strcpy(pq[num].result);
strcpy(q[num].string“if “);
strcat(q[num].stringstring);
strcat(q[num].string“ goto “);
strcat(q[num].stringnewtemp());
explain(t->child->brother);
if(t->child->brother->brother!=NULL)
{
strcpy(q[qnum].resultnewtemp());
tem=qnum;
qnum++;
strcat(q[num].string“ else goto “);
strcat(q[num].stringnewtemp());
explain(t->child->brother->brother);
strcpy(q[tem].string“goto “);
strcat(q[tem].stringnewtemp());
}
else
{
strcat(q[num].string“ else goto “);
strcat(q[num].stringnewtemp());
}
if(t->nextaction!=NULL)
explain(t->nextaction);
}
else if(!strcmp(t->string“<“)||!strcmp(t->string“=“))//分析<和=
{
strcpy(pexplain(t->child));
strcat(pt->string);
strcat(pexplain(t->child->brother));
}
else if(!strcmp(t->string“+“)||!strcmp(t->string“-“)||!strcmp(t->string“*“)||!strcmp(t->string“/“))//分析+-*/
{
strcpy(pq[num].result);
strcat(pexplain(t->child));
strcat(p“ “);
strcat(pt->string);
strcat(p“ “);
strcat(pexplain(t->child->brother));
strcpy(q[qnum].resultnewtemp());
strcpy(q[qnum].stringp);
strcpy(pq[qnum].result);
qnum++;
}
else if(!strcmp(t->string“repeat“))//分析repeat
{
strcpy(pexplain(t->child));
strcpy(stringexplain(t->child->brother));
num=qnum;
strcpy(q[num].resultnewtemp());
qnum++;
strcp
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2013-12-18 13:35 编译原理\应用程序\cd
文件 0 2013-12-18 13:35 编译原理\应用程序\copy
文件 125 2014-01-09 16:35 编译原理\应用程序\eg1.txt
文件 75 2014-01-09 13:46 编译原理\应用程序\eg2.txt
文件 860672 2013-12-06 09:41 编译原理\应用程序\ffmpegsumo.dll
文件 9956864 2013-12-06 09:41 编译原理\应用程序\icudt.dll
文件 102400 2013-12-06 09:41 编译原理\应用程序\libEGL.dll
文件 873984 2013-12-06 09:41 编译原理\应用程序\libGLESv2.dll
文件 4000679 2013-12-06 09:41 编译原理\应用程序\nw.pak
文件 4208128 2013-12-06 09:41 编译原理\应用程序\nwsnapshot.exe
文件 482 2014-01-10 11:25 编译原理\应用程序\readme.txt
文件 39791563 2014-01-10 09:28 编译原理\应用程序\Tiny.exe
文件 6122 2014-01-10 22:18 编译原理\源程序\中间代码产生\qiuming.cpp
文件 4296 2014-01-10 22:19 编译原理\源程序\中间代码产生\qiuming.dsp
文件 520 2014-01-10 22:17 编译原理\源程序\中间代码产生\qiuming.dsw
文件 33792 2014-01-10 22:19 编译原理\源程序\中间代码产生\qiuming.ncb
文件 48640 2014-01-10 22:18 编译原理\源程序\中间代码产生\qiuming.opt
文件 248 2014-01-10 22:18 编译原理\源程序\中间代码产生\qiuming.plg
文件 224 2014-01-10 22:18 编译原理\源程序\中间代码产生\qiuming.txt
文件 891 2014-01-05 22:11 编译原理\源程序\中间代码产生\tree.txt
文件 45678592 2014-01-09 23:12 编译原理\源程序\目标代码产生\ipch\renurncomplex-f8a982de\renurncomplex-a86f33e.ipch
文件 600 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\cl.command.1.tlog
文件 22066 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\CL.read.1.tlog
文件 384 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\CL.write.1.tlog
文件 336390 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\Decompiler.obj
文件 1246 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\li
文件 2504 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\li
文件 658 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\li
文件 488 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\mt.command.1.tlog
文件 1124 2014-01-09 23:14 编译原理\源程序\目标代码产生\RenurnCOmplex\Debug\mt.read.1.tlog
............此处省略73个文件信息
相关资源
- 课程设计-机票预定系统
- 微波炉课程设计包涵程序,原理图,
- 网页制作代码+课程总结
- 数据结构 课程设计 中缀算术表达式求
- 数据结构课程设计----表达式类型的实
- 赋值语句翻译四元式
- 大学课程设计 组态王 停车场监控系统
- 数字图像处理课程设计 实验报告
- 思科网络课程设计_组建局域网
- 河北工业大学编译原理实验代码及实
- 网上书店后台管理系统
- 数据结构课程设计表达式类型的实现
- 设计模式课程设计之餐饮系统
- 数字逻辑课程设计 交通灯
- 自动控制原理位置随动系统课程设计
- 机械设计课程设计---设计带式输送机
- 2012年微机原理课程设计题目
- 餐饮管理系统数据库课程设计
- 数据结构课程设计——基于链表与哈
- 编译原理课程设计 while do循环语句翻
- 交通信号灯vhdl课程设计
- 编译原理课程设计do——while简单优先
- 南开大学编译原理课件及作业
- 操作系统课程设计 内存管理
- 华工往年编译原理试卷
- 单片机作息时间控制 课程设计
- MCP3421 STM32 Driver
- ADS1100 STM32 Driver
- 单片机89c52与MLX90614红外的测温程序
- stm32f103AES加密 cbc模式
评论
共有 条评论