Debugger: Fixed parsing issue with expression evaluator

This commit is contained in:
Sour 2020-04-19 16:06:41 -04:00
parent 009f3f8d46
commit b09017d17d
2 changed files with 7 additions and 3 deletions

View file

@ -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

View file

@ -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;