?? status.h
字號(hào):
#pragma once
#define STATUS_MAX_NUM 500 //最大狀態(tài)數(shù)
/*-----------------------------*/
/*用于求一個(gè)狀態(tài)中的活前綴的棧
/*-----------------------------*/
class mystack
{
public:
mystack(void);
public:
void PopIn(LRPrefix *src); //進(jìn)棧
void PushOut(LRPrefix *dst); //出棧
int IsEmpty(); //??諜z測(cè)
LRPrefix* GetStackTop(); //得到棧頂元素
private:
class LRPrefix *content; //棧頂指針
};
/*-----------------------------*/
/*LR1分析表的狀態(tài)
/*-----------------------------*/
class status
{
public:
status(void);
public:
int PrefixExist(LRPrefix *src); //檢測(cè)這個(gè)LR1活前綴是否已存在
LRPrefix * addPrefix(LRPrefix *src); //將輸入的活前綴加入狀態(tài)并返回
void FindClosure(); //求該狀態(tài)的LR1活前綴閉包
void AddPossiblePrefix(status *father, int symbol); //表示從father狀態(tài)中移進(jìn)symbol符號(hào)之后得到的LR1活前綴
void output(); //輸出
public:
int number; //代表狀態(tài)編號(hào)
vector<LRPrefix> _prefix; //LR1活前綴容器針
int prefix_num; //LR1活前綴個(gè)數(shù)
};
/*-----------------------------*/
/*求狀態(tài)遷移的任務(wù)隊(duì)列
/*-----------------------------*/
class convert_queue
{
public:
convert_queue(void);
public:
void PopIn(LRPrefix *); //進(jìn)隊(duì)列
void PushOut(LRPrefix *); //出隊(duì)列
void AddStatus(status *); //將狀態(tài)中的LR1活前綴全部進(jìn)棧
int IsEmpty(); //隊(duì)列空檢測(cè)
void update(LRPrefix *);
private:
LRPrefix *first; //隊(duì)列頭指針
LRPrefix *last; //隊(duì)列尾指針
};
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -