forked from teamnwah/openmw-tes3coop
added bracket parsing
This commit is contained in:
parent
48f6ad0f89
commit
c8c5ef5467
2 changed files with 27 additions and 0 deletions
|
@ -14,6 +14,10 @@ namespace Compiler
|
||||||
{
|
{
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
|
case '(':
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
case '+':
|
case '+':
|
||||||
case '-':
|
case '-':
|
||||||
|
|
||||||
|
@ -143,6 +147,14 @@ namespace Compiler
|
||||||
mNextOperand = true;
|
mNextOperand = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ExprParser::close()
|
||||||
|
{
|
||||||
|
while (getOperator()!='(')
|
||||||
|
pop();
|
||||||
|
|
||||||
|
popOperator();
|
||||||
|
}
|
||||||
|
|
||||||
ExprParser::ExprParser (ErrorHandler& errorHandler, Context& context, Locals& locals,
|
ExprParser::ExprParser (ErrorHandler& errorHandler, Context& context, Locals& locals,
|
||||||
Literals& literals)
|
Literals& literals)
|
||||||
: Parser (errorHandler, context), mLocals (locals), mLiterals (literals),
|
: Parser (errorHandler, context), mLocals (locals), mLiterals (literals),
|
||||||
|
@ -209,6 +221,19 @@ namespace Compiler
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (code==Scanner::S_open && mNextOperand)
|
||||||
|
{
|
||||||
|
mOperators.push_back ('(');
|
||||||
|
mTokenLoc = loc;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (code==Scanner::S_close && !mNextOperand)
|
||||||
|
{
|
||||||
|
close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
mTokenLoc = loc;
|
mTokenLoc = loc;
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
|
|
|
@ -43,6 +43,8 @@ namespace Compiler
|
||||||
|
|
||||||
void pushBinaryOperator (char c);
|
void pushBinaryOperator (char c);
|
||||||
|
|
||||||
|
void close();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ExprParser (ErrorHandler& errorHandler, Context& context, Locals& locals,
|
ExprParser (ErrorHandler& errorHandler, Context& context, Locals& locals,
|
||||||
|
|
Loading…
Reference in a new issue