mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-30 03:32:36 +00:00
improved handling of extra arguments in DiscardParser
This commit is contained in:
parent
f9607a47b3
commit
46e32de350
@ -14,6 +14,9 @@ namespace Compiler
|
||||
{
|
||||
if (mState==StartState || mState==CommaState || mState==MinusState)
|
||||
{
|
||||
if (isEmpty())
|
||||
mTokenLoc = loc;
|
||||
|
||||
start();
|
||||
return false;
|
||||
}
|
||||
@ -25,6 +28,9 @@ namespace Compiler
|
||||
{
|
||||
if (mState==StartState || mState==CommaState || mState==MinusState)
|
||||
{
|
||||
if (isEmpty())
|
||||
mTokenLoc = loc;
|
||||
|
||||
start();
|
||||
return false;
|
||||
}
|
||||
@ -37,6 +43,9 @@ namespace Compiler
|
||||
{
|
||||
if (mState==StartState || mState==CommaState)
|
||||
{
|
||||
if (isEmpty())
|
||||
mTokenLoc = loc;
|
||||
|
||||
start();
|
||||
return false;
|
||||
}
|
||||
@ -48,12 +57,22 @@ namespace Compiler
|
||||
{
|
||||
if (code==Scanner::S_comma && mState==StartState)
|
||||
{
|
||||
if (isEmpty())
|
||||
mTokenLoc = loc;
|
||||
|
||||
start();
|
||||
|
||||
mState = CommaState;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (code==Scanner::S_minus && (mState==StartState || mState==CommaState))
|
||||
{
|
||||
if (isEmpty())
|
||||
mTokenLoc = loc;
|
||||
|
||||
start();
|
||||
|
||||
mState = MinusState;
|
||||
return true;
|
||||
}
|
||||
@ -64,6 +83,12 @@ namespace Compiler
|
||||
void DiscardParser::reset()
|
||||
{
|
||||
mState = StartState;
|
||||
mTokenLoc = TokenLoc();
|
||||
Parser::reset();
|
||||
}
|
||||
|
||||
const TokenLoc& DiscardParser::getTokenLoc() const
|
||||
{
|
||||
return mTokenLoc;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define COMPILER_DISCARDPARSER_H_INCLUDED
|
||||
|
||||
#include "parser.hpp"
|
||||
#include "tokenloc.hpp"
|
||||
|
||||
namespace Compiler
|
||||
{
|
||||
@ -14,6 +15,7 @@ namespace Compiler
|
||||
};
|
||||
|
||||
State mState;
|
||||
TokenLoc mTokenLoc;
|
||||
|
||||
public:
|
||||
|
||||
@ -38,8 +40,11 @@ namespace Compiler
|
||||
|
||||
virtual void reset();
|
||||
///< Reset parser to clean state.
|
||||
|
||||
/// Returns TokenLoc object for value. If no value has been parsed, the TokenLoc
|
||||
/// object will be default initialised.
|
||||
const TokenLoc& getTokenLoc() const;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -832,7 +832,7 @@ namespace Compiler
|
||||
if (discardParser.isEmpty())
|
||||
break;
|
||||
else
|
||||
getErrorHandler().warning("Ignoring extra argument", mTokenLoc);
|
||||
getErrorHandler().warning("Ignoring extra argument", discardParser.getTokenLoc());
|
||||
}
|
||||
else if (*iter=='j')
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user