#pragma once #include #include #include #include #include #include using namespace std::string_literals; using BNF = std::unordered_map>>; std::unordered_map> Reverse(BNF bnf); // unused now, remove? std::unordered_map> reverseFirst(BNF bnf); BNF SubBNF(const BNF& bnf, const std::string& top); bool isTerminal(const BNF& bnf, const std::string& symbol);