grammar.h
来自「通过VC 2008编译的LL1语法分析程序」· C头文件 代码 · 共 57 行
H
57 行
#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 + =
减小字号Ctrl + -
显示快捷键?