// LL1 语法分析器 #ifndef LL1_H #define LL1_H #include "grammar.h" using namespace std; class LL1:public Grammar{ public: LL1(); ~LL1(); bool IsLL1(); // 判断该文法是否为 LL1 文法 void build_LL1_predict(); // 构建 LL1 的预测分析表 void print_LL1_predict(); // 打印 LL1 的预测分析表 void build_LL1_grammar(); // 构建规约序列 void print_LL1_grammar_log(); void fileout_LL1_grammar_log(string file_name); private: unordered_map> select; // 计算符号的 SELECT 集合 unordered_map> LL1_predict; // LL1 的预测分析表 vector LL1_grammar_log; // 规约序列 int insert_rule(pair>& new_rule); // 增加新的规则 }; #endif // !LL1_H