1 #ifndef COMPILER_SCRIPTPARSER_H_INCLUDED 2 #define COMPILER_SCRIPTPARSER_H_INCLUDED 3 4 #include "parser.hpp" 5 #include "lineparser.hpp" 6 #include "controlparser.hpp" 7 #include "output.hpp" 8 9 namespace Compiler 10 { 11 class Locals; 12 13 // Script parser, to be used in dialogue scripts and as part of FileParser 14 15 class ScriptParser : public Parser 16 { 17 Output mOutput; 18 LineParser mLineParser; 19 ControlParser mControlParser; 20 bool mEnd; 21 22 public: 23 24 /// \param end of script is marked by end keyword. 25 ScriptParser (ErrorHandler& errorHandler, const Context& context, Locals& locals, 26 bool end = false); 27 28 void getCode (std::vector<Interpreter::Type_Code>& code) const; 29 ///< store generated code in \a code. 30 31 bool parseName (const std::string& name, const TokenLoc& loc, 32 Scanner& scanner) override; 33 ///< Handle a name token. 34 /// \return fetch another token? 35 36 bool parseKeyword (int keyword, const TokenLoc& loc, Scanner& scanner) override; 37 ///< Handle a keyword token. 38 /// \return fetch another token? 39 40 bool parseSpecial (int code, const TokenLoc& loc, Scanner& scanner) override; 41 ///< Handle a special character token. 42 /// \return fetch another token? 43 44 void parseEOF (Scanner& scanner) override; 45 ///< Handle EOF token. 46 47 void reset() override; 48 ///< Reset parser to clean state. 49 }; 50 } 51 52 #endif 53 54