OpenMW
components/compiler/stringparser.hpp
Go to the documentation of this file.
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