?? ll1_recognizer.h
字號:
//LL1_Recognizer.h
#pragma once
#include "Grammar.h"
#include "Action.h"
#include "SymbTable.h"
using namespace std;
//此為LL1語法分析驅動器,可以通過文法,TOKEN序列和LL1分析表,判定語法是否正確,同時驅動動作.
class LL1_Recognizer
{
public:
LL1_Recognizer(Grammar *grammar,map< pair<nonterminal,terminal>, int > table,
list<TOKEN> *tokenlist):g(grammar),LL_Table(table),tlist(tokenlist),act(grammar)//,sym_table_num(0),temp_num(0)
{
cout<<"Recognizing..."<<endl;
lldriver();
}
~LL1_Recognizer() {};
void print_table() {act.symbtable.print_table();} //輸出符號表
protected:
list<TOKEN> *tlist; //TOKEN序列
Grammar *g; //文法
map< pair<nonterminal,terminal>, int > LL_Table; //LL1分析表
void lldriver(); //LL1語法驅動器
void error(list<TOKEN>::iterator pos,nonterminal X); //報告出錯
stack<symbol> sym_stack; //語法分析棧
//for semantic analyse
list<TOKEN>::iterator token_pos; //指向當前分析的TOKEN的迭代器
_Action act; //動作文法
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -