OpenMW
|
00001 #ifndef COMPILER_STRINGPARSER_H_INCLUDED 00002 #define COMPILER_STRINGPARSER_H_INCLUDED 00003 00004 #include <vector> 00005 00006 #include <components/interpreter/types.hpp> 00007 00008 #include "parser.hpp" 00009 00010 namespace Compiler 00011 { 00012 class Literals; 00013 00014 class StringParser : public Parser 00015 { 00016 enum State 00017 { 00018 StartState, CommaState 00019 }; 00020 00021 Literals& mLiterals; 00022 State mState; 00023 std::vector<Interpreter::Type_Code> mCode; 00024 bool mSmashCase; 00025 00026 public: 00027 00028 StringParser (ErrorHandler& errorHandler, Context& context, Literals& literals); 00029 00030 virtual bool parseName (const std::string& name, const TokenLoc& loc, 00031 Scanner& scanner); 00034 00035 virtual bool parseSpecial (int code, const TokenLoc& loc, Scanner& scanner); 00038 00039 void append (std::vector<Interpreter::Type_Code>& code); 00041 00042 void smashCase(); 00044 00045 void reset(); 00047 }; 00048 } 00049 00050 #endif