📄 lrprefix.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 + -