Mercurial > hg > index.cgi
diff lwbasic/lexer.c @ 34:bfea77812e64
Start of assignment code
author | Lost Wizard (lost@starbug3) |
---|---|
date | Fri, 04 Feb 2011 21:27:03 -0700 |
parents | 890a8f688889 |
children | cdb0175e1063 |
line wrap: on
line diff
--- a/lwbasic/lexer.c Thu Feb 03 22:15:57 2011 -0700 +++ b/lwbasic/lexer.c Fri Feb 04 21:27:03 2011 -0700 @@ -59,9 +59,39 @@ { "endsub", token_kw_endsub }, { "endfunction", token_kw_endfunction }, { "dim", token_kw_dim }, + { "=", token_op_assignment }, { NULL } }; +static char *lexer_token_names[] = +{ + "SUB", + "FUNCTION", + "AS", + "PUBLIC", + "PRIVATE", + "PARAMS", + "RETURNS", + "INTEGER", + "ENDSUB", + "ENDFUNCTION", + "DIM", + "<assignment>", + "<identifier>", + "<char>", + "<uint>", + "<int>", + "<eol>", + "<eof>" +}; + +char *lexer_token_name(int token) +{ + if (token > token_eol) + return "???"; + return lexer_token_names[token]; +} + static int lexer_getchar(cstate *state) { int c; @@ -231,12 +261,12 @@ buflen = 128; } - l = snprintf(buffer, buflen, "%s (%d)", state -> lexer_token_string, state -> lexer_token); + l = snprintf(buffer, buflen, "%s (%s)", state -> lexer_token_string, lexer_token_name(state -> lexer_token)); if (l >= buflen) { buffer = lw_realloc(buffer, l + 1); buflen = l + 1; - snprintf(buffer, buflen, "%s (%d)", state -> lexer_token_string, state -> lexer_token); + snprintf(buffer, buflen, "%s (%s)", state -> lexer_token_string, lexer_token_name(state -> lexer_token)); } return buffer; }