From 12c764ed1ed37179f123af6ab225ba38e6d405d7 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Sat, 15 May 2010 10:32:02 -0300 Subject: semicolons now represent the empty statement --- lparser.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lparser.c b/lparser.c index 2d477d64..58c8fb97 100644 --- a/lparser.c +++ b/lparser.c @@ -1,5 +1,5 @@ /* -** $Id: lparser.c,v 2.84 2010/05/13 12:03:26 roberto Exp roberto $ +** $Id: lparser.c,v 2.85 2010/05/14 15:03:43 roberto Exp roberto $ ** Lua Parser ** See Copyright Notice in lua.h */ @@ -1346,7 +1346,8 @@ static void retstat (LexState *ls) { static int statement (LexState *ls) { int line = ls->linenumber; /* may be needed for error messages */ switch (ls->t.token) { - case ';': { /* stat -> */ + case ';': { /* stat -> ';' (empty statement) */ + luaX_next(ls); /* skip ';' */ return 0; } case TK_IF: { /* stat -> ifstat */ @@ -1407,7 +1408,8 @@ static void chunk (LexState *ls) { enterlevel(ls); while (!islast && !block_follow(ls->t.token)) { islast = statement(ls); - testnext(ls, ';'); + if (islast) + testnext(ls, ';'); lua_assert(ls->fs->f->maxstacksize >= ls->fs->freereg && ls->fs->freereg >= ls->fs->nactvar); ls->fs->freereg = ls->fs->nactvar; /* free registers */ -- cgit v1.2.3-55-g6feb