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

📄 lrprefix.h

📁 一门课程的proj
💻 H
字号:
#pragma once

/*-----------------------------*/
/*普通活前缀
/*-----------------------------*/
class prefix
{
public:
	prefix();

public:	
	void output();												//输出
	int getFirstSymbol();										//得到活前缀的下一个符号
	int getSecondSymbol();										//得到活前缀的下两个符号
	int isEnd();												//判断是否已经是规约	
	int testEqual(prefix * temp);								//测试前缀是否相同
	void setPrefix(prefix *src);								//复制前缀

public:
	int creation_name;											//产生式的代号
	int prefix_pos;												//点的位置
};
/*-----------------------------*/
/*LR活前缀
/*-----------------------------*/
class LRPrefix
{
public:
	LRPrefix(void);
	
	int testForwardExist(int temp);
	void addForwardSymbol(int temp);
	
	int testEqual(LRPrefix *temp);								//测试LR活前缀是否相同
	int testEffective();										//判断是否已经是最后的位置
	int testSymbolEqual(LRPrefix *temp);						//预测符号集合是否相等
	
	void setPrefix(LRPrefix *src);								//复制LR活前缀
	
	void output();												//输出

public:
	class prefix _prefix;										//前缀
	vector<int> _symbol;										//预测符
	int symbol_num;												//预测符数量
	int checked;												//是否用于求闭包
	int used;													//是否用于求状态转移
	int status_in;												//包含于某一个状态
	class LRPrefix * next;										//下一个LR活前缀
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -