⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grama.h

📁 lalr1编译器
💻 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 + -