fixed round brackets parsing bug

actorid
Marc Zinnschlag 15 years ago
parent ed92ffcf89
commit 73f9436ed9

@ -3,6 +3,7 @@
#include <stdexcept>
#include <cassert>
#include <algorithm>
#include "generator.hpp"
#include "scanner.hpp"
@ -51,6 +52,11 @@ namespace Compiler
return mOperators[mOperators.size()-1];
}
bool ExprParser::isOpen() const
{
return std::find (mOperators.begin(), mOperators.end(), '(')!=mOperators.end();
}
void ExprParser::popOperator()
{
assert (!mOperators.empty());
@ -293,8 +299,15 @@ namespace Compiler
if (code==Scanner::S_close && !mNextOperand)
{
close();
return true;
if (isOpen())
{
close();
return true;
}
mTokenLoc = loc;
scanner.putbackSpecial (code, loc);
return false;
}
if (!mNextOperand)

@ -30,6 +30,8 @@ namespace Compiler
char getOperator() const;
bool isOpen() const;
void popOperator();
void popOperand();

Loading…
Cancel
Save