lrprefix.h

来自「一门课程的proj」· C头文件 代码 · 共 51 行

H
51
字号
#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 + =
减小字号Ctrl + -
显示快捷键?