From 09f030384e26ac3cf076aefb99903cd8b918a580 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Mon, 23 Jun 2008 17:08:41 +0000 Subject: [PATCH] Fix parsing of debug commands. [r20226] --- ir/debug/debugger.c | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/ir/debug/debugger.c b/ir/debug/debugger.c index 66785b342..c4c375dee 100644 --- a/ir/debug/debugger.c +++ b/ir/debug/debugger.c @@ -986,34 +986,27 @@ static unsigned get_token(void) { lexer.tok_start = lexer.curr_pos - 1; if (c == '.' || isalpha(c)) { /* command begins here */ - int len = 0; + int len = 0; + const char* tok_start; - if (c == '.') { - /* skip the dot */ - ++lexer.tok_start; - c = next_char(); - } do { c = next_char(); ++len; - } while (isalpha(c)); + } while (isgraph(c)); unput(); + tok_start = lexer.tok_start; + if (*tok_start == '.') { + ++tok_start; + --len; + } for (i = sizeof(reserved)/sizeof(reserved[0]) - 1; i >= 0; --i) { - if (strncasecmp(lexer.tok_start, reserved[i], len) == 0 && reserved[i][len] == '\0') - break; + if (strncasecmp(tok_start, reserved[i], len) == 0 && reserved[i][len] == '\0') + return 256 + i; } - if (i >= 0) - return 256 + i; - return tok_error; - } else if (isalpha(c)) { - /* identifier */ - lexer.s = lexer.curr_pos - 1; - do { - c = next_char(); - } while (isgraph(c)); - unput(); + /* identifier */ + lexer.s = lexer.tok_start; lexer.len = lexer.curr_pos - lexer.s; return tok_identifier; } else if (isdigit(c) || c == '-') { -- 2.20.1