⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analyze.h

📁 一门课程的proj
💻 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 + -