📄 commondef.h
字号:
//文件说明:这个文件中包括一些在整个程序中用到的公用部分的定义
#ifndef COMMON_DEF
#define COMMON_DEF
//**********************************************************
typedef int Status;
//LL(1)分析表元素结构类型定义
typedef struct _Elem{
char notTerminals[3]; //non-terminals
char terminal; //Terminals
char replace[10]; //the string to be placed and put to the top of the analstack
int nextStep; //P or N
}Elem;
typedef Elem * LElem;
//LR(0)分析表元素结构类型定义
typedef int Type; //指示LR(0)的action动作type的类型 0:移进 1:归约 3:分析over
typedef struct _LRElem
{
CString statusPrev; //指示前一分析栈栈顶状态
char chInput; //输入字符(终结符)
Type type; //MOVE_IN, DEDUCE, or ACC or NOT_SUPPORT
int nNum; //如果是移进的话,指出(status,chInput)对应的下一状态,如果是归约的话,指出要采用第几条归约规则
} LRElem;
//LR(0)的归约规则结构类型定义
typedef struct _Regulation
{
CString left; //规则的左部
CString right; //规则的右部
} Regulation;
//LR(0)的GoTo表元素结构类型定义
typedef struct _ElemGoto
{
CString statusPrev; //分析栈的前一状态
CString symbol; //符号栈中的栈顶符号
CString statusNext; //下一状态
} ElemGoto;
//***********************************************************
//************************************************************
//宏定义
#define OK 0
#define FAIL -1
#define END_OF_INPUT -2 //输入结束
#define BEGINNING_OF_INPUT -3
#define P 1 //在LL(1)中指示动作状态为重复读字符
#define N 2 //在LL(1)中指示动作状态为读下一字符
#define ACC 3 //指示分析结束
#define TABLE_LENGTH 26 //LL(1)的分析表的长度
#define ASM_CODE_LENGTH 255 //编译到汇编码时的每条asm code的最大长度
#define MOVE_IN 0 //指示LR(0)的action表的动作类型 ,表示移进
#define DEDUCE 1 //表示归约
#define NOT_SUPPORT -2
//************************************************************
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -