Details in lparser.c
Added comments so that all braces pair correctly. (The parser has
several instances of unmatched braces as characters ('{' or '}'), which
hinders matching regular braces in the code.)
This commit is contained in:
23
lparser.c
23
lparser.c
@@ -797,10 +797,11 @@ static void close_func (LexState *ls) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
/*============================================================*/
|
** {======================================================================
|
||||||
/* GRAMMAR RULES */
|
** GRAMMAR RULES
|
||||||
/*============================================================*/
|
** =======================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -974,15 +975,15 @@ static void constructor (LexState *ls, expdesc *t) {
|
|||||||
init_exp(t, VNONRELOC, fs->freereg); /* table will be at stack top */
|
init_exp(t, VNONRELOC, fs->freereg); /* table will be at stack top */
|
||||||
luaK_reserveregs(fs, 1);
|
luaK_reserveregs(fs, 1);
|
||||||
init_exp(&cc.v, VVOID, 0); /* no value (yet) */
|
init_exp(&cc.v, VVOID, 0); /* no value (yet) */
|
||||||
checknext(ls, '{');
|
checknext(ls, '{' /*}*/);
|
||||||
cc.maxtostore = maxtostore(fs);
|
cc.maxtostore = maxtostore(fs);
|
||||||
do {
|
do {
|
||||||
lua_assert(cc.v.k == VVOID || cc.tostore > 0);
|
lua_assert(cc.v.k == VVOID || cc.tostore > 0);
|
||||||
if (ls->t.token == '}') break;
|
if (ls->t.token == /*{*/ '}') break;
|
||||||
closelistfield(fs, &cc);
|
closelistfield(fs, &cc);
|
||||||
field(ls, &cc);
|
field(ls, &cc);
|
||||||
} while (testnext(ls, ',') || testnext(ls, ';'));
|
} while (testnext(ls, ',') || testnext(ls, ';'));
|
||||||
check_match(ls, '}', '{', line);
|
check_match(ls, /*{*/ '}', '{' /*}*/, line);
|
||||||
lastlistfield(fs, &cc);
|
lastlistfield(fs, &cc);
|
||||||
luaK_settablesize(fs, pc, t->u.info, cc.na, cc.nh);
|
luaK_settablesize(fs, pc, t->u.info, cc.na, cc.nh);
|
||||||
}
|
}
|
||||||
@@ -1080,7 +1081,7 @@ static void funcargs (LexState *ls, expdesc *f) {
|
|||||||
check_match(ls, ')', '(', line);
|
check_match(ls, ')', '(', line);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case '{': { /* funcargs -> constructor */
|
case '{' /*}*/: { /* funcargs -> constructor */
|
||||||
constructor(ls, &args);
|
constructor(ls, &args);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1167,7 +1168,7 @@ static void suffixedexp (LexState *ls, expdesc *v) {
|
|||||||
funcargs(ls, v);
|
funcargs(ls, v);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case '(': case TK_STRING: case '{': { /* funcargs */
|
case '(': case TK_STRING: case '{' /*}*/: { /* funcargs */
|
||||||
luaK_exp2nextreg(fs, v);
|
luaK_exp2nextreg(fs, v);
|
||||||
funcargs(ls, v);
|
funcargs(ls, v);
|
||||||
break;
|
break;
|
||||||
@@ -1215,7 +1216,7 @@ static void simpleexp (LexState *ls, expdesc *v) {
|
|||||||
init_exp(v, VVARARG, luaK_codeABC(fs, OP_VARARG, 0, 0, 1));
|
init_exp(v, VVARARG, luaK_codeABC(fs, OP_VARARG, 0, 0, 1));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case '{': { /* constructor */
|
case '{' /*}*/: { /* constructor */
|
||||||
constructor(ls, v);
|
constructor(ls, v);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1922,6 +1923,8 @@ static void statement (LexState *ls) {
|
|||||||
|
|
||||||
/* }====================================================================== */
|
/* }====================================================================== */
|
||||||
|
|
||||||
|
/* }====================================================================== */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** compiles the main function, which is a regular vararg function with an
|
** compiles the main function, which is a regular vararg function with an
|
||||||
|
|||||||
Reference in New Issue
Block a user