aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-07-15 09:48:03 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-07-15 09:48:03 -0300
commit559bb554c944ed166e363e522e48a71e60e1922d (patch)
tree1130eec81df7a0dd07645474688f638d1add4d07
parentfd5e810e0858162a2b11229db4f17dca489c9d41 (diff)
downloadlua-559bb554c944ed166e363e522e48a71e60e1922d.tar.gz
lua-559bb554c944ed166e363e522e48a71e60e1922d.tar.bz2
lua-559bb554c944ed166e363e522e48a71e60e1922d.zip
no more 'zungetc' (better not to read next char)
-rw-r--r--llex.c38
-rw-r--r--lzio.h4
2 files changed, 20 insertions, 22 deletions
diff --git a/llex.c b/llex.c
index a612044b..5b07da4b 100644
--- a/llex.c
+++ b/llex.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: llex.c,v 2.53 2011/07/08 20:01:38 roberto Exp roberto $ 2** $Id: llex.c,v 2.54 2011/07/15 12:30:41 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*/
@@ -320,7 +320,6 @@ static int readdecesc (LexState *ls) {
320 } 320 }
321 if (r > UCHAR_MAX) 321 if (r > UCHAR_MAX)
322 escerror(ls, c, i, "decimal escape too large"); 322 escerror(ls, c, i, "decimal escape too large");
323 zungetc(ls->z);
324 return r; 323 return r;
325} 324}
326 325
@@ -340,37 +339,38 @@ static void read_string (LexState *ls, int del, SemInfo *seminfo) {
340 int c; /* final character to be saved */ 339 int c; /* final character to be saved */
341 next(ls); /* do not save the `\' */ 340 next(ls); /* do not save the `\' */
342 switch (ls->current) { 341 switch (ls->current) {
343 case 'a': c = '\a'; break; 342 case 'a': c = '\a'; goto read_save;
344 case 'b': c = '\b'; break; 343 case 'b': c = '\b'; goto read_save;
345 case 'f': c = '\f'; break; 344 case 'f': c = '\f'; goto read_save;
346 case 'n': c = '\n'; break; 345 case 'n': c = '\n'; goto read_save;
347 case 'r': c = '\r'; break; 346 case 'r': c = '\r'; goto read_save;
348 case 't': c = '\t'; break; 347 case 't': c = '\t'; goto read_save;
349 case 'v': c = '\v'; break; 348 case 'v': c = '\v'; goto read_save;
350 case 'x': c = readhexaesc(ls); break; 349 case 'x': c = readhexaesc(ls); goto read_save;
351 case '\n': 350 case '\n': case '\r':
352 case '\r': save(ls, '\n'); inclinenumber(ls); continue; 351 inclinenumber(ls); c = '\n'; goto only_save;
353 case '\\': case '\"': case '\'': c = ls->current; break; 352 case '\\': case '\"': case '\'':
354 case EOZ: continue; /* will raise an error next loop */ 353 c = ls->current; goto read_save;
354 case EOZ: goto no_save; /* will raise an error next loop */
355 case 'z': { /* zap following span of spaces */ 355 case 'z': { /* zap following span of spaces */
356 next(ls); /* skip the 'z' */ 356 next(ls); /* skip the 'z' */
357 while (lisspace(ls->current)) { 357 while (lisspace(ls->current)) {
358 if (currIsNewline(ls)) inclinenumber(ls); 358 if (currIsNewline(ls)) inclinenumber(ls);
359 else next(ls); 359 else next(ls);
360 } 360 }
361 continue; /* do not save 'c' */ 361 goto no_save;
362 } 362 }
363 default: { 363 default: {
364 if (!lisdigit(ls->current)) 364 if (!lisdigit(ls->current))
365 escerror(ls, &ls->current, 1, "invalid escape sequence"); 365 escerror(ls, &ls->current, 1, "invalid escape sequence");
366 /* digital escape \ddd */ 366 /* digital escape \ddd */
367 c = readdecesc(ls); 367 c = readdecesc(ls);
368 break; 368 goto only_save;
369 } 369 }
370 } 370 }
371 next(ls); 371 read_save: next(ls); /* read next character */
372 save(ls, c); 372 only_save: save(ls, c); /* save 'c' */
373 break; 373 no_save: break;
374 } 374 }
375 default: 375 default:
376 save_and_next(ls); 376 save_and_next(ls);
diff --git a/lzio.h b/lzio.h
index 32998d07..e8406615 100644
--- a/lzio.h
+++ b/lzio.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lzio.h,v 1.24 2011/02/23 13:13:10 roberto Exp roberto $ 2** $Id: lzio.h,v 1.25 2011/07/15 12:35:32 roberto Exp roberto $
3** Buffered streams 3** Buffered streams
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -19,8 +19,6 @@ typedef struct Zio ZIO;
19 19
20#define zgetc(z) (((z)->n--)>0 ? cast_uchar(*(z)->p++) : luaZ_fill(z)) 20#define zgetc(z) (((z)->n--)>0 ? cast_uchar(*(z)->p++) : luaZ_fill(z))
21 21
22#define zungetc(z) ((z)->n++, (z)->p--)
23
24 22
25typedef struct Mbuffer { 23typedef struct Mbuffer {
26 char *buffer; 24 char *buffer;