资源简介

完整的词法、语法、语义程序源代码+实验报告(实现过程),参照蒋立源的《编译原理》

资源截图

代码片段和文件信息

/**************************************************************************************************/
//头文件声明
/**************************************************************************************************/
#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


评论

共有 条评论