[copy]
This commit is contained in:
parent
0600b113d6
commit
936e9ea07d
|
|
@ -12,6 +12,7 @@
|
|||
LL1::LL1()
|
||||
{
|
||||
read_grammar();
|
||||
|
||||
init_grammar_set();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ void Grammar::read_grammar() {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
string buf;
|
||||
string arrow = "->";
|
||||
string farrow;
|
||||
|
|
@ -77,6 +78,7 @@ void Grammar::read_grammar() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// 符号集 和 非终结符 去重
|
||||
set<string> ssymbols(symbols.begin(), symbols.end());
|
||||
symbols.clear();
|
||||
|
|
@ -158,8 +160,7 @@ void Grammar::init_grammar_set()
|
|||
{
|
||||
string symbol;
|
||||
|
||||
|
||||
|
||||
//system("pause");
|
||||
// 对符号集中各符号进行推导 是否可以到达 $ 空符号
|
||||
for (int i = 0; i < symbols.size(); i++) {
|
||||
symbol = symbols[i];
|
||||
|
|
@ -167,6 +168,7 @@ void Grammar::init_grammar_set()
|
|||
symbol.clear();
|
||||
}
|
||||
|
||||
//system("pause");
|
||||
// 初始化符号在产生式的 出现 依赖 情况
|
||||
init_appears_depend();
|
||||
|
||||
|
|
@ -184,11 +186,13 @@ void Grammar::init_grammar_set()
|
|||
|
||||
// 初次遍历所有符号 生成初始的 FOLLOW 集
|
||||
|
||||
|
||||
// 构建 start 的 FOLLOW 集
|
||||
follow[start] = this->symbol_infer_follow(start);
|
||||
follow[start].push_back("$");
|
||||
queue.push_back(start);
|
||||
|
||||
|
||||
// 构建除 start 的 FOLLOW 集
|
||||
for (int i = 0; i < symbols.size(); i++) {
|
||||
symbol = symbols[i];
|
||||
|
|
|
|||
|
|
@ -48,12 +48,13 @@ int main(int argc, char** argv) {
|
|||
//printDFA(dfa);
|
||||
DFA minimizedDFA = minimizeDFA(minimizeDFA(dfa));
|
||||
removeUnreachableStates(minimizedDFA);
|
||||
//printDFA(minimizedDFA);
|
||||
printDFA(minimizedDFA);
|
||||
|
||||
cout<<"DFA FINISH"<<endl;
|
||||
int i = 0;
|
||||
try{
|
||||
cout<<"LL1 START"<<endl;
|
||||
for (auto input : inputs) {
|
||||
cout<<outputs_grammar[i]<<endl;
|
||||
LL1 ll;
|
||||
//ll.print_grammar_set();
|
||||
|
||||
|
|
@ -64,7 +65,7 @@ int main(int argc, char** argv) {
|
|||
ll.build_LL1_predict();
|
||||
|
||||
|
||||
//ll.print_LL1_predict();
|
||||
//ll.print_LL1_predict();噢
|
||||
ll.get_token_strings(token_strings);
|
||||
|
||||
|
||||
|
|
@ -77,22 +78,9 @@ int main(int argc, char** argv) {
|
|||
|
||||
//ll.print_LL1_grammar_log();
|
||||
cout << endl;
|
||||
cout<<outputs_grammar[i]<<endl;
|
||||
cout<<"end"<<endl;
|
||||
i++;
|
||||
}
|
||||
cout<<"LL1 FINISH"<<endl;
|
||||
}
|
||||
catch(...){
|
||||
cout<<"FINAL ERROR";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue