aboutsummaryrefslogtreecommitdiff
path: root/src/lj_parse.c
diff options
context:
space:
mode:
authorMike Pall <mike>2013-02-28 01:11:49 +0100
committerMike Pall <mike>2013-02-28 01:11:49 +0100
commit87c51e7f57ec9277a02e7e21c8a28b4cb9d08914 (patch)
treeda3a7ac7babe8fe86d68df7472faa753dd70f682 /src/lj_parse.c
parent116cdd7e9a578efffa5a9ca38167d059d12296d7 (diff)
downloadluajit-87c51e7f57ec9277a02e7e21c8a28b4cb9d08914.tar.gz
luajit-87c51e7f57ec9277a02e7e21c8a28b4cb9d08914.tar.bz2
luajit-87c51e7f57ec9277a02e7e21c8a28b4cb9d08914.zip
Cleanup lexer source code.
Diffstat (limited to 'src/lj_parse.c')
-rw-r--r--src/lj_parse.c100
1 files changed, 50 insertions, 50 deletions
diff --git a/src/lj_parse.c b/src/lj_parse.c
index 64652ed2..39a01e6f 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -166,12 +166,12 @@ LJ_STATIC_ASSERT((int)BC_MODVV-(int)BC_ADDVV == (int)OPR_MOD-(int)OPR_ADD);
166 166
167LJ_NORET LJ_NOINLINE static void err_syntax(LexState *ls, ErrMsg em) 167LJ_NORET LJ_NOINLINE static void err_syntax(LexState *ls, ErrMsg em)
168{ 168{
169 lj_lex_error(ls, ls->token, em); 169 lj_lex_error(ls, ls->tok, em);
170} 170}
171 171
172LJ_NORET LJ_NOINLINE static void err_token(LexState *ls, LexToken token) 172LJ_NORET LJ_NOINLINE static void err_token(LexState *ls, LexToken tok)
173{ 173{
174 lj_lex_error(ls, ls->token, LJ_ERR_XTOKEN, lj_lex_token2str(ls, token)); 174 lj_lex_error(ls, ls->tok, LJ_ERR_XTOKEN, lj_lex_token2str(ls, tok));
175} 175}
176 176
177LJ_NORET static void err_limit(FuncState *fs, uint32_t limit, const char *what) 177LJ_NORET static void err_limit(FuncState *fs, uint32_t limit, const char *what)
@@ -982,7 +982,7 @@ static void bcemit_unop(FuncState *fs, BCOp op, ExpDesc *e)
982/* Check and consume optional token. */ 982/* Check and consume optional token. */
983static int lex_opt(LexState *ls, LexToken tok) 983static int lex_opt(LexState *ls, LexToken tok)
984{ 984{
985 if (ls->token == tok) { 985 if (ls->tok == tok) {
986 lj_lex_next(ls); 986 lj_lex_next(ls);
987 return 1; 987 return 1;
988 } 988 }
@@ -992,7 +992,7 @@ static int lex_opt(LexState *ls, LexToken tok)
992/* Check and consume token. */ 992/* Check and consume token. */
993static void lex_check(LexState *ls, LexToken tok) 993static void lex_check(LexState *ls, LexToken tok)
994{ 994{
995 if (ls->token != tok) 995 if (ls->tok != tok)
996 err_token(ls, tok); 996 err_token(ls, tok);
997 lj_lex_next(ls); 997 lj_lex_next(ls);
998} 998}
@@ -1006,7 +1006,7 @@ static void lex_match(LexState *ls, LexToken what, LexToken who, BCLine line)
1006 } else { 1006 } else {
1007 const char *swhat = lj_lex_token2str(ls, what); 1007 const char *swhat = lj_lex_token2str(ls, what);
1008 const char *swho = lj_lex_token2str(ls, who); 1008 const char *swho = lj_lex_token2str(ls, who);
1009 lj_lex_error(ls, ls->token, LJ_ERR_XMATCH, swhat, swho, line); 1009 lj_lex_error(ls, ls->tok, LJ_ERR_XMATCH, swhat, swho, line);
1010 } 1010 }
1011 } 1011 }
1012} 1012}
@@ -1015,9 +1015,9 @@ static void lex_match(LexState *ls, LexToken what, LexToken who, BCLine line)
1015static GCstr *lex_str(LexState *ls) 1015static GCstr *lex_str(LexState *ls)
1016{ 1016{
1017 GCstr *s; 1017 GCstr *s;
1018 if (ls->token != TK_name && (LJ_52 || ls->token != TK_goto)) 1018 if (ls->tok != TK_name && (LJ_52 || ls->tok != TK_goto))
1019 err_token(ls, TK_name); 1019 err_token(ls, TK_name);
1020 s = strV(&ls->tokenval); 1020 s = strV(&ls->tokval);
1021 lj_lex_next(ls); 1021 lj_lex_next(ls);
1022 return s; 1022 return s;
1023} 1023}
@@ -1584,7 +1584,7 @@ static GCproto *fs_finish(LexState *ls, BCLine line)
1584 L->top--; /* Pop table of constants. */ 1584 L->top--; /* Pop table of constants. */
1585 ls->vtop = fs->vbase; /* Reset variable stack. */ 1585 ls->vtop = fs->vbase; /* Reset variable stack. */
1586 ls->fs = fs->prev; 1586 ls->fs = fs->prev;
1587 lua_assert(ls->fs != NULL || ls->token == TK_eof); 1587 lua_assert(ls->fs != NULL || ls->tok == TK_eof);
1588 return pt; 1588 return pt;
1589} 1589}
1590 1590
@@ -1706,15 +1706,15 @@ static void expr_table(LexState *ls, ExpDesc *e)
1706 bcreg_reserve(fs, 1); 1706 bcreg_reserve(fs, 1);
1707 freg++; 1707 freg++;
1708 lex_check(ls, '{'); 1708 lex_check(ls, '{');
1709 while (ls->token != '}') { 1709 while (ls->tok != '}') {
1710 ExpDesc key, val; 1710 ExpDesc key, val;
1711 vcall = 0; 1711 vcall = 0;
1712 if (ls->token == '[') { 1712 if (ls->tok == '[') {
1713 expr_bracket(ls, &key); /* Already calls expr_toval. */ 1713 expr_bracket(ls, &key); /* Already calls expr_toval. */
1714 if (!expr_isk(&key)) expr_index(fs, e, &key); 1714 if (!expr_isk(&key)) expr_index(fs, e, &key);
1715 if (expr_isnumk(&key) && expr_numiszero(&key)) needarr = 1; else nhash++; 1715 if (expr_isnumk(&key) && expr_numiszero(&key)) needarr = 1; else nhash++;
1716 lex_check(ls, '='); 1716 lex_check(ls, '=');
1717 } else if ((ls->token == TK_name || (!LJ_52 && ls->token == TK_goto)) && 1717 } else if ((ls->tok == TK_name || (!LJ_52 && ls->tok == TK_goto)) &&
1718 lj_lex_lookahead(ls) == '=') { 1718 lj_lex_lookahead(ls) == '=') {
1719 expr_str(ls, &key); 1719 expr_str(ls, &key);
1720 lex_check(ls, '='); 1720 lex_check(ls, '=');
@@ -1807,11 +1807,11 @@ static BCReg parse_params(LexState *ls, int needself)
1807 lex_check(ls, '('); 1807 lex_check(ls, '(');
1808 if (needself) 1808 if (needself)
1809 var_new_lit(ls, nparams++, "self"); 1809 var_new_lit(ls, nparams++, "self");
1810 if (ls->token != ')') { 1810 if (ls->tok != ')') {
1811 do { 1811 do {
1812 if (ls->token == TK_name || (!LJ_52 && ls->token == TK_goto)) { 1812 if (ls->tok == TK_name || (!LJ_52 && ls->tok == TK_goto)) {
1813 var_new(ls, nparams++, lex_str(ls)); 1813 var_new(ls, nparams++, lex_str(ls));
1814 } else if (ls->token == TK_dots) { 1814 } else if (ls->tok == TK_dots) {
1815 lj_lex_next(ls); 1815 lj_lex_next(ls);
1816 fs->flags |= PROTO_VARARG; 1816 fs->flags |= PROTO_VARARG;
1817 break; 1817 break;
@@ -1845,7 +1845,7 @@ static void parse_body(LexState *ls, ExpDesc *e, int needself, BCLine line)
1845 fs.bclim = pfs->bclim - pfs->pc; 1845 fs.bclim = pfs->bclim - pfs->pc;
1846 bcemit_AD(&fs, BC_FUNCF, 0, 0); /* Placeholder. */ 1846 bcemit_AD(&fs, BC_FUNCF, 0, 0); /* Placeholder. */
1847 parse_chunk(ls); 1847 parse_chunk(ls);
1848 if (ls->token != TK_end) lex_match(ls, TK_end, TK_function, line); 1848 if (ls->tok != TK_end) lex_match(ls, TK_end, TK_function, line);
1849 pt = fs_finish(ls, (ls->lastline = ls->linenumber)); 1849 pt = fs_finish(ls, (ls->lastline = ls->linenumber));
1850 pfs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */ 1850 pfs->bcbase = ls->bcstack + oldbase; /* May have been reallocated. */
1851 pfs->bclim = (BCPos)(ls->sizebcstack - oldbase); 1851 pfs->bclim = (BCPos)(ls->sizebcstack - oldbase);
@@ -1884,13 +1884,13 @@ static void parse_args(LexState *ls, ExpDesc *e)
1884 BCIns ins; 1884 BCIns ins;
1885 BCReg base; 1885 BCReg base;
1886 BCLine line = ls->linenumber; 1886 BCLine line = ls->linenumber;
1887 if (ls->token == '(') { 1887 if (ls->tok == '(') {
1888#if !LJ_52 1888#if !LJ_52
1889 if (line != ls->lastline) 1889 if (line != ls->lastline)
1890 err_syntax(ls, LJ_ERR_XAMBIG); 1890 err_syntax(ls, LJ_ERR_XAMBIG);
1891#endif 1891#endif
1892 lj_lex_next(ls); 1892 lj_lex_next(ls);
1893 if (ls->token == ')') { /* f(). */ 1893 if (ls->tok == ')') { /* f(). */
1894 args.k = VVOID; 1894 args.k = VVOID;
1895 } else { 1895 } else {
1896 expr_list(ls, &args); 1896 expr_list(ls, &args);
@@ -1898,11 +1898,11 @@ static void parse_args(LexState *ls, ExpDesc *e)
1898 setbc_b(bcptr(fs, &args), 0); /* Pass on multiple results. */ 1898 setbc_b(bcptr(fs, &args), 0); /* Pass on multiple results. */
1899 } 1899 }
1900 lex_match(ls, ')', '(', line); 1900 lex_match(ls, ')', '(', line);
1901 } else if (ls->token == '{') { 1901 } else if (ls->tok == '{') {
1902 expr_table(ls, &args); 1902 expr_table(ls, &args);
1903 } else if (ls->token == TK_string) { 1903 } else if (ls->tok == TK_string) {
1904 expr_init(&args, VKSTR, 0); 1904 expr_init(&args, VKSTR, 0);
1905 args.u.sval = strV(&ls->tokenval); 1905 args.u.sval = strV(&ls->tokval);
1906 lj_lex_next(ls); 1906 lj_lex_next(ls);
1907 } else { 1907 } else {
1908 err_syntax(ls, LJ_ERR_XFUNARG); 1908 err_syntax(ls, LJ_ERR_XFUNARG);
@@ -1928,32 +1928,32 @@ static void expr_primary(LexState *ls, ExpDesc *v)
1928{ 1928{
1929 FuncState *fs = ls->fs; 1929 FuncState *fs = ls->fs;
1930 /* Parse prefix expression. */ 1930 /* Parse prefix expression. */
1931 if (ls->token == '(') { 1931 if (ls->tok == '(') {
1932 BCLine line = ls->linenumber; 1932 BCLine line = ls->linenumber;
1933 lj_lex_next(ls); 1933 lj_lex_next(ls);
1934 expr(ls, v); 1934 expr(ls, v);
1935 lex_match(ls, ')', '(', line); 1935 lex_match(ls, ')', '(', line);
1936 expr_discharge(ls->fs, v); 1936 expr_discharge(ls->fs, v);
1937 } else if (ls->token == TK_name || (!LJ_52 && ls->token == TK_goto)) { 1937 } else if (ls->tok == TK_name || (!LJ_52 && ls->tok == TK_goto)) {
1938 var_lookup(ls, v); 1938 var_lookup(ls, v);
1939 } else { 1939 } else {
1940 err_syntax(ls, LJ_ERR_XSYMBOL); 1940 err_syntax(ls, LJ_ERR_XSYMBOL);
1941 } 1941 }
1942 for (;;) { /* Parse multiple expression suffixes. */ 1942 for (;;) { /* Parse multiple expression suffixes. */
1943 if (ls->token == '.') { 1943 if (ls->tok == '.') {
1944 expr_field(ls, v); 1944 expr_field(ls, v);
1945 } else if (ls->token == '[') { 1945 } else if (ls->tok == '[') {
1946 ExpDesc key; 1946 ExpDesc key;
1947 expr_toanyreg(fs, v); 1947 expr_toanyreg(fs, v);
1948 expr_bracket(ls, &key); 1948 expr_bracket(ls, &key);
1949 expr_index(fs, v, &key); 1949 expr_index(fs, v, &key);
1950 } else if (ls->token == ':') { 1950 } else if (ls->tok == ':') {
1951 ExpDesc key; 1951 ExpDesc key;
1952 lj_lex_next(ls); 1952 lj_lex_next(ls);
1953 expr_str(ls, &key); 1953 expr_str(ls, &key);
1954 bcemit_method(fs, v, &key); 1954 bcemit_method(fs, v, &key);
1955 parse_args(ls, v); 1955 parse_args(ls, v);
1956 } else if (ls->token == '(' || ls->token == TK_string || ls->token == '{') { 1956 } else if (ls->tok == '(' || ls->tok == TK_string || ls->tok == '{') {
1957 expr_tonextreg(fs, v); 1957 expr_tonextreg(fs, v);
1958 parse_args(ls, v); 1958 parse_args(ls, v);
1959 } else { 1959 } else {
@@ -1965,14 +1965,14 @@ static void expr_primary(LexState *ls, ExpDesc *v)
1965/* Parse simple expression. */ 1965/* Parse simple expression. */
1966static void expr_simple(LexState *ls, ExpDesc *v) 1966static void expr_simple(LexState *ls, ExpDesc *v)
1967{ 1967{
1968 switch (ls->token) { 1968 switch (ls->tok) {
1969 case TK_number: 1969 case TK_number:
1970 expr_init(v, (LJ_HASFFI && tviscdata(&ls->tokenval)) ? VKCDATA : VKNUM, 0); 1970 expr_init(v, (LJ_HASFFI && tviscdata(&ls->tokval)) ? VKCDATA : VKNUM, 0);
1971 copyTV(ls->L, &v->u.nval, &ls->tokenval); 1971 copyTV(ls->L, &v->u.nval, &ls->tokval);
1972 break; 1972 break;
1973 case TK_string: 1973 case TK_string:
1974 expr_init(v, VKSTR, 0); 1974 expr_init(v, VKSTR, 0);
1975 v->u.sval = strV(&ls->tokenval); 1975 v->u.sval = strV(&ls->tokval);
1976 break; 1976 break;
1977 case TK_nil: 1977 case TK_nil:
1978 expr_init(v, VKNIL, 0); 1978 expr_init(v, VKNIL, 0);
@@ -2060,11 +2060,11 @@ static BinOpr expr_binop(LexState *ls, ExpDesc *v, uint32_t limit);
2060static void expr_unop(LexState *ls, ExpDesc *v) 2060static void expr_unop(LexState *ls, ExpDesc *v)
2061{ 2061{
2062 BCOp op; 2062 BCOp op;
2063 if (ls->token == TK_not) { 2063 if (ls->tok == TK_not) {
2064 op = BC_NOT; 2064 op = BC_NOT;
2065 } else if (ls->token == '-') { 2065 } else if (ls->tok == '-') {
2066 op = BC_UNM; 2066 op = BC_UNM;
2067 } else if (ls->token == '#') { 2067 } else if (ls->tok == '#') {
2068 op = BC_LEN; 2068 op = BC_LEN;
2069 } else { 2069 } else {
2070 expr_simple(ls, v); 2070 expr_simple(ls, v);
@@ -2081,7 +2081,7 @@ static BinOpr expr_binop(LexState *ls, ExpDesc *v, uint32_t limit)
2081 BinOpr op; 2081 BinOpr op;
2082 synlevel_begin(ls); 2082 synlevel_begin(ls);
2083 expr_unop(ls, v); 2083 expr_unop(ls, v);
2084 op = token2binop(ls->token); 2084 op = token2binop(ls->tok);
2085 while (op != OPR_NOBINOPR && priority[op].left > limit) { 2085 while (op != OPR_NOBINOPR && priority[op].left > limit) {
2086 ExpDesc v2; 2086 ExpDesc v2;
2087 BinOpr nextop; 2087 BinOpr nextop;
@@ -2270,9 +2270,9 @@ static void parse_func(LexState *ls, BCLine line)
2270 lj_lex_next(ls); /* Skip 'function'. */ 2270 lj_lex_next(ls); /* Skip 'function'. */
2271 /* Parse function name. */ 2271 /* Parse function name. */
2272 var_lookup(ls, &v); 2272 var_lookup(ls, &v);
2273 while (ls->token == '.') /* Multiple dot-separated fields. */ 2273 while (ls->tok == '.') /* Multiple dot-separated fields. */
2274 expr_field(ls, &v); 2274 expr_field(ls, &v);
2275 if (ls->token == ':') { /* Optional colon to signify method call. */ 2275 if (ls->tok == ':') { /* Optional colon to signify method call. */
2276 needself = 1; 2276 needself = 1;
2277 expr_field(ls, &v); 2277 expr_field(ls, &v);
2278 } 2278 }
@@ -2285,9 +2285,9 @@ static void parse_func(LexState *ls, BCLine line)
2285/* -- Control transfer statements ----------------------------------------- */ 2285/* -- Control transfer statements ----------------------------------------- */
2286 2286
2287/* Check for end of block. */ 2287/* Check for end of block. */
2288static int endofblock(LexToken token) 2288static int parse_isend(LexToken tok)
2289{ 2289{
2290 switch (token) { 2290 switch (tok) {
2291 case TK_else: case TK_elseif: case TK_end: case TK_until: case TK_eof: 2291 case TK_else: case TK_elseif: case TK_end: case TK_until: case TK_eof:
2292 return 1; 2292 return 1;
2293 default: 2293 default:
@@ -2302,7 +2302,7 @@ static void parse_return(LexState *ls)
2302 FuncState *fs = ls->fs; 2302 FuncState *fs = ls->fs;
2303 lj_lex_next(ls); /* Skip 'return'. */ 2303 lj_lex_next(ls); /* Skip 'return'. */
2304 fs->flags |= PROTO_HAS_RETURN; 2304 fs->flags |= PROTO_HAS_RETURN;
2305 if (endofblock(ls->token) || ls->token == ';') { /* Bare return. */ 2305 if (parse_isend(ls->tok) || ls->tok == ';') { /* Bare return. */
2306 ins = BCINS_AD(BC_RET0, 0, 1); 2306 ins = BCINS_AD(BC_RET0, 0, 1);
2307 } else { /* Return with one or more values. */ 2307 } else { /* Return with one or more values. */
2308 ExpDesc e; /* Receives the _last_ expression in the list. */ 2308 ExpDesc e; /* Receives the _last_ expression in the list. */
@@ -2368,18 +2368,18 @@ static void parse_label(LexState *ls)
2368 lex_check(ls, TK_label); 2368 lex_check(ls, TK_label);
2369 /* Recursively parse trailing statements: labels and ';' (Lua 5.2 only). */ 2369 /* Recursively parse trailing statements: labels and ';' (Lua 5.2 only). */
2370 for (;;) { 2370 for (;;) {
2371 if (ls->token == TK_label) { 2371 if (ls->tok == TK_label) {
2372 synlevel_begin(ls); 2372 synlevel_begin(ls);
2373 parse_label(ls); 2373 parse_label(ls);
2374 synlevel_end(ls); 2374 synlevel_end(ls);
2375 } else if (LJ_52 && ls->token == ';') { 2375 } else if (LJ_52 && ls->tok == ';') {
2376 lj_lex_next(ls); 2376 lj_lex_next(ls);
2377 } else { 2377 } else {
2378 break; 2378 break;
2379 } 2379 }
2380 } 2380 }
2381 /* Trailing label is considered to be outside of scope. */ 2381 /* Trailing label is considered to be outside of scope. */
2382 if (endofblock(ls->token) && ls->token != TK_until) 2382 if (parse_isend(ls->tok) && ls->tok != TK_until)
2383 ls->vstack[idx].slot = fs->bl->nactvar; 2383 ls->vstack[idx].slot = fs->bl->nactvar;
2384 gola_resolve(ls, fs->bl, idx); 2384 gola_resolve(ls, fs->bl, idx);
2385} 2385}
@@ -2563,9 +2563,9 @@ static void parse_for(LexState *ls, BCLine line)
2563 fscope_begin(fs, &bl, FSCOPE_LOOP); 2563 fscope_begin(fs, &bl, FSCOPE_LOOP);
2564 lj_lex_next(ls); /* Skip 'for'. */ 2564 lj_lex_next(ls); /* Skip 'for'. */
2565 varname = lex_str(ls); /* Get first variable name. */ 2565 varname = lex_str(ls); /* Get first variable name. */
2566 if (ls->token == '=') 2566 if (ls->tok == '=')
2567 parse_for_num(ls, varname, line); 2567 parse_for_num(ls, varname, line);
2568 else if (ls->token == ',' || ls->token == TK_in) 2568 else if (ls->tok == ',' || ls->tok == TK_in)
2569 parse_for_iter(ls, varname); 2569 parse_for_iter(ls, varname);
2570 else 2570 else
2571 err_syntax(ls, LJ_ERR_XFOR); 2571 err_syntax(ls, LJ_ERR_XFOR);
@@ -2591,12 +2591,12 @@ static void parse_if(LexState *ls, BCLine line)
2591 BCPos flist; 2591 BCPos flist;
2592 BCPos escapelist = NO_JMP; 2592 BCPos escapelist = NO_JMP;
2593 flist = parse_then(ls); 2593 flist = parse_then(ls);
2594 while (ls->token == TK_elseif) { /* Parse multiple 'elseif' blocks. */ 2594 while (ls->tok == TK_elseif) { /* Parse multiple 'elseif' blocks. */
2595 jmp_append(fs, &escapelist, bcemit_jmp(fs)); 2595 jmp_append(fs, &escapelist, bcemit_jmp(fs));
2596 jmp_tohere(fs, flist); 2596 jmp_tohere(fs, flist);
2597 flist = parse_then(ls); 2597 flist = parse_then(ls);
2598 } 2598 }
2599 if (ls->token == TK_else) { /* Parse optional 'else' block. */ 2599 if (ls->tok == TK_else) { /* Parse optional 'else' block. */
2600 jmp_append(fs, &escapelist, bcemit_jmp(fs)); 2600 jmp_append(fs, &escapelist, bcemit_jmp(fs));
2601 jmp_tohere(fs, flist); 2601 jmp_tohere(fs, flist);
2602 lj_lex_next(ls); /* Skip 'else'. */ 2602 lj_lex_next(ls); /* Skip 'else'. */
@@ -2614,7 +2614,7 @@ static void parse_if(LexState *ls, BCLine line)
2614static int parse_stmt(LexState *ls) 2614static int parse_stmt(LexState *ls)
2615{ 2615{
2616 BCLine line = ls->linenumber; 2616 BCLine line = ls->linenumber;
2617 switch (ls->token) { 2617 switch (ls->tok) {
2618 case TK_if: 2618 case TK_if:
2619 parse_if(ls, line); 2619 parse_if(ls, line);
2620 break; 2620 break;
@@ -2672,7 +2672,7 @@ static void parse_chunk(LexState *ls)
2672{ 2672{
2673 int islast = 0; 2673 int islast = 0;
2674 synlevel_begin(ls); 2674 synlevel_begin(ls);
2675 while (!islast && !endofblock(ls->token)) { 2675 while (!islast && !parse_isend(ls->tok)) {
2676 islast = parse_stmt(ls); 2676 islast = parse_stmt(ls);
2677 lex_opt(ls, ';'); 2677 lex_opt(ls, ';');
2678 lua_assert(ls->fs->framesize >= ls->fs->freereg && 2678 lua_assert(ls->fs->framesize >= ls->fs->freereg &&
@@ -2707,7 +2707,7 @@ GCproto *lj_parse(LexState *ls)
2707 bcemit_AD(&fs, BC_FUNCV, 0, 0); /* Placeholder. */ 2707 bcemit_AD(&fs, BC_FUNCV, 0, 0); /* Placeholder. */
2708 lj_lex_next(ls); /* Read-ahead first token. */ 2708 lj_lex_next(ls); /* Read-ahead first token. */
2709 parse_chunk(ls); 2709 parse_chunk(ls);
2710 if (ls->token != TK_eof) 2710 if (ls->tok != TK_eof)
2711 err_token(ls, TK_eof); 2711 err_token(ls, TK_eof);
2712 pt = fs_finish(ls, ls->linenumber); 2712 pt = fs_finish(ls, ls->linenumber);
2713 L->top--; /* Drop chunkname. */ 2713 L->top--; /* Drop chunkname. */