Debugger: Fixed parsing issue with expression evaluator
This commit is contained in:
parent
009f3f8d46
commit
b09017d17d
2 changed files with 7 additions and 3 deletions
|
@ -367,7 +367,7 @@ bool ExpressionEvaluator::ToRpn(string expression, ExpressionData &data)
|
|||
if(!ProcessSpecialOperator(EvalOperators::Parenthesis, opStack, precedenceStack, data.RpnQueue)) {
|
||||
return false;
|
||||
}
|
||||
operatorExpected = true;
|
||||
operatorOrEndTokenExpected = true;
|
||||
} else if(token[0] == '[') {
|
||||
bracketCount++;
|
||||
opStack.push(EvalOperators::Bracket);
|
||||
|
@ -377,7 +377,7 @@ bool ExpressionEvaluator::ToRpn(string expression, ExpressionData &data)
|
|||
if(!ProcessSpecialOperator(EvalOperators::Bracket, opStack, precedenceStack, data.RpnQueue)) {
|
||||
return false;
|
||||
}
|
||||
operatorExpected = true;
|
||||
operatorOrEndTokenExpected = true;
|
||||
} else if(token[0] == '{') {
|
||||
braceCount++;
|
||||
opStack.push(EvalOperators::Braces);
|
||||
|
@ -387,7 +387,7 @@ bool ExpressionEvaluator::ToRpn(string expression, ExpressionData &data)
|
|||
if(!ProcessSpecialOperator(EvalOperators::Braces, opStack, precedenceStack, data.RpnQueue)){
|
||||
return false;
|
||||
}
|
||||
operatorExpected = true;
|
||||
operatorOrEndTokenExpected = true;
|
||||
} else {
|
||||
if(token[0] < '0' || token[0] > '9') {
|
||||
return false;
|
||||
|
@ -717,5 +717,8 @@ void ExpressionEvaluator::RunTests()
|
|||
test("%011", EvalResultType::Numeric, 3);
|
||||
test("%1011", EvalResultType::Numeric, 11);
|
||||
test("%12", EvalResultType::Invalid, 0);
|
||||
|
||||
test("[$4500+[$4500]]", EvalResultType::Numeric, 0x45);
|
||||
test("-($10+[$4500])", EvalResultType::Numeric, -0x55);
|
||||
}
|
||||
#endif
|
|
@ -34,6 +34,7 @@ public:
|
|||
|
||||
uint8_t Peek(uint32_t addr) override
|
||||
{
|
||||
addr &= 0xFFFF;
|
||||
if(addr == 0x4016 || addr == 0x4017) {
|
||||
//Avoid side effects for now
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue