?? ll1_analyser.h
字號:
//LL1_Analyser.h
#pragma once
#include "Grammar.h"
using namespace std;
class LL1_Analyser
{
public:
LL1_Analyser(const Grammar &grammar);
~LL1_Analyser() {} ;
void show_first_set(); //顯示FIRST集
void show_follow_set(); //顯示FOLLOW集
void show_predict_set(); //顯示PREDICT集
void show_LL_Table(); //顯示LL1分析表
void show_derives_lambda(); //顯示能推出空的非終極符集合
map< pair<nonterminal,terminal>, int > LL_Table; //LL1分析表
vector< set<symbol> > predict; //PREDICT集
protected:
Grammar g; //待分析的文法
map< symbol, set<symbol> > first; //FRIST集
map< symbol, set<symbol> > follow; //FOLLOW集
map< symbol, bool > derives_lambda; //能推出空的非終極符集合
void mark_lambda(); //找出能推出空的非終極符
set<symbol> compute_first (const vector<symbol> &right); //計算一個產(chǎn)生式的FIRST集
void fill_first_set (); //計算所有非終極符的FIRST集,并填入FIRST的MAP
//內(nèi)部函數(shù),找出以非終極符vt為左部,以vt為右部第一個字符的產(chǎn)生式是否存在
bool _find_production(const nonterminal &vn, const terminal &vt);
void fill_follow_set ();//計算所有非終極符的FOLLOW集,并填入FOLLOW的MAP
void fill_predict_set ();//計算所有產(chǎn)生式的PREDICT集,并填入PREDCIT的MAP
void fill_LL_Table();//根據(jù)PREDICT集,計算LL1分析表
};
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -