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