资源简介
基于c++编写的编译程序 有词法分析 语法分析 语义分析以及目标代码生成
代码片段和文件信息
// C_Compiler1.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include
#include
#define MYCOMPILER
#define MAXWORD 10 //token和keyword最大长度
#define MAXLENGTH 30
#define MAXC 50 //符号表的最大容量
#define MAXOP 500 //最大的操作指令条数
#define MAXLEV 10 //最大的层数
#define MAXF 10 //最多的实常量数
#define MAXCASE 50
#define MAXGO 100 //最大运行栈
#define MAXGOLEV 10 //运行栈最大的调用层
#define MAXS 5 //printf语句中最多的转换字符数
#define MAXERROR 50
#define kk 12 //关键词个数
char *Keyword[]={ //关键字
“const““int““char““void“
“main““if““else“ “do““while“
“scanf““printf“ “return“
};
char *oprate[]={ //操作码
“““““JME““JMC““JMP““CAS“
“RED““EXF““WRI““““:+““:-“““
“:*““:/““MUS“ “j>“ “j<“ “j==“
“j!=“ “j>=“ “j<=““““CAL““BEGIN“
“END““:=“
};
union Cha{
int num;
char cischar;
};
struct Character{ //符号表
char *name ;
int typelevadrkind;
Cha uchar;
};
struct opr{ //中间代码
int opop1op2result;
};
struct aopr{
int anumad1;
};
char* err_msg[] = //定义出错提示信息
{
/*0*/ ““
/*1*/ “标识符或数字过长“
/*2*/ “非法单词“
/*3*/ “缺少符号“
/*4*/ “缺少类型标识符“
/*5*/ “字符串过长或缺少符号“
/*6*/ “此处缺少运算的因子“
/*7*/ “符号表出界“
/*8*/ “标识符重复定义“
/*9*/ “此处应有‘=‘“
/*10*/ “变量使用出错“
/*11*/ “无返回值函数不能用在此处“
/*12*/ “缺少“}”“
/*13*/ “缺少‘‘“
/*14*/ “无返回值函数不能有return语句“
/*15*/ “无主函数“
/*16*/ “函数调用时参数个数不对“
/*17*/ “缺少‘(‘“
/*18*/ “缺少‘)‘“
/*19*/ “编译生成指令数过多“
/*20*/ “标识符未定义“
/*21*/ “转换符用法错误为非变量型数据赋值“
/*22*/ “缺少“;”“
/*23*/ “缺少“{”“
/*24*/ “运行栈泄漏“
/*25*/ “函数调用超过了最大的层次数“
/*26*/ “函数返回值与函数类型不匹配“
/*27*/ “此处应为标识符“
/*28*/ “变量的类型和值的类型不匹配“
};
FILE *FIN *FOUT; //输入输出文件指针
FILE *EquFout; //四元式文件
FILE *KeyWord; //关键字文件
FILE *Oprate; //操作符文件
FILE *Token;
char Word[MAXWORD]; //store token
int num; //store 整数
char sisstring[MAXLENGTH]; //store 字符串
int sym; //store 标号;
char cischar; //store 字符
char fp[20]; //输入文件名
int linenum=1; //源程序行号
char name[MAXC][MAXWORD]; //存标识符
int NumOfC=1; //符号表内元素的个数
Character Char[MAXC]; //符号表
int numoflev[MAXLEV]; //各层的表中变量数
opr opra[MAXOP]; //存指令
aopr aop[MAXOP];
int oprnum; //指令数
int go[MAXGO]; //运行栈
int dl[MAXGOLEV]bl[MAXGOLEV]; //运行栈辅助指针
int errornum=0error[MAXERROR]errorline[MAXERROR];
int gonum=0dlnum=0blnum=0;
int type=0;
int snum=0;
int start;
int lev=1;
int breakoprIsbreak=0;
int typeofexp1=11 typeofexp2=12;
int oprnumcase=0;
int Isret=1;
int adr[MAXC];
int ad=0;
int ab=0;
int gsym[MAXC];
int sy=0;
int A=0;
int adr1[MAXC];
//子函数说明
int getsym(); //词法分析程序
int enter(int levint typeint kind); //把变量填入符号表
//int constdeclaration(); //分析常量说明部分
int program(); //分析程序
int charcheck(); //检查标识符是否重复定义
//int constdefine( int type ); //分析常量定义
int vardefine( int type);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 59392 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\2_实验项目指导书.doc
文件 35328 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\5_实验任务下达书.doc
文件 94208 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\5_实验设计方案.doc
文件 155648 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\C_compiler.exe
文件 511036 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\C_compiler.ilk
文件 429056 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\C_compiler.pdb
文件 0 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\equfout.txt
文件 112 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\keyword.txt
文件 205 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\oprate.txt
文件 85 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\readme.txt
文件 88 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\test.txt
文件 78 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\test1.txt
文件 78 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\test2.txt
文件 120 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\exe\test3.txt
文件 37198 2007-07-05 00:20 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.cpp
文件 3449 2007-07-04 23:49 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.dsp
文件 545 2007-07-05 00:41 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.dsw
文件 41984 2007-07-05 00:41 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.ncb
文件 48640 2007-07-05 00:41 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.opt
文件 766 2007-07-05 00:21 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.plg
文件 4496 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.vcproj
文件 1427 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.vcproj.81263482F9D9484.Administrator.user
文件 1427 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.vcproj.81263482F9D9484.aijun.user
文件 1407 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\C_compiler.vcproj.AIJUN.aijun.user
文件 19250 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\Debug\BuildLog.htm
文件 200809 2007-07-05 00:21 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\Debug\C_compiler.exe
文件 403 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\Debug\C_compiler.exe.em
文件 468 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\Debug\C_compiler.exe.em
文件 385 2007-02-11 01:01 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\Debug\C_compiler.exe.intermediate.manifest
文件 215528 2007-07-05 00:21 灏忓瀷C璇█缂栬瘧鍣ㄨ璁1]\C_compiler\project\Debug\C_compiler.ilk
............此处省略26个文件信息
- 上一篇:数据结构与算法分析C++版答案
- 下一篇:数值分析迭代法解非线性方程组c语言程序
相关资源
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- Beginning C++17 From Novice to Professional
- C++ STL实现
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- 基于VSCode和CMake实现C++开发
- c++语法查询工具
- c++ 账务系统源码
- GBT 28169-2011 嵌入式软件 C语言编码规范
- c++ 猜拳小游戏
- XUnZip Zip解压缩.rar
评论
共有 条评论