资源简介
实现词法,语法,语义翻译器,程序中包含转移函数,生成四元式
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#define S 0;
#define R 1;
#define ACC 2;
#define AND 0
#define BEGIN 1
#define DO 2
#define ELSE 3
#define END 4
#define FOR 5
#define IF 6
#define NOT 7
#define OR 8
#define PROG 9
#define READ 10
#define THEN 11
#define TO 12
#define WHILE 13
#define WRITE 14
#define VAR 15
#define ID 16
#define INTEGER 17
#define REAL 18
#define PLUS 19
#define MINUS 20
#define MULTI 21
#define RDIV 22
#define EQ 23
#define LT 24
#define GT 25
#define LE 26
#define GE 27
#define NE 28
#define LR_BRAC 29
#define RR_BRAC 30
#define COMMA 31
#define ASSIGN 32
#define SEMIC 33
#define COLON 34
#define TRUE 35
#define FALSE 36
#define NUMBER 37
#define LS_BRAC 38
#define RS_BRAC 39
#define ARRAY 40
#define OF 41
#define PROC 42
#define CALL 43
#define RETURN 44
#define VOID 45
#define ENDING 46
#define P 47
#define D 48
#define List 49
#define SS 50 //from S
#define Sp 51 //from S‘
#define SB 52
#define Lp 53
#define T 54
#define L 55
#define Left 56
#define PList 57
#define E 58
#define ET 59
#define EEp 60
#define EF 61
#define ETp 62
#define B 63
#define BE 64
#define BT 65
#define BEp 66
#define C 67
#define EList 68
#define M_d 69
#define M_bool 70
#define M_con 71
#define N_con 72
#define M_for 73
#define wordnum 47;
using namespace std;
typedef int type;///属性
typedef int state;///状态
typedef int pos;///中间变量位置
typedef struct{
string type;///“real“/“integer“
int int_val;
double real_val;
}number_val;
typedef struct{
type typ;///词的属性
int pos;///变量位置
void * ptr;///指向中间变量属性
number_val * num_ptr;///指向数字属性值
}SIGN;
///---------LexicalAnalyzer------------
/*typedef struct{
char name[30];
char type[10];
int value;
}id;*/
//id variable[200];
int int_cnt=0;
int int_buf[1000];
int real_cnt=0;
double real_buf[1000];
int cnt=0;///统计句子长度
SIGN buff[200];///读入句子缓冲区
int id_cnt=0;///记录变量数量
string id_name[1000];///记录变量名
///---------SyntaxAnalyzer-------------
typedef struct{
string pro;///产生式
int left;///产生式左边
int num;///产生式右边符号数
}production;
state state_stak[1000];///存放状态的栈
void * ptr_stak[1000];///存放对应符号栈的中间变量具体是哪个的栈
SIGN sign_stak[1000];///存放符号的栈
int top=0;
//SIGN buff[50];///缓冲区
int buff_len=0;///输入句子长度
state action[141][47][2];///语法分析表
production prod[60];///产生式
state got[141][30];///转移函数
///---------SemanticAnalyzer-----------
///---------assignment-----------------
typedef struct{
string type;///(“real““integer““array“)
string array_type;///数组类型
int length;///数组长度
}var_type;
typedef struct id_INFO{
string id;///变量名
var_type type;///变量类型
int addr;///变量地址
id_INFO * next_id;///指向hash表中下一个变量
}id_info;
id_info * id_list[211];
typedef struct{
string name_list[10];///一次支持最多10个变
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 799758 2015-05-21 12:45 SemanticAnalyzer_v2\bin\Debug\SemanticAnalyzer_v2.exe
文件 645 2015-05-21 12:45 SemanticAnalyzer_v2\LexcialOut.txt
文件 145143 2015-05-21 12:45 SemanticAnalyzer_v2\main.cpp
文件 309727 2015-05-21 12:45 SemanticAnalyzer_v2\obj\Debug\main.o
文件 1142 2015-05-14 22:41 SemanticAnalyzer_v2\SemanticAnalyzer_v2.cbp
文件 337 2015-05-21 12:35 SemanticAnalyzer_v2\SemanticAnalyzer_v2.depend
文件 2107 2015-05-17 22:50 SemanticAnalyzer_v2\SemanticAnalyzer_v2.layout
文件 277 2015-05-21 12:45 SemanticAnalyzer_v2\SemanticOut.txt
文件 2068 2015-05-21 12:45 SemanticAnalyzer_v2\SyntaxOut.txt
文件 235 2015-05-21 12:21 SemanticAnalyzer_v2\test.txt
文件 388 2015-05-20 21:07 SemanticAnalyzer_v2\test_all.txt
目录 0 2015-05-21 12:45 SemanticAnalyzer_v2\bin\Debug
目录 0 2015-05-21 12:58 SemanticAnalyzer_v2\obj\Debug
目录 0 2015-05-14 22:42 SemanticAnalyzer_v2\bin
目录 0 2015-05-14 22:42 SemanticAnalyzer_v2\obj
目录 0 2015-05-21 12:58 SemanticAnalyzer_v2
----------- --------- ---------- ----- ----
1261827 16
相关资源
- Windows(Win10/8/7)环境GCC编译器
- c语言写的编译器
- 基于语法制导翻译的表达式转换编译
- CMM编译器(用C#写的一个c语言子集的
- 自制c语言编译器
- 用c语言编写的类Pascal语言的简易编译
- 类C语言编译器,基本上实现了主要功
- C++实现简单编译器
- c++语言别写的编译器 有词法分析 语法
- 简单编译器 编译技术课程设计源代码
- C语言编译器289297
- LR1分析法C语言子集编译器
- 简单C语言语义分析
- tiny小型编译器代码及实现
- C++ 小型编译器
- 编译原理课程设计之编译器
- 小型编译器的设计C语言实现
- 简单的编译器(c++实现)
- C 语言编译器源码
- c编译器,将C语言编译成masm32汇编语言
- matlab2013a/b vs2013支持
- 简单编译器
- c语言实现pl0编译器的扩充
- C语言编写的pl0语言编译器
- 编译原理Pascal语言编译器用C实现
- c编译器源代码
- 编译原理-简单编译器课程设计C语言源
- matlab2016b配置VS2017编译器mexopts补丁文
- 修改VB6的编译器C2.exe使它可以输出汇
- c 编译器 masm32 汇编 可自举
评论
共有 条评论