ls 637 lib/lua/lauxlib.c LoadS *ls = (LoadS *)ud; ls 639 lib/lua/lauxlib.c if (ls->size == 0) return NULL; ls 640 lib/lua/lauxlib.c *size = ls->size; ls 641 lib/lua/lauxlib.c ls->size = 0; ls 642 lib/lua/lauxlib.c return ls->s; ls 648 lib/lua/lauxlib.c LoadS ls; ls 649 lib/lua/lauxlib.c ls.s = buff; ls 650 lib/lua/lauxlib.c ls.size = size; ls 651 lib/lua/lauxlib.c return lua_load(L, getS, &ls, name); ls 85 lib/lua/lcode.c luaX_syntaxerror(fs->ls, "control structure too long"); ls 203 lib/lua/lcode.c luaX_syntaxerror(fs->ls, "function or expression too complex"); ls 808 lib/lua/lcode.c return luaK_code(fs, CREATE_ABC(o, a, b, c), fs->ls->lastline); ls 815 lib/lua/lcode.c return luaK_code(fs, CREATE_ABx(o, a, bc), fs->ls->lastline); ls 827 lib/lua/lcode.c luaK_code(fs, cast(Instruction, c), fs->ls->lastline); ls 28 lib/lua/llex.c #define next(ls) (ls->current = zgetc(ls->z)) ls 33 lib/lua/llex.c #define currIsNewline(ls) (ls->current == '\n' || ls->current == '\r') ls 48 lib/lua/llex.c #define save_and_next(ls) (save(ls, ls->current), next(ls)) ls 51 lib/lua/llex.c static void save (LexState *ls, int c) { ls 52 lib/lua/llex.c Mbuffer *b = ls->buff; ls 56 lib/lua/llex.c luaX_lexerror(ls, "lexical element too long", 0); ls 58 lib/lua/llex.c luaZ_resizebuffer(ls->L, b, newsize); ls 78 lib/lua/llex.c LUAI_FUNC const char *luaX_token2str (LexState *ls, int token) { ls 81 lib/lua/llex.c return (iscntrl(token)) ? luaO_pushfstring(ls->L, "char(%d)", token) : ls 82 lib/lua/llex.c luaO_pushfstring(ls->L, "%c", token); ls 89 lib/lua/llex.c static const char *txtToken (LexState *ls, int token) { ls 94 lib/lua/llex.c save(ls, '\0'); ls 95 lib/lua/llex.c return luaZ_buffer(ls->buff); ls 97 lib/lua/llex.c return luaX_token2str(ls, token); ls 102 lib/lua/llex.c LUAI_FUNC void luaX_lexerror (LexState *ls, const char *msg, int token) { ls 104 lib/lua/llex.c luaO_chunkid(buff, getstr(ls->source), MAXSRC); ls 105 lib/lua/llex.c msg = luaO_pushfstring(ls->L, "%s:%d: %s", buff, ls->linenumber, msg); ls 107 lib/lua/llex.c luaO_pushfstring(ls->L, "%s near " LUA_QS, msg, txtToken(ls, token)); ls 108 lib/lua/llex.c luaD_throw(ls->L, LUA_ERRSYNTAX); ls 112 lib/lua/llex.c LUAI_FUNC void luaX_syntaxerror (LexState *ls, const char *msg) { ls 113 lib/lua/llex.c luaX_lexerror(ls, msg, ls->t.token); ls 117 lib/lua/llex.c LUAI_FUNC TString *luaX_newstring (LexState *ls, const char *str, size_t l) { ls 118 lib/lua/llex.c lua_State *L = ls->L; ls 120 lib/lua/llex.c TValue *o = luaH_setstr(L, ls->fs->h, ts); /* entry for `str' */ ls 129 lib/lua/llex.c static void inclinenumber (LexState *ls) { ls 130 lib/lua/llex.c int old = ls->current; ls 131 lib/lua/llex.c lua_assert(currIsNewline(ls)); ls 132 lib/lua/llex.c next(ls); /* skip `\n' or `\r' */ ls 133 lib/lua/llex.c if (currIsNewline(ls) && ls->current != old) ls 134 lib/lua/llex.c next(ls); /* skip `\n\r' or `\r\n' */ ls 135 lib/lua/llex.c if (++ls->linenumber >= MAX_INT) ls 136 lib/lua/llex.c luaX_syntaxerror(ls, "chunk has too many lines"); ls 140 lib/lua/llex.c LUAI_FUNC void luaX_setinput (lua_State *L, LexState *ls, ZIO *z, TString *source) { ls 141 lib/lua/llex.c ls->decpoint = '.'; ls 142 lib/lua/llex.c ls->L = L; ls 143 lib/lua/llex.c ls->lookahead.token = TK_EOS; /* no look-ahead token */ ls 144 lib/lua/llex.c ls->z = z; ls 145 lib/lua/llex.c ls->fs = NULL; ls 146 lib/lua/llex.c ls->linenumber = 1; ls 147 lib/lua/llex.c ls->lastline = 1; ls 148 lib/lua/llex.c ls->source = source; ls 149 lib/lua/llex.c luaZ_resizebuffer(ls->L, ls->buff, LUA_MINBUFFER); /* initialize buffer */ ls 150 lib/lua/llex.c next(ls); /* read first char */ ls 163 lib/lua/llex.c static int check_next (LexState *ls, const char *set) { ls 164 lib/lua/llex.c if (!strchr(set, ls->current)) ls 166 lib/lua/llex.c save_and_next(ls); ls 171 lib/lua/llex.c static void buffreplace (LexState *ls, char from, char to) { ls 172 lib/lua/llex.c size_t n = luaZ_bufflen(ls->buff); ls 173 lib/lua/llex.c char *p = luaZ_buffer(ls->buff); ls 179 lib/lua/llex.c static void trydecpoint (LexState *ls, __attribute__ ((unused))SemInfo *seminfo) { ls 183 lib/lua/llex.c char old = ls->decpoint; ls 184 lib/lua/llex.c ls->decpoint = (cv ? cv->decimal_point[0] : '.'); ls 185 lib/lua/llex.c buffreplace(ls, old, ls->decpoint); /* try updated decimal separator */ ls 186 lib/lua/llex.c if (!luaO_str2d(luaZ_buffer(ls->buff), &seminfo->r)) { ls 188 lib/lua/llex.c buffreplace(ls, ls->decpoint, '.'); /* undo change (for error message) */ ls 190 lib/lua/llex.c luaX_lexerror(ls, "malformed number", TK_NUMBER); ls 198 lib/lua/llex.c static void read_numeral (LexState *ls, SemInfo *seminfo) { ls 199 lib/lua/llex.c lua_assert(isdigit(ls->current)); ls 201 lib/lua/llex.c save_and_next(ls); ls 202 lib/lua/llex.c } while (isdigit(ls->current) || ls->current == '.'); ls 203 lib/lua/llex.c if (check_next(ls, "Ee")) /* `E'? */ ls 204 lib/lua/llex.c check_next(ls, "+-"); /* optional exponent sign */ ls 205 lib/lua/llex.c while (isalnum(ls->current) || ls->current == '_') ls 206 lib/lua/llex.c save_and_next(ls); ls 207 lib/lua/llex.c save(ls, '\0'); ls 208 lib/lua/llex.c buffreplace(ls, '.', ls->decpoint); /* follow locale for decimal point */ ls 209 lib/lua/llex.c if (!luaO_str2d(luaZ_buffer(ls->buff), &seminfo->r)) /* format error? */ ls 210 lib/lua/llex.c trydecpoint(ls, seminfo); /* try to update decimal point separator */ ls 214 lib/lua/llex.c static int skip_sep (LexState *ls) { ls 216 lib/lua/llex.c int s = ls->current; ls 218 lib/lua/llex.c save_and_next(ls); ls 219 lib/lua/llex.c while (ls->current == '=') { ls 220 lib/lua/llex.c save_and_next(ls); ls 223 lib/lua/llex.c return (ls->current == s) ? count : (-count) - 1; ls 227 lib/lua/llex.c static void read_long_string (LexState *ls, SemInfo *seminfo, int sep) { ls 230 lib/lua/llex.c save_and_next(ls); /* skip 2nd `[' */ ls 231 lib/lua/llex.c if (currIsNewline(ls)) /* string starts with a newline? */ ls 232 lib/lua/llex.c inclinenumber(ls); /* skip it */ ls 234 lib/lua/llex.c switch (ls->current) { ls 236 lib/lua/llex.c luaX_lexerror(ls, (seminfo) ? "unfinished long string" : ls 241 lib/lua/llex.c if (skip_sep(ls) == sep) { ls 242 lib/lua/llex.c save_and_next(ls); /* skip 2nd `[' */ ls 246 lib/lua/llex.c luaX_lexerror(ls, "nesting of [[...]] is deprecated", '['); ls 253 lib/lua/llex.c if (skip_sep(ls) == sep) { ls 254 lib/lua/llex.c save_and_next(ls); /* skip 2nd `]' */ ls 265 lib/lua/llex.c save(ls, '\n'); ls 266 lib/lua/llex.c inclinenumber(ls); ls 267 lib/lua/llex.c if (!seminfo) luaZ_resetbuffer(ls->buff); /* avoid wasting space */ ls 271 lib/lua/llex.c if (seminfo) save_and_next(ls); ls 272 lib/lua/llex.c else next(ls); ls 277 lib/lua/llex.c seminfo->ts = luaX_newstring(ls, luaZ_buffer(ls->buff) + (2 + sep), ls 278 lib/lua/llex.c luaZ_bufflen(ls->buff) - 2*(2 + sep)); ls 282 lib/lua/llex.c static void read_string (LexState *ls, int del, SemInfo *seminfo) { ls 283 lib/lua/llex.c save_and_next(ls); ls 284 lib/lua/llex.c while (ls->current != del) { ls 285 lib/lua/llex.c switch (ls->current) { ls 287 lib/lua/llex.c luaX_lexerror(ls, "unfinished string", TK_EOS); ls 291 lib/lua/llex.c luaX_lexerror(ls, "unfinished string", TK_STRING); ls 295 lib/lua/llex.c next(ls); /* do not save the `\' */ ls 296 lib/lua/llex.c switch (ls->current) { ls 305 lib/lua/llex.c case '\r': save(ls, '\n'); inclinenumber(ls); continue; ls 308 lib/lua/llex.c if (!isdigit(ls->current)) ls 309 lib/lua/llex.c save_and_next(ls); /* handles \\, \", \', and \? */ ls 314 lib/lua/llex.c c = 10*c + (ls->current-'0'); ls 315 lib/lua/llex.c next(ls); ls 316 lib/lua/llex.c } while (++i<3 && isdigit(ls->current)); ls 318 lib/lua/llex.c luaX_lexerror(ls, "escape sequence too large", TK_STRING); ls 319 lib/lua/llex.c save(ls, c); ls 324 lib/lua/llex.c save(ls, c); ls 325 lib/lua/llex.c next(ls); ls 329 lib/lua/llex.c save_and_next(ls); ls 332 lib/lua/llex.c save_and_next(ls); /* skip delimiter */ ls 333 lib/lua/llex.c seminfo->ts = luaX_newstring(ls, luaZ_buffer(ls->buff) + 1, ls 334 lib/lua/llex.c luaZ_bufflen(ls->buff) - 2); ls 338 lib/lua/llex.c static int llex (LexState *ls, SemInfo *seminfo) { ls 339 lib/lua/llex.c luaZ_resetbuffer(ls->buff); ls 341 lib/lua/llex.c switch (ls->current) { ls 344 lib/lua/llex.c inclinenumber(ls); ls 348 lib/lua/llex.c next(ls); ls 349 lib/lua/llex.c if (ls->current != '-') return '-'; ls 351 lib/lua/llex.c next(ls); ls 352 lib/lua/llex.c if (ls->current == '[') { ls 353 lib/lua/llex.c int sep = skip_sep(ls); ls 354 lib/lua/llex.c luaZ_resetbuffer(ls->buff); /* `skip_sep' may dirty the buffer */ ls 356 lib/lua/llex.c read_long_string(ls, NULL, sep); /* long comment */ ls 357 lib/lua/llex.c luaZ_resetbuffer(ls->buff); ls 362 lib/lua/llex.c while (!currIsNewline(ls) && ls->current != EOZ) ls 363 lib/lua/llex.c next(ls); ls 367 lib/lua/llex.c int sep = skip_sep(ls); ls 369 lib/lua/llex.c read_long_string(ls, seminfo, sep); ls 373 lib/lua/llex.c else luaX_lexerror(ls, "invalid long string delimiter", TK_STRING); ls 376 lib/lua/llex.c next(ls); ls 377 lib/lua/llex.c if (ls->current != '=') return '='; ls 378 lib/lua/llex.c else { next(ls); return TK_EQ; } ls 381 lib/lua/llex.c next(ls); ls 382 lib/lua/llex.c if (ls->current != '=') return '<'; ls 383 lib/lua/llex.c else { next(ls); return TK_LE; } ls 386 lib/lua/llex.c next(ls); ls 387 lib/lua/llex.c if (ls->current != '=') return '>'; ls 388 lib/lua/llex.c else { next(ls); return TK_GE; } ls 391 lib/lua/llex.c next(ls); ls 392 lib/lua/llex.c if (ls->current != '=') return '~'; ls 393 lib/lua/llex.c else { next(ls); return TK_NE; } ls 397 lib/lua/llex.c read_string(ls, ls->current, seminfo); ls 401 lib/lua/llex.c save_and_next(ls); ls 402 lib/lua/llex.c if (check_next(ls, ".")) { ls 403 lib/lua/llex.c if (check_next(ls, ".")) ls 407 lib/lua/llex.c else if (!isdigit(ls->current)) return '.'; ls 409 lib/lua/llex.c read_numeral(ls, seminfo); ls 417 lib/lua/llex.c if (isspace(ls->current)) { ls 418 lib/lua/llex.c lua_assert(!currIsNewline(ls)); ls 419 lib/lua/llex.c next(ls); ls 422 lib/lua/llex.c else if (isdigit(ls->current)) { ls 423 lib/lua/llex.c read_numeral(ls, seminfo); ls 426 lib/lua/llex.c else if (isalpha(ls->current) || ls->current == '_') { ls 430 lib/lua/llex.c save_and_next(ls); ls 431 lib/lua/llex.c } while (isalnum(ls->current) || ls->current == '_'); ls 432 lib/lua/llex.c ts = luaX_newstring(ls, luaZ_buffer(ls->buff), ls 433 lib/lua/llex.c luaZ_bufflen(ls->buff)); ls 442 lib/lua/llex.c int c = ls->current; ls 443 lib/lua/llex.c next(ls); ls 452 lib/lua/llex.c LUAI_FUNC void luaX_next (LexState *ls) { ls 453 lib/lua/llex.c ls->lastline = ls->linenumber; ls 454 lib/lua/llex.c if (ls->lookahead.token != TK_EOS) { /* is there a look-ahead token? */ ls 455 lib/lua/llex.c ls->t = ls->lookahead; /* use this one */ ls 456 lib/lua/llex.c ls->lookahead.token = TK_EOS; /* and discharge it */ ls 459 lib/lua/llex.c ls->t.token = llex(ls, &ls->t.seminfo); /* read next token */ ls 463 lib/lua/llex.c LUAI_FUNC void luaX_lookahead (LexState *ls) { ls 464 lib/lua/llex.c lua_assert(ls->lookahead.token == TK_EOS); ls 465 lib/lua/llex.c ls->lookahead.token = llex(ls, &ls->lookahead.seminfo); ls 71 lib/lua/llex.h LUAI_FUNC void luaX_setinput (lua_State *L, LexState *ls, ZIO *z, ls 73 lib/lua/llex.h LUAI_FUNC TString *luaX_newstring (LexState *ls, const char *str, size_t l); ls 74 lib/lua/llex.h LUAI_FUNC void luaX_next (LexState *ls); ls 75 lib/lua/llex.h LUAI_FUNC void luaX_lookahead (LexState *ls); ls 76 lib/lua/llex.h LUAI_FUNC void luaX_lexerror (LexState *ls, const char *msg, int token); ls 77 lib/lua/llex.h LUAI_FUNC void luaX_syntaxerror (LexState *ls, const char *s); ls 78 lib/lua/llex.h LUAI_FUNC const char *luaX_token2str (LexState *ls, int token); ls 53 lib/lua/lparser.c static void chunk (LexState *ls); ls 54 lib/lua/lparser.c static void expr (LexState *ls, expdesc *v); ls 57 lib/lua/lparser.c static void anchor_token (LexState *ls) { ls 58 lib/lua/lparser.c if (ls->t.token == TK_NAME || ls->t.token == TK_STRING) { ls 59 lib/lua/lparser.c TString *ts = ls->t.seminfo.ts; ls 60 lib/lua/lparser.c luaX_newstring(ls, getstr(ts), ts->tsv.len); ls 65 lib/lua/lparser.c static void error_expected (LexState *ls, int token) { ls 66 lib/lua/lparser.c luaX_syntaxerror(ls, ls 67 lib/lua/lparser.c luaO_pushfstring(ls->L, LUA_QS " expected", luaX_token2str(ls, token))); ls 76 lib/lua/lparser.c luaX_lexerror(fs->ls, msg, 0); ls 80 lib/lua/lparser.c static int testnext (LexState *ls, int c) { ls 81 lib/lua/lparser.c if (ls->t.token == c) { ls 82 lib/lua/lparser.c luaX_next(ls); ls 89 lib/lua/lparser.c static void check (LexState *ls, int c) { ls 90 lib/lua/lparser.c if (ls->t.token != c) ls 91 lib/lua/lparser.c error_expected(ls, c); ls 94 lib/lua/lparser.c static void checknext (LexState *ls, int c) { ls 95 lib/lua/lparser.c check(ls, c); ls 96 lib/lua/lparser.c luaX_next(ls); ls 100 lib/lua/lparser.c #define check_condition(ls,c,msg) { if (!(c)) luaX_syntaxerror(ls, msg); } ls 104 lib/lua/lparser.c static void check_match (LexState *ls, int what, int who, int where) { ls 105 lib/lua/lparser.c if (!testnext(ls, what)) { ls 106 lib/lua/lparser.c if (where == ls->linenumber) ls 107 lib/lua/lparser.c error_expected(ls, what); ls 109 lib/lua/lparser.c luaX_syntaxerror(ls, luaO_pushfstring(ls->L, ls 111 lib/lua/lparser.c luaX_token2str(ls, what), luaX_token2str(ls, who), where)); ls 117 lib/lua/lparser.c static TString *str_checkname (LexState *ls) { ls 119 lib/lua/lparser.c check(ls, TK_NAME); ls 120 lib/lua/lparser.c ts = ls->t.seminfo.ts; ls 121 lib/lua/lparser.c luaX_next(ls); ls 133 lib/lua/lparser.c static void codestring (LexState *ls, expdesc *e, TString *s) { ls 134 lib/lua/lparser.c init_exp(e, VK, luaK_stringK(ls->fs, s)); ls 138 lib/lua/lparser.c static void checkname(LexState *ls, expdesc *e) { ls 139 lib/lua/lparser.c codestring(ls, e, str_checkname(ls)); ls 143 lib/lua/lparser.c static int registerlocalvar (LexState *ls, TString *varname) { ls 144 lib/lua/lparser.c FuncState *fs = ls->fs; ls 147 lib/lua/lparser.c luaM_growvector(ls->L, f->locvars, fs->nlocvars, f->sizelocvars, ls 151 lib/lua/lparser.c luaC_objbarrier(ls->L, f, varname); ls 156 lib/lua/lparser.c #define new_localvarliteral(ls,v,n) \ ls 157 lib/lua/lparser.c new_localvar(ls, luaX_newstring(ls, "" v, (sizeof(v)/sizeof(char))-1), n) ls 160 lib/lua/lparser.c static void new_localvar (LexState *ls, TString *name, int n) { ls 161 lib/lua/lparser.c FuncState *fs = ls->fs; ls 163 lib/lua/lparser.c fs->actvar[fs->nactvar+n] = cast(unsigned short, registerlocalvar(ls, name)); ls 167 lib/lua/lparser.c static void adjustlocalvars (LexState *ls, int nvars) { ls 168 lib/lua/lparser.c FuncState *fs = ls->fs; ls 176 lib/lua/lparser.c static void removevars (LexState *ls, int tolevel) { ls 177 lib/lua/lparser.c FuncState *fs = ls->fs; ls 248 lib/lua/lparser.c static void singlevar (LexState *ls, expdesc *var) { ls 249 lib/lua/lparser.c TString *varname = str_checkname(ls); ls 250 lib/lua/lparser.c FuncState *fs = ls->fs; ls 256 lib/lua/lparser.c static void adjust_assign (LexState *ls, int nvars, int nexps, expdesc *e) { ls 257 lib/lua/lparser.c FuncState *fs = ls->fs; ls 276 lib/lua/lparser.c static void enterlevel (LexState *ls) { ls 277 lib/lua/lparser.c if (++ls->L->nCcalls > LUAI_MAXCCALLS) ls 278 lib/lua/lparser.c luaX_lexerror(ls, "chunk has too many syntax levels", 0); ls 282 lib/lua/lparser.c #define leavelevel(ls) ((ls)->L->nCcalls--) ls 299 lib/lua/lparser.c removevars(fs->ls, bl->nactvar); ls 310 lib/lua/lparser.c static void pushclosure (LexState *ls, FuncState *func, expdesc *v) { ls 311 lib/lua/lparser.c FuncState *fs = ls->fs; ls 315 lib/lua/lparser.c luaM_growvector(ls->L, f->p, fs->np, f->sizep, Proto *, ls 319 lib/lua/lparser.c luaC_objbarrier(ls->L, f, func->f); ls 328 lib/lua/lparser.c static void open_func (LexState *ls, FuncState *fs) { ls 329 lib/lua/lparser.c lua_State *L = ls->L; ls 332 lib/lua/lparser.c fs->prev = ls->fs; /* linked list of funcstates */ ls 333 lib/lua/lparser.c fs->ls = ls; ls 335 lib/lua/lparser.c ls->fs = fs; ls 345 lib/lua/lparser.c f->source = ls->source; ls 356 lib/lua/lparser.c static void close_func (LexState *ls) { ls 357 lib/lua/lparser.c lua_State *L = ls->L; ls 358 lib/lua/lparser.c FuncState *fs = ls->fs; ls 360 lib/lua/lparser.c removevars(ls, 0); ls 376 lib/lua/lparser.c ls->fs = fs->prev; ls 378 lib/lua/lparser.c if (fs) anchor_token(ls); ls 407 lib/lua/lparser.c static void field (LexState *ls, expdesc *v) { ls 409 lib/lua/lparser.c FuncState *fs = ls->fs; ls 412 lib/lua/lparser.c luaX_next(ls); /* skip the dot or colon */ ls 413 lib/lua/lparser.c checkname(ls, &key); ls 418 lib/lua/lparser.c static void yindex (LexState *ls, expdesc *v) { ls 420 lib/lua/lparser.c luaX_next(ls); /* skip the '[' */ ls 421 lib/lua/lparser.c expr(ls, v); ls 422 lib/lua/lparser.c luaK_exp2val(ls->fs, v); ls 423 lib/lua/lparser.c checknext(ls, ']'); ls 443 lib/lua/lparser.c static void recfield (LexState *ls, struct ConsControl *cc) { ls 445 lib/lua/lparser.c FuncState *fs = ls->fs; ls 446 lib/lua/lparser.c int reg = ls->fs->freereg; ls 449 lib/lua/lparser.c if (ls->t.token == TK_NAME) { ls 451 lib/lua/lparser.c checkname(ls, &key); ls 454 lib/lua/lparser.c yindex(ls, &key); ls 456 lib/lua/lparser.c checknext(ls, '='); ls 458 lib/lua/lparser.c expr(ls, &val); ls 490 lib/lua/lparser.c static void listfield (LexState *ls, struct ConsControl *cc) { ls 491 lib/lua/lparser.c expr(ls, &cc->v); ls 492 lib/lua/lparser.c luaY_checklimit(ls->fs, cc->na, MAX_INT, "items in a constructor"); ls 498 lib/lua/lparser.c static void constructor (LexState *ls, expdesc *t) { ls 500 lib/lua/lparser.c FuncState *fs = ls->fs; ls 501 lib/lua/lparser.c int line = ls->linenumber; ls 508 lib/lua/lparser.c luaK_exp2nextreg(ls->fs, t); /* fix it at stack top (for gc) */ ls 509 lib/lua/lparser.c checknext(ls, '{'); ls 512 lib/lua/lparser.c if (ls->t.token == '}') break; ls 514 lib/lua/lparser.c switch(ls->t.token) { ls 516 lib/lua/lparser.c luaX_lookahead(ls); ls 517 lib/lua/lparser.c if (ls->lookahead.token != '=') /* expression? */ ls 518 lib/lua/lparser.c listfield(ls, &cc); ls 520 lib/lua/lparser.c recfield(ls, &cc); ls 524 lib/lua/lparser.c recfield(ls, &cc); ls 528 lib/lua/lparser.c listfield(ls, &cc); ls 532 lib/lua/lparser.c } while (testnext(ls, ',') || testnext(ls, ';')); ls 533 lib/lua/lparser.c check_match(ls, '}', '{', line); ls 543 lib/lua/lparser.c static void parlist (LexState *ls) { ls 545 lib/lua/lparser.c FuncState *fs = ls->fs; ls 549 lib/lua/lparser.c if (ls->t.token != ')') { /* is `parlist' not empty? */ ls 551 lib/lua/lparser.c switch (ls->t.token) { ls 553 lib/lua/lparser.c new_localvar(ls, str_checkname(ls), nparams++); ls 557 lib/lua/lparser.c luaX_next(ls); ls 560 lib/lua/lparser.c new_localvarliteral(ls, "arg", nparams++); ls 566 lib/lua/lparser.c default: luaX_syntaxerror(ls, "<name> or " LUA_QL("...") " expected"); ls 568 lib/lua/lparser.c } while (!f->is_vararg && testnext(ls, ',')); ls 570 lib/lua/lparser.c adjustlocalvars(ls, nparams); ls 576 lib/lua/lparser.c static void body (LexState *ls, expdesc *e, int needself, int line) { ls 579 lib/lua/lparser.c open_func(ls, &new_fs); ls 581 lib/lua/lparser.c checknext(ls, '('); ls 583 lib/lua/lparser.c new_localvarliteral(ls, "self", 0); ls 584 lib/lua/lparser.c adjustlocalvars(ls, 1); ls 586 lib/lua/lparser.c parlist(ls); ls 587 lib/lua/lparser.c checknext(ls, ')'); ls 588 lib/lua/lparser.c chunk(ls); ls 589 lib/lua/lparser.c new_fs.f->lastlinedefined = ls->linenumber; ls 590 lib/lua/lparser.c check_match(ls, TK_END, TK_FUNCTION, line); ls 591 lib/lua/lparser.c close_func(ls); ls 592 lib/lua/lparser.c pushclosure(ls, &new_fs, e); ls 596 lib/lua/lparser.c static int explist1 (LexState *ls, expdesc *v) { ls 599 lib/lua/lparser.c expr(ls, v); ls 600 lib/lua/lparser.c while (testnext(ls, ',')) { ls 601 lib/lua/lparser.c luaK_exp2nextreg(ls->fs, v); ls 602 lib/lua/lparser.c expr(ls, v); ls 609 lib/lua/lparser.c static void funcargs (LexState *ls, expdesc *f) { ls 610 lib/lua/lparser.c FuncState *fs = ls->fs; ls 613 lib/lua/lparser.c int line = ls->linenumber; ls 614 lib/lua/lparser.c switch (ls->t.token) { ls 616 lib/lua/lparser.c if (line != ls->lastline) ls 617 lib/lua/lparser.c luaX_syntaxerror(ls,"ambiguous syntax (function call x new statement)"); ls 618 lib/lua/lparser.c luaX_next(ls); ls 619 lib/lua/lparser.c if (ls->t.token == ')') /* arg list is empty? */ ls 622 lib/lua/lparser.c explist1(ls, &args); ls 625 lib/lua/lparser.c check_match(ls, ')', '(', line); ls 629 lib/lua/lparser.c constructor(ls, &args); ls 633 lib/lua/lparser.c codestring(ls, &args, ls->t.seminfo.ts); ls 634 lib/lua/lparser.c luaX_next(ls); /* must use `seminfo' before `next' */ ls 638 lib/lua/lparser.c luaX_syntaxerror(ls, "function arguments expected"); ls 667 lib/lua/lparser.c static void prefixexp (LexState *ls, expdesc *v) { ls 669 lib/lua/lparser.c switch (ls->t.token) { ls 671 lib/lua/lparser.c int line = ls->linenumber; ls 672 lib/lua/lparser.c luaX_next(ls); ls 673 lib/lua/lparser.c expr(ls, v); ls 674 lib/lua/lparser.c check_match(ls, ')', '(', line); ls 675 lib/lua/lparser.c luaK_dischargevars(ls->fs, v); ls 679 lib/lua/lparser.c singlevar(ls, v); ls 683 lib/lua/lparser.c luaX_syntaxerror(ls, "unexpected symbol"); ls 690 lib/lua/lparser.c static void primaryexp (LexState *ls, expdesc *v) { ls 693 lib/lua/lparser.c FuncState *fs = ls->fs; ls 694 lib/lua/lparser.c prefixexp(ls, v); ls 696 lib/lua/lparser.c switch (ls->t.token) { ls 698 lib/lua/lparser.c field(ls, v); ls 704 lib/lua/lparser.c yindex(ls, &key); ls 710 lib/lua/lparser.c luaX_next(ls); ls 711 lib/lua/lparser.c checkname(ls, &key); ls 713 lib/lua/lparser.c funcargs(ls, v); ls 718 lib/lua/lparser.c funcargs(ls, v); ls 727 lib/lua/lparser.c static void simpleexp (LexState *ls, expdesc *v) { ls 730 lib/lua/lparser.c switch (ls->t.token) { ls 733 lib/lua/lparser.c v->u.nval = ls->t.seminfo.r; ls 737 lib/lua/lparser.c codestring(ls, v, ls->t.seminfo.ts); ls 753 lib/lua/lparser.c FuncState *fs = ls->fs; ls 754 lib/lua/lparser.c check_condition(ls, fs->f->is_vararg, ls 761 lib/lua/lparser.c constructor(ls, v); ls 765 lib/lua/lparser.c luaX_next(ls); ls 766 lib/lua/lparser.c body(ls, v, 0, ls->linenumber); ls 770 lib/lua/lparser.c primaryexp(ls, v); ls 774 lib/lua/lparser.c luaX_next(ls); ls 828 lib/lua/lparser.c static BinOpr subexpr (LexState *ls, expdesc *v, unsigned int limit) { ls 831 lib/lua/lparser.c enterlevel(ls); ls 832 lib/lua/lparser.c uop = getunopr(ls->t.token); ls 834 lib/lua/lparser.c luaX_next(ls); ls 835 lib/lua/lparser.c subexpr(ls, v, UNARY_PRIORITY); ls 836 lib/lua/lparser.c luaK_prefix(ls->fs, uop, v); ls 838 lib/lua/lparser.c else simpleexp(ls, v); ls 840 lib/lua/lparser.c op = getbinopr(ls->t.token); ls 844 lib/lua/lparser.c luaX_next(ls); ls 845 lib/lua/lparser.c luaK_infix(ls->fs, op, v); ls 847 lib/lua/lparser.c nextop = subexpr(ls, &v2, priority[op].right); ls 848 lib/lua/lparser.c luaK_posfix(ls->fs, op, v, &v2); ls 851 lib/lua/lparser.c leavelevel(ls); ls 856 lib/lua/lparser.c static void expr (LexState *ls, expdesc *v) { ls 857 lib/lua/lparser.c subexpr(ls, v, 0); ls 881 lib/lua/lparser.c static void block (LexState *ls) { ls 883 lib/lua/lparser.c FuncState *fs = ls->fs; ls 886 lib/lua/lparser.c chunk(ls); ls 908 lib/lua/lparser.c static void check_conflict (LexState *ls, struct LHS_assign *lh, expdesc *v) { ls 909 lib/lua/lparser.c FuncState *fs = ls->fs; ls 931 lib/lua/lparser.c static void assignment (LexState *ls, struct LHS_assign *lh, int nvars) { ls 933 lib/lua/lparser.c check_condition(ls, VLOCAL <= lh->v.k && lh->v.k <= VINDEXED, ls 935 lib/lua/lparser.c if (testnext(ls, ',')) { /* assignment -> `,' primaryexp assignment */ ls 938 lib/lua/lparser.c primaryexp(ls, &nv.v); ls 940 lib/lua/lparser.c check_conflict(ls, lh, &nv.v); ls 941 lib/lua/lparser.c luaY_checklimit(ls->fs, nvars, LUAI_MAXCCALLS - ls->L->nCcalls, ls 943 lib/lua/lparser.c assignment(ls, &nv, nvars+1); ls 947 lib/lua/lparser.c checknext(ls, '='); ls 948 lib/lua/lparser.c nexps = explist1(ls, &e); ls 950 lib/lua/lparser.c adjust_assign(ls, nvars, nexps, &e); ls 952 lib/lua/lparser.c ls->fs->freereg -= nexps - nvars; /* remove extra values */ ls 955 lib/lua/lparser.c luaK_setoneret(ls->fs, &e); /* close last expression */ ls 956 lib/lua/lparser.c luaK_storevar(ls->fs, &lh->v, &e); ls 960 lib/lua/lparser.c init_exp(&e, VNONRELOC, ls->fs->freereg-1); /* default assignment */ ls 961 lib/lua/lparser.c luaK_storevar(ls->fs, &lh->v, &e); ls 965 lib/lua/lparser.c static int cond (LexState *ls) { ls 968 lib/lua/lparser.c expr(ls, &v); /* read condition */ ls 970 lib/lua/lparser.c luaK_goiftrue(ls->fs, &v); ls 975 lib/lua/lparser.c static void breakstat (LexState *ls) { ls 976 lib/lua/lparser.c FuncState *fs = ls->fs; ls 984 lib/lua/lparser.c luaX_syntaxerror(ls, "no loop to break"); ls 991 lib/lua/lparser.c static void whilestat (LexState *ls, int line) { ls 993 lib/lua/lparser.c FuncState *fs = ls->fs; ls 997 lib/lua/lparser.c luaX_next(ls); /* skip WHILE */ ls 999 lib/lua/lparser.c condexit = cond(ls); ls 1001 lib/lua/lparser.c checknext(ls, TK_DO); ls 1002 lib/lua/lparser.c block(ls); ls 1004 lib/lua/lparser.c check_match(ls, TK_END, TK_WHILE, line); ls 1010 lib/lua/lparser.c static void repeatstat (LexState *ls, int line) { ls 1013 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1018 lib/lua/lparser.c luaX_next(ls); /* skip REPEAT */ ls 1019 lib/lua/lparser.c chunk(ls); ls 1020 lib/lua/lparser.c check_match(ls, TK_UNTIL, TK_REPEAT, line); ls 1021 lib/lua/lparser.c condexit = cond(ls); /* read condition (inside scope block) */ ls 1024 lib/lua/lparser.c luaK_patchlist(ls->fs, condexit, repeat_init); /* close the loop */ ls 1027 lib/lua/lparser.c breakstat(ls); /* if condition then break */ ls 1028 lib/lua/lparser.c luaK_patchtohere(ls->fs, condexit); /* else... */ ls 1030 lib/lua/lparser.c luaK_patchlist(ls->fs, luaK_jump(fs), repeat_init); /* and repeat */ ls 1036 lib/lua/lparser.c static int exp1 (LexState *ls) { ls 1039 lib/lua/lparser.c expr(ls, &e); ls 1041 lib/lua/lparser.c luaK_exp2nextreg(ls->fs, &e); ls 1046 lib/lua/lparser.c static void forbody (LexState *ls, int base, int line, int nvars, int isnum) { ls 1049 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1051 lib/lua/lparser.c adjustlocalvars(ls, 3); /* control variables */ ls 1052 lib/lua/lparser.c checknext(ls, TK_DO); ls 1055 lib/lua/lparser.c adjustlocalvars(ls, nvars); ls 1057 lib/lua/lparser.c block(ls); ls 1067 lib/lua/lparser.c static void fornum (LexState *ls, TString *varname, int line) { ls 1069 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1071 lib/lua/lparser.c new_localvarliteral(ls, "(for index)", 0); ls 1072 lib/lua/lparser.c new_localvarliteral(ls, "(for limit)", 1); ls 1073 lib/lua/lparser.c new_localvarliteral(ls, "(for step)", 2); ls 1074 lib/lua/lparser.c new_localvar(ls, varname, 3); ls 1075 lib/lua/lparser.c checknext(ls, '='); ls 1076 lib/lua/lparser.c exp1(ls); /* initial value */ ls 1077 lib/lua/lparser.c checknext(ls, ','); ls 1078 lib/lua/lparser.c exp1(ls); /* limit */ ls 1079 lib/lua/lparser.c if (testnext(ls, ',')) ls 1080 lib/lua/lparser.c exp1(ls); /* optional step */ ls 1085 lib/lua/lparser.c forbody(ls, base, line, 1, 1); ls 1089 lib/lua/lparser.c static void forlist (LexState *ls, TString *indexname) { ls 1091 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1097 lib/lua/lparser.c new_localvarliteral(ls, "(for generator)", nvars++); ls 1098 lib/lua/lparser.c new_localvarliteral(ls, "(for state)", nvars++); ls 1099 lib/lua/lparser.c new_localvarliteral(ls, "(for control)", nvars++); ls 1101 lib/lua/lparser.c new_localvar(ls, indexname, nvars++); ls 1102 lib/lua/lparser.c while (testnext(ls, ',')) ls 1103 lib/lua/lparser.c new_localvar(ls, str_checkname(ls), nvars++); ls 1104 lib/lua/lparser.c checknext(ls, TK_IN); ls 1105 lib/lua/lparser.c line = ls->linenumber; ls 1106 lib/lua/lparser.c adjust_assign(ls, 3, explist1(ls, &e), &e); ls 1108 lib/lua/lparser.c forbody(ls, base, line, nvars - 3, 0); ls 1112 lib/lua/lparser.c static void forstat (LexState *ls, int line) { ls 1114 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1118 lib/lua/lparser.c luaX_next(ls); /* skip `for' */ ls 1119 lib/lua/lparser.c varname = str_checkname(ls); /* first variable name */ ls 1120 lib/lua/lparser.c switch (ls->t.token) { ls 1121 lib/lua/lparser.c case '=': fornum(ls, varname, line); break; ls 1122 lib/lua/lparser.c case ',': case TK_IN: forlist(ls, varname); break; ls 1123 lib/lua/lparser.c default: luaX_syntaxerror(ls, LUA_QL("=") " or " LUA_QL("in") " expected"); ls 1125 lib/lua/lparser.c check_match(ls, TK_END, TK_FOR, line); ls 1130 lib/lua/lparser.c static int test_then_block (LexState *ls) { ls 1133 lib/lua/lparser.c luaX_next(ls); /* skip IF or ELSEIF */ ls 1134 lib/lua/lparser.c condexit = cond(ls); ls 1135 lib/lua/lparser.c checknext(ls, TK_THEN); ls 1136 lib/lua/lparser.c block(ls); /* `then' part */ ls 1141 lib/lua/lparser.c static void ifstat (LexState *ls, int line) { ls 1143 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1146 lib/lua/lparser.c flist = test_then_block(ls); /* IF cond THEN block */ ls 1147 lib/lua/lparser.c while (ls->t.token == TK_ELSEIF) { ls 1150 lib/lua/lparser.c flist = test_then_block(ls); /* ELSEIF cond THEN block */ ls 1152 lib/lua/lparser.c if (ls->t.token == TK_ELSE) { ls 1155 lib/lua/lparser.c luaX_next(ls); /* skip ELSE (after patch, for correct line info) */ ls 1156 lib/lua/lparser.c block(ls); /* `else' part */ ls 1161 lib/lua/lparser.c check_match(ls, TK_END, TK_IF, line); ls 1165 lib/lua/lparser.c static void localfunc (LexState *ls) { ls 1167 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1168 lib/lua/lparser.c new_localvar(ls, str_checkname(ls), 0); ls 1171 lib/lua/lparser.c adjustlocalvars(ls, 1); ls 1172 lib/lua/lparser.c body(ls, &b, 0, ls->linenumber); ls 1179 lib/lua/lparser.c static void localstat (LexState *ls) { ls 1185 lib/lua/lparser.c new_localvar(ls, str_checkname(ls), nvars++); ls 1186 lib/lua/lparser.c } while (testnext(ls, ',')); ls 1187 lib/lua/lparser.c if (testnext(ls, '=')) ls 1188 lib/lua/lparser.c nexps = explist1(ls, &e); ls 1193 lib/lua/lparser.c adjust_assign(ls, nvars, nexps, &e); ls 1194 lib/lua/lparser.c adjustlocalvars(ls, nvars); ls 1198 lib/lua/lparser.c static int funcname (LexState *ls, expdesc *v) { ls 1201 lib/lua/lparser.c singlevar(ls, v); ls 1202 lib/lua/lparser.c while (ls->t.token == '.') ls 1203 lib/lua/lparser.c field(ls, v); ls 1204 lib/lua/lparser.c if (ls->t.token == ':') { ls 1206 lib/lua/lparser.c field(ls, v); ls 1212 lib/lua/lparser.c static void funcstat (LexState *ls, int line) { ls 1216 lib/lua/lparser.c luaX_next(ls); /* skip FUNCTION */ ls 1217 lib/lua/lparser.c needself = funcname(ls, &v); ls 1218 lib/lua/lparser.c body(ls, &b, needself, line); ls 1219 lib/lua/lparser.c luaK_storevar(ls->fs, &v, &b); ls 1220 lib/lua/lparser.c luaK_fixline(ls->fs, line); /* definition `happens' in the first line */ ls 1224 lib/lua/lparser.c static void exprstat (LexState *ls) { ls 1226 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1228 lib/lua/lparser.c primaryexp(ls, &v.v); ls 1233 lib/lua/lparser.c assignment(ls, &v, 1); ls 1238 lib/lua/lparser.c static void retstat (LexState *ls) { ls 1240 lib/lua/lparser.c FuncState *fs = ls->fs; ls 1243 lib/lua/lparser.c luaX_next(ls); /* skip RETURN */ ls 1244 lib/lua/lparser.c if (block_follow(ls->t.token) || ls->t.token == ';') ls 1247 lib/lua/lparser.c nret = explist1(ls, &e); /* optional return values */ ls 1271 lib/lua/lparser.c static int statement (LexState *ls) { ls 1272 lib/lua/lparser.c int line = ls->linenumber; /* may be needed for error messages */ ls 1273 lib/lua/lparser.c switch (ls->t.token) { ls 1275 lib/lua/lparser.c ifstat(ls, line); ls 1279 lib/lua/lparser.c whilestat(ls, line); ls 1283 lib/lua/lparser.c luaX_next(ls); /* skip DO */ ls 1284 lib/lua/lparser.c block(ls); ls 1285 lib/lua/lparser.c check_match(ls, TK_END, TK_DO, line); ls 1289 lib/lua/lparser.c forstat(ls, line); ls 1293 lib/lua/lparser.c repeatstat(ls, line); ls 1297 lib/lua/lparser.c funcstat(ls, line); /* stat -> funcstat */ ls 1301 lib/lua/lparser.c luaX_next(ls); /* skip LOCAL */ ls 1302 lib/lua/lparser.c if (testnext(ls, TK_FUNCTION)) /* local function? */ ls 1303 lib/lua/lparser.c localfunc(ls); ls 1305 lib/lua/lparser.c localstat(ls); ls 1309 lib/lua/lparser.c retstat(ls); ls 1313 lib/lua/lparser.c luaX_next(ls); /* skip BREAK */ ls 1314 lib/lua/lparser.c breakstat(ls); ls 1318 lib/lua/lparser.c exprstat(ls); ls 1325 lib/lua/lparser.c static void chunk (LexState *ls) { ls 1328 lib/lua/lparser.c enterlevel(ls); ls 1329 lib/lua/lparser.c while (!islast && !block_follow(ls->t.token)) { ls 1330 lib/lua/lparser.c islast = statement(ls); ls 1331 lib/lua/lparser.c testnext(ls, ';'); ls 1332 lib/lua/lparser.c lua_assert(ls->fs->f->maxstacksize >= ls->fs->freereg && ls 1333 lib/lua/lparser.c ls->fs->freereg >= ls->fs->nactvar); ls 1334 lib/lua/lparser.c ls->fs->freereg = ls->fs->nactvar; /* free registers */ ls 1336 lib/lua/lparser.c leavelevel(ls); ls 62 lib/lua/lparser.h struct LexState *ls; /* lexical state */ ls 550 lib/lua/lstrlib.c size_t ls; ls 551 lib/lua/lstrlib.c const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls); ls 556 lib/lua/lstrlib.c ms.src_end = s+ls; ls 219 lib/lua/lvm.c static int l_strcmp (const TString *ls, const TString *rs) { ls 220 lib/lua/lvm.c const char *l = getstr(ls); ls 221 lib/lua/lvm.c size_t ll = ls->tsv.len; ls 87 tools/capdis.c struct lnode * l_search(struct llist *ls, t_address address) { ls 90 tools/capdis.c node = ls->head; ls 104 tools/capdis.c int l_insert(struct llist *ls, t_address address, t_value data) ls 108 tools/capdis.c if( l_search(ls, address)) return -1 ; ls 111 tools/capdis.c node->next = ls->head; ls 112 tools/capdis.c ls->head = node; ls 113 tools/capdis.c (ls->size)++; ls 118 tools/capdis.c void l_remove(struct llist *ls, t_address addr) ls 120 tools/capdis.c if (ls) ls 124 tools/capdis.c p = ls->head; ls 132 tools/capdis.c ls->head = p->next; ls 133 tools/capdis.c (ls->size)--; ls 202 tools/chdk_dasm.c struct lnode * l_search(struct llist *ls, t_address address) { ls 205 tools/chdk_dasm.c node = ls->head; ls 219 tools/chdk_dasm.c int l_insert(struct llist *ls, t_address address, t_value data) ls 223 tools/chdk_dasm.c if( l_search(ls, address)) return -1 ; ls 226 tools/chdk_dasm.c node->next = ls->head; ls 227 tools/chdk_dasm.c ls->head = node; ls 228 tools/chdk_dasm.c (ls->size)++; ls 233 tools/chdk_dasm.c void l_remove(struct llist *ls, t_address addr) ls 235 tools/chdk_dasm.c if (ls) ls 239 tools/chdk_dasm.c p = ls->head; ls 247 tools/chdk_dasm.c ls->head = p->next; ls 248 tools/chdk_dasm.c (ls->size)--; ls 86 tools/chdk_dasm.h struct lnode * l_search(struct llist *ls, t_address address); ls 87 tools/chdk_dasm.h void l_remove(struct llist *ls, t_address addr);