Mercurial > hg > index.cgi
comparison 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 |
comparison
equal
deleted
inserted
replaced
33:890a8f688889 | 34:bfea77812e64 |
---|---|
57 { "returns", token_kw_returns }, | 57 { "returns", token_kw_returns }, |
58 { "integer", token_kw_integer }, | 58 { "integer", token_kw_integer }, |
59 { "endsub", token_kw_endsub }, | 59 { "endsub", token_kw_endsub }, |
60 { "endfunction", token_kw_endfunction }, | 60 { "endfunction", token_kw_endfunction }, |
61 { "dim", token_kw_dim }, | 61 { "dim", token_kw_dim }, |
62 { "=", token_op_assignment }, | |
62 { NULL } | 63 { NULL } |
63 }; | 64 }; |
65 | |
66 static char *lexer_token_names[] = | |
67 { | |
68 "SUB", | |
69 "FUNCTION", | |
70 "AS", | |
71 "PUBLIC", | |
72 "PRIVATE", | |
73 "PARAMS", | |
74 "RETURNS", | |
75 "INTEGER", | |
76 "ENDSUB", | |
77 "ENDFUNCTION", | |
78 "DIM", | |
79 "<assignment>", | |
80 "<identifier>", | |
81 "<char>", | |
82 "<uint>", | |
83 "<int>", | |
84 "<eol>", | |
85 "<eof>" | |
86 }; | |
87 | |
88 char *lexer_token_name(int token) | |
89 { | |
90 if (token > token_eol) | |
91 return "???"; | |
92 return lexer_token_names[token]; | |
93 } | |
64 | 94 |
65 static int lexer_getchar(cstate *state) | 95 static int lexer_getchar(cstate *state) |
66 { | 96 { |
67 int c; | 97 int c; |
68 c = input_getchar(state); | 98 c = input_getchar(state); |
229 { | 259 { |
230 buffer = lw_alloc(128); | 260 buffer = lw_alloc(128); |
231 buflen = 128; | 261 buflen = 128; |
232 } | 262 } |
233 | 263 |
234 l = snprintf(buffer, buflen, "%s (%d)", state -> lexer_token_string, state -> lexer_token); | 264 l = snprintf(buffer, buflen, "%s (%s)", state -> lexer_token_string, lexer_token_name(state -> lexer_token)); |
235 if (l >= buflen) | 265 if (l >= buflen) |
236 { | 266 { |
237 buffer = lw_realloc(buffer, l + 1); | 267 buffer = lw_realloc(buffer, l + 1); |
238 buflen = l + 1; | 268 buflen = l + 1; |
239 snprintf(buffer, buflen, "%s (%d)", state -> lexer_token_string, state -> lexer_token); | 269 snprintf(buffer, buflen, "%s (%s)", state -> lexer_token_string, lexer_token_name(state -> lexer_token)); |
240 } | 270 } |
241 return buffer; | 271 return buffer; |
242 } | 272 } |