📄 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 + -