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 }