Something went wrong. Try again.
OpenMW is an open implementation of the Morrowind engine
Something went wrong. Try again.
1.7 kB · 57 lines
C++
at master
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#ifndef COMPILER_STRINGPARSER_H_INCLUDED#define COMPILER_STRINGPARSER_H_INCLUDED
#include <vector>
#include <components/interpreter/types.hpp>
#include "parser.hpp"#include "tokenloc.hpp"
namespace Compiler{ class Literals;
class StringParser : public Parser { Literals& mLiterals; std::vector<Interpreter::Type_Code> mCode; bool mSmashCase; TokenLoc mTokenLoc; bool mDiscard;
public: StringParser(ErrorHandler& errorHandler, const Context& context, Literals& literals);
bool parseName(const std::string& name, const TokenLoc& loc, Scanner& scanner) override; ///< Handle a name token. /// \return fetch another token?
bool parseKeyword(int keyword, const TokenLoc& loc, Scanner& scanner) override; ///< Handle a keyword token. /// \return fetch another token?
bool parseInt(int value, const TokenLoc& loc, Scanner& scanner) override; ///< Handle an int token. /// \return fetch another token?
void append(std::vector<Interpreter::Type_Code>& code); ///< Append code for parsed string.
void smashCase(); ///< Transform all scanned strings to lower case
void reset() override; ///< Reset parser to clean state (this includes the smashCase function).
/// Returns TokenLoc object for string. If no string has been parsed, the TokenLoc /// object will be default initialised. const TokenLoc& getTokenLoc() const;
/// If parsing a string, do not add it to the literal table and do not create code /// for it. void discard(); };}
#endif