From fd1128f90a17151fd6e3a673332045cf534a3d21 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Fri, 10 Oct 2014 02:28:27 -0700 Subject: [PATCH] Fix 0 not being recognized as a valid token --- src/debugger/parser.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/debugger/parser.c b/src/debugger/parser.c index 33c7cb7f1..bb31c2a67 100644 --- a/src/debugger/parser.c +++ b/src/debugger/parser.c @@ -77,6 +77,7 @@ size_t lexExpression(struct LexVector* lv, const char* string, size_t length) { break; case '0': state = LEX_EXPECT_PREFIX; + next = 0; break; case '$': state = LEX_EXPECT_HEX; @@ -216,8 +217,19 @@ size_t lexExpression(struct LexVector* lv, const char* string, size_t length) { next = 0; state = LEX_EXPECT_HEX; break; - default: - state = LEX_ERROR; + case '+': + case '-': + case '*': + case '/': + lv->token.type = TOKEN_UINT_TYPE; + lv->token.uintValue = next; + lv = _lexOperator(lv, token); + state = LEX_ROOT; + break; + case ')': + lv->token.type = TOKEN_UINT_TYPE; + lv->token.uintValue = next; + state = LEX_EXPECT_OPERATOR; break; } break; @@ -247,6 +259,7 @@ size_t lexExpression(struct LexVector* lv, const char* string, size_t length) { switch (state) { case LEX_EXPECT_DECIMAL: case LEX_EXPECT_HEX: + case LEX_EXPECT_PREFIX: lv->token.type = TOKEN_UINT_TYPE; lv->token.uintValue = next; break;