📄 grammar.h
字号:
#pragma once
#include "Set.h"
#include "Precept.h"
class Grammar
{
public:
Grammar(void);
~Grammar(void);
Grammar(const Grammar & g);
const Grammar operator = (const Grammar & g);
void SetVt(string vt);
void SetVn(string vn);
void SetStart(char start);
void AddPrecept(string p);
void GeneratePredictTable();
bool IsGrammarLegal();
string OutputHTML();
void Output(char * pFilename);
bool IsInVn(char cChar);
bool IsInVt(char cChar);
char GetStart();
Precept GetToDo(char vn, char vt);
bool IsLegalLL1Grammar();
private:
enum CanEmpty { CANTRUE, CANFALSE, UNDEFINED };
Set Vt;
Set Vn;
char cStart;
vector <Precept> P;
CanEmpty * pCanEmptyTable;
int * pPredictTable;
vector <Set> FirstSet;
vector <Set> FollowSet;
vector <Set> SelectSet;
int nVt;
int nVn;
int nP;
int iIsLL1;
void MakeCanReachEmptyTable();
void CalculateFirstSet();
void CalculateFollowSet();
void CalculateSelectSet();
void MakePredictTable();
bool CanReachEmpty(string str);
bool CanReachEmpty(char cChar);
Set GetFirstSet(char cChar);
Set GetFirstSet(string str);
Set GetFollowSet(char cChar);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -