From 5d02a7f4faae6f8d2e82b4729feb00e486285444 Mon Sep 17 00:00:00 2001 From: Jakob Fries Date: Mon, 11 Feb 2008 21:40:48 +0000 Subject: Proper support for negatives. Properlized silly error message --- src/engine/e_console.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/engine/e_console.c b/src/engine/e_console.c index 8582815b..36b523ff 100644 --- a/src/engine/e_console.c +++ b/src/engine/e_console.c @@ -38,6 +38,7 @@ enum STATE_INT, STATE_FLOAT, STATE_POT_FLOAT, + STATE_POT_NEGATIVE, STATE_STRING, STATE_QUOTED, STATE_ESCAPE @@ -115,7 +116,7 @@ static int lex(const char *line, LEXER_RESULT *res) else if (digit(*c)) state = STATE_INT; else if (*c == '-') - state = STATE_INT; + state = STATE_POT_NEGATIVE; else if (*c == '.') state = STATE_POT_FLOAT; else if (*c == '"') @@ -123,6 +124,17 @@ static int lex(const char *line, LEXER_RESULT *res) else state = STATE_STRING; break; + + case STATE_POT_NEGATIVE: + if (digit(*c)) + state = STATE_INT; + else if (*c == '.') + state = STATE_POT_FLOAT; + else if (*c == ' ') + save_token(res, &i, &start, c, &state, TOKEN_STRING); + else + state = STATE_STRING; + break; case STATE_INT: if (digit(*c)) @@ -189,7 +201,7 @@ static int lex(const char *line, LEXER_RESULT *res) save_token(res, &i, &start, c, &state, TOKEN_STRING); break; case STATE_ESCAPE: - puts("LOL MALFORMED"); + dbg_msg("console/lexer", "Misplaced escape character"); break; default: break; -- cgit 1.4.1