#ifndef PARSER_H #define PARSER_H #ifndef NULL #define NULL 0 #endif #include "ParseRule.h" #include "ParseAction.h" #include "Symbol.h" #include "StringReader.h" #include #include #include #include #include #include class Parser { public: Parser(); ~Parser(); std::string intToString(int theInt); void loadGrammer(std::string grammerInputString); void createStateSet(); void closure(std::vector* state); void addState(std::vector< std::vector* >* stateSets, std::vector* state, Symbol*); std::string stateSetToString(); int gotoTable(int state, Symbol* token); ParseAction* actionTable(int state, Symbol* token); void parseInput(std::string inputString); std::string grammerToString(); std::string grammerToDOT(); private: StringReader reader; std::map symbols; std::vector loadedGrammer; std::vector< std::vector* > stateSets; std::stack stateStack; std::stack symbolStack; Symbol* getOrAddSymbol(std::string symbolString, bool isTerminal); }; #endif