📄 analyze.h
字号:
#pragma once
#define STRING_SIZE 120//标示符的最大长度
/*-----------------------------*/
/*词法分析器
/*-----------------------------*/
class Analyze
{
public:
Analyze(void);
void Close();
public:
int getNextWord(); //词法分析器获取下一个符号
private:
int StepForward(); //获取下一个符号
int IsLetter(); //判断是否字母
int IsDigit(); //判断是否数字
int Concat(); //连接字符串
int Reserve(); //检查保留字串
void Retract(); //回溯
int InsertID(); //新增标识符
int CheckIDExist(); //检查标识符串
void ProcError(); //输出错误信息
private:
FileReader fr; //文件读取
char ch; //读取一个字符
char strToken[150]; //暂存字符串
char ID[150][150]; //用来存放自定义的标识符
int size; //标识符的个数
};
/*-----------------------------*/
/*LR分析器栈中状态信息的项目
/*-----------------------------*/
class anaStatus
{
public:
anaStatus();
public:
int status_num;//状态号
class anaStatus *next;//下一个状态
};
/*-----------------------------*/
/*LR分析器栈中符号信息的项目
/*-----------------------------*/
class anaSymbol
{
public:
anaSymbol();
public:
int symbol;//符号代码
class anaSymbol *next;//下一个符号
};
/*-----------------------------*/
/*LR分析器的栈,记录了状态历史和符号历史信息
/*-----------------------------*/
class anaStack
{
public:
anaStack();
public:
void PopIn(anaStatus *src);
void PushOut(anaStatus *dst, int num);
int IsEmpty();
void outputStatus();
void PopSymbolIn(anaSymbol *src);
void PushSymbolOut(anaSymbol *dst, int num);
int IsSymbolEmpty();
void outputSymbol();
public:
class anaStatus *content;
class anaSymbol *_symbol;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -