Something went wrong. Try again.
OpenMW is an open implementation of the Morrowind engine
Something went wrong. Try again.
1.9 kB · 82 lines
C++
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#include "discardparser.hpp"
#include "scanner.hpp"
namespace Compiler{ DiscardParser::DiscardParser(ErrorHandler& errorHandler, const Context& context) : Parser(errorHandler, context) , mState(StartState) { }
bool DiscardParser::parseInt(int value, const TokenLoc& loc, Scanner& scanner) { if (mState == StartState || mState == MinusState) { if (isEmpty()) mTokenLoc = loc;
start(); return false; }
return Parser::parseInt(value, loc, scanner); }
bool DiscardParser::parseFloat(float value, const TokenLoc& loc, Scanner& scanner) { if (mState == StartState || mState == MinusState) { if (isEmpty()) mTokenLoc = loc;
start(); return false; }
return Parser::parseFloat(value, loc, scanner); }
bool DiscardParser::parseName(const std::string& name, const TokenLoc& loc, Scanner& scanner) { if (mState == StartState) { if (isEmpty()) mTokenLoc = loc;
start(); return false; }
return Parser::parseName(name, loc, scanner); }
bool DiscardParser::parseSpecial(int code, const TokenLoc& loc, Scanner& scanner) { if (code == Scanner::S_minus && mState == StartState) { if (isEmpty()) mTokenLoc = loc;
start();
mState = MinusState; return true; }
return Parser::parseSpecial(code, loc, scanner); }
void DiscardParser::reset() { mState = StartState; mTokenLoc = TokenLoc(); Parser::reset(); }
const TokenLoc& DiscardParser::getTokenLoc() const { return mTokenLoc; }}