www.pudn.com > ll1forwin.zip > 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 P;
CanEmpty * pCanEmptyTable;
int * pPredictTable;
vector FirstSet;
vector FollowSet;
vector 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);
};