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

📄 yacc.h

📁 编译原理实验中的yacc源码
💻 H
字号:
// yacc.h: interface for the YaccLike class.
#ifndef YACC_H_
#define YACC_H_

#include "SymbolTree.h"
#include "const_define.h"

typedef struct CFGSymbol{
	char symbol[MAX_SMB_LEN] ;
	CFGSymbol* next ; 
}CFGSymbol ;

typedef struct Prodution{
	char symbol[MAX_SMB_LEN] ;
	bool eps ;        //表示是否是一个空产生式
	CFGSymbol* firstSymbol ;
}Prodution ;

typedef struct Set{
	CFGSymbol* firstSymbol ;
}FirstSet, FollowSet ; 

class YaccLike{
	void readCFGFile(char*) ;
	void first() ;
	void follow() ;
	bool LL1Table() ;
	//void closure() ;
	//void closureSet() ;
	//void constructSLR() ;
	int isUTSymbol(char*) ;
	void writeToFile(char*, char*, Set*) ;
	void writeLL1File(char*) ;
	int addToSet(Set*, int, char*) ;
	template <class T>
	void Delete(T p, int k) ;
	
	int numProd ;					//产生式的个数
	int numUTSymbol ;				//非终结符的个数
	int numTSymbol ;				//终结符的个数
	class SymbolTree* Tree ;		//指向方法符号树的指针
	char prod[MAX][MAX_PROD_LEN] ;	//以字符串的形式保存产生式
	char tSymbol[MAX][MAX_SMB_LEN] ;	//以字符串的形式保存终结符
	char utSymbol[MAX][MAX_SMB_LEN] ;	//以字符串的形式保存非终结符
	Prodution prodution[MAX] ;		//以TOKEN字的形式保存产生式
	FirstSet firstSet[MAX] ;		//终结符的FIRST集
	FollowSet followSet[MAX] ;		//终结符的Follow集
	int** tableLL1 ;
public:
	void start() ;
	friend class SymbolTree ;		//声明class SymbolTree为友元类
	YaccLike(char*) ;
	~YaccLike() ;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -