📄 grama.h
字号:
/***********************/
/* CGRAMA类的定义 */
/***********************/
#include "List.h"
#include "Gener.h"
#include "Queue.h" // Added by ClassView
class CGRAMA
{
public:
void PrintTable();
void FirstX(int *array,List<int> &first_set);
void First(int symbol,List<int> &first_set);
void PrintRuleTable();
char Decode(int num);
void OutPut(List<CItem> &list);
void GetSymbol(List<CItem> &item_set,List<int> &symbol_list);
void PrintDFA();
void FromItoJ(CItem &item,List<CItem> &J);
int GO(const List<CItem> &I,int X,List<CItem> &J); //GO(I,X)函数
void ToItemSet(); //从文法转化为项目集
void Closure(List<CItem> &kernel); //COLSURE(I)
int EncodeVn(char ch);
int EncodeVt(char ch);
void Encode(char *&buf);
CGRAMA(); //默认构造函数
virtual ~CGRAMA();
protected:
int *vt; //终结符的整数数组
int *vn; //非终结符整数数组
char *vtstring; //终结符的对应字符串
char *vnstring; //非终结符的对应字符串
int gncount; //产生式个数
List<Gener> gn_list; //产生式的链表
List<CItem> item_list; //项目链表
int vtnum; //非终结符个数
int vnnum; //终结符个数
const int start_symbol; //文法开始符号
Queue<List<CItem> > state_queue; //存放最后DFA的所有状态
List<CItem> convert_list; //DFA转换关系表
List<CItem> rule_list; //归约规则列表
};
inline int GetStrLen(char *&buf)
{
char *pS=buf;
for(int i=0;*pS!=-3;pS++,i++);
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -