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

📄 grammar.h

📁 ll(1)文法,我们编译原理的课程设计实验报告,非常 好,得 A 的
💻 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 + -