资源简介
完整的词法、语法、语义程序源代码+实验报告(实现过程),参照蒋立源的《编译原理》
代码片段和文件信息
/**************************************************************************************************/
//头文件声明
/**************************************************************************************************/
#include
#include
#include
#include
#include
/**************************************************************************************************/
//宏定义
/**************************************************************************************************/
#define MAX_ID_LENGTH 50 //标识符长度
#define MAX_OPER_LENGTH 2 //符号长度
#define MAX_KEY_NUMBER 25 //关键字数目
#define MAX_OPERATOR_NUMBER 13 //符号数目
#define KEY_WORD_END “ending“ //关键字表结束标志
//助记符
#define BEGIN 1
#define END 2
#define IF 3
#define THEN 4
#define ELSE 5
#define ID 6
#define UCON 7
#define DIGIT 71
#define POINTER 72
#define OTHER 73
#define POWER 74
#define PLUS 75
#define MINUS 76
#define EndState 78
#define LT 8
#define LE 9
#define EQ 10
#define NE 11
#define GT 12
#define GE 13
#define IS 14
#define PL 15
#define MI 16
#define MU 17
#define DI 18
#define LP 19
#define RP 20
/**************************************************************************************************/
//数据结构定义
/**************************************************************************************************/
//单词内容
union WordContent
{
char id[MAX_ID_LENGTH]; //标识符
float ucon;//无符号数
char oper[2];//单个符号
};
//单词
struct Word
{
int sym; //助记符
union WordContent value;//值
}word;
//行列定位器
struct Location
{
int row; //行
int col; //列
}location;
/**************************************************************************************************/
//全局变量声明
/**************************************************************************************************/
char* keyWordTable[MAX_KEY_NUMBER]={“BEGIN““END““IF““THEN““ELSE“KEY_WORD_END};//关键字表
char* operatorTable[MAX_OPERATOR_NUMBER]={“LT““LE““EQ““NE““GT““GE““IS““PL““MI““MU““DI““LP““RP“};//单个符号表
//无符号数识别用
int wnped; //表征元素
int CurrentState;//当前状态
//读写指针
FILE* r_fp;
FILE* w_fp;
/**************************************************************************************************/
//函数声明
/**************************************************************************************************/
void initGlobal(); //初始化全局变量
void setLocation(char ch);//读取了字符,定位行列
void scanner();//扫描器
bool ispoint(char ch); //判断是否为小数点
int lookUp(char* token);//查询是否为关键字
void out();//输出
void reportError(); //报错程序
void LEX(); //一个无符号数的识别
int GetChar(); //识别当前字符属于无符号数的哪一部分、类型
void EXCUTE(int stateint symbol); //识别状态、接受动作、状态转移
void HandleError();
/**************************************************************************************************/
//主函数
/**************************************************************************************************/
void main()
{
//初始化全局变量
in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10415 2014-12-24 22:31 编译原理实验\源程序\词法分析程序.cpp
文件 18330 2014-12-25 22:17 编译原理实验\源程序\语义分析程序.cpp
文件 14102 2014-12-25 21:21 编译原理实验\源程序\语法分析程序.cpp
文件 143356 2014-12-25 22:31 编译原理实验\词法分析程序实验报告.docx
文件 184601 2014-12-25 22:29 编译原理实验\语义分析程序实验报告.docx
文件 403105 2014-12-25 22:28 编译原理实验\语法分析程序实验报告.docx
目录 0 2015-10-04 23:30 编译原理实验\源程序
目录 0 2015-10-04 23:30 编译原理实验
----------- --------- ---------- ----- ----
773909 8
相关资源
- librdkafka win7 64位 vs2015编译Release版本
- 编译原理实验:词法分析,语法分析
- 吉林大学编译原理课件
- delphi 反编译工具 源码
- 编译好的json_lib.lib 包含64位,32位,头
- frcc.exe fastreport编译中文没乱码
- 编译原理龙书答案
- 编译原理 第三章课后习题答案
- 易语言变量和数组的编译原理
- Kuka库卡机器人编程语法进阶
- Win10安装MTK编译环境说明及补丁
- dwsurvey编译好的war包
- 编译原理语法分析器、词法分析器
- ffserver(windows下编译32位)
- 山东大学编译原理PL/0语言 compiler实验
- PB反编译大师V2012.12.10
- opencv3.0交叉编译用parallel.cpp
- windows上自己编译的最新的ffmpeg库
- arcpy语法教程入门以及ArcGIS的脚本构建
- SharpZipLib 源代码和重新编译后的dll文
- FOR循环语句的翻译程序设计简单优先
- BCH编译码程序
- NFA的确定化NFA->DFA完整可运行代码
- FFmpeg-3.1 windows vs2013编译动态库静态库
- 物业费管理系统源码超详细注释附文
- pl/0编译器 语法分析
- 奇迹sfGM工具源码仓库工具可编译
- 哈工大威海编译原理实验报告和源代
- 哈工大威海-编译原理实验报告和源码
- Ultraedit环境下配置verilog语法高亮的字
评论
共有 条评论