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 + -
显示快捷键?