aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--llex.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/llex.c b/llex.c
index cd67103e..b74186d1 100644
--- a/llex.c
+++ b/llex.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: llex.c,v 1.48 1999/12/30 12:40:29 roberto Exp roberto $ 2** $Id: llex.c,v 1.49 2000/01/25 18:44:21 roberto Exp roberto $
3** Lexical Analyzer 3** Lexical Analyzer
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -321,7 +321,6 @@ static void read_string (lua_State *L, LexState *LS, int del) {
321 321
322int luaX_lex (LexState *LS) { 322int luaX_lex (LexState *LS) {
323 lua_State *L = LS->L; 323 lua_State *L = LS->L;
324 luaL_resetbuffer(L);
325 for (;;) { 324 for (;;) {
326 switch (LS->current) { 325 switch (LS->current) {
327 326
@@ -340,6 +339,7 @@ int luaX_lex (LexState *LS) {
340 continue; 339 continue;
341 340
342 case '[': 341 case '[':
342 luaL_resetbuffer(L);
343 save_and_next(L, LS); 343 save_and_next(L, LS);
344 if (LS->current != '[') return '['; 344 if (LS->current != '[') return '[';
345 else { 345 else {
@@ -370,10 +370,12 @@ int luaX_lex (LexState *LS) {
370 370
371 case '"': 371 case '"':
372 case '\'': 372 case '\'':
373 luaL_resetbuffer(L);
373 read_string(L, LS, LS->current); 374 read_string(L, LS, LS->current);
374 return STRING; 375 return STRING;
375 376
376 case '.': 377 case '.':
378 luaL_resetbuffer(L);
377 save_and_next(L, LS); 379 save_and_next(L, LS);
378 if (LS->current == '.') { 380 if (LS->current == '.') {
379 next(LS); 381 next(LS);
@@ -384,10 +386,11 @@ int luaX_lex (LexState *LS) {
384 else return CONC; /* .. */ 386 else return CONC; /* .. */
385 } 387 }
386 else if (!isdigit(LS->current)) return '.'; 388 else if (!isdigit(LS->current)) return '.';
387 goto fraction; /* LS->current is a digit: goes through to number */ 389 else goto fraction; /* LS->current is a digit */
388 390
389 case '0': case '1': case '2': case '3': case '4': 391 case '0': case '1': case '2': case '3': case '4':
390 case '5': case '6': case '7': case '8': case '9': 392 case '5': case '6': case '7': case '8': case '9':
393 luaL_resetbuffer(L);
391 do { 394 do {
392 save_and_next(L, LS); 395 save_and_next(L, LS);
393 } while (isdigit(LS->current)); 396 } while (isdigit(LS->current));
@@ -431,6 +434,7 @@ int luaX_lex (LexState *LS) {
431 } 434 }
432 tname: { /* identifier or reserved word */ 435 tname: { /* identifier or reserved word */
433 TaggedString *ts; 436 TaggedString *ts;
437 luaL_resetbuffer(L);
434 do { 438 do {
435 save_and_next(L, LS); 439 save_and_next(L, LS);
436 } while (isalnum(LS->current) || LS->current == '_'); 440 } while (isalnum(LS->current) || LS->current == '_');