亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lparser.c

?? 這個是一個嵌入式腳本支持引擎, 體積十分小巧
?? C
?? 第 1 頁 / 共 3 頁
字號:
*/struct LHS_assign {  struct LHS_assign *prev;  expdesc v;  /* variable (global, local, upvalue, or indexed) */};/*** check whether, in an assignment to a local variable, the local variable** is needed in a previous assignment (to a table). If so, save original** local value in a safe place and use this safe copy in the previous** assignment.*/static void check_conflict (LexState *ls, struct LHS_assign *lh, expdesc *v) {  FuncState *fs = ls->fs;  int extra = fs->freereg;  /* eventual position to save local variable */  int conflict = 0;  for (; lh; lh = lh->prev) {    if (lh->v.k == VINDEXED) {      if (lh->v.u.s.info == v->u.s.info) {  /* conflict? */        conflict = 1;        lh->v.u.s.info = extra;  /* previous assignment will use safe copy */      }      if (lh->v.u.s.aux == v->u.s.info) {  /* conflict? */        conflict = 1;        lh->v.u.s.aux = extra;  /* previous assignment will use safe copy */      }    }  }  if (conflict) {    luaK_codeABC(fs, OP_MOVE, fs->freereg, v->u.s.info, 0);  /* make copy */    luaK_reserveregs(fs, 1);  }}static void assignment (LexState *ls, struct LHS_assign *lh, int nvars) {  expdesc e;  check_condition(ls, VLOCAL <= lh->v.k && lh->v.k <= VINDEXED,                      "syntax error");  if (testnext(ls, ',')) {  /* assignment -> `,' primaryexp assignment */    struct LHS_assign nv;    nv.prev = lh;    primaryexp(ls, &nv.v);    if (nv.v.k == VLOCAL)      check_conflict(ls, lh, &nv.v);    luaY_checklimit(ls->fs, nvars, LUAI_MAXCCALLS - ls->L->nCcalls,                    "variables in assignment");    assignment(ls, &nv, nvars+1);  }  else {  /* assignment -> `=' explist1 */    int nexps;    checknext(ls, '=');    nexps = explist1(ls, &e);    if (nexps != nvars) {      adjust_assign(ls, nvars, nexps, &e);      if (nexps > nvars)        ls->fs->freereg -= nexps - nvars;  /* remove extra values */    }    else {      luaK_setoneret(ls->fs, &e);  /* close last expression */      luaK_storevar(ls->fs, &lh->v, &e);      return;  /* avoid default */    }  }  init_exp(&e, VNONRELOC, ls->fs->freereg-1);  /* default assignment */  luaK_storevar(ls->fs, &lh->v, &e);}static int cond (LexState *ls) {  /* cond -> exp */  expdesc v;  expr(ls, &v);  /* read condition */  if (v.k == VNIL) v.k = VFALSE;  /* `falses' are all equal here */  luaK_goiftrue(ls->fs, &v);  return v.f;}static void breakstat (LexState *ls) {  FuncState *fs = ls->fs;  BlockCnt *bl = fs->bl;  int upval = 0;  while (bl && !bl->isbreakable) {    upval |= bl->upval;    bl = bl->previous;  }  if (!bl)    luaX_syntaxerror(ls, "no loop to break");  if (upval)    luaK_codeABC(fs, OP_CLOSE, bl->nactvar, 0, 0);  luaK_concat(fs, &bl->breaklist, luaK_jump(fs));}static void whilestat (LexState *ls, int line) {  /* whilestat -> WHILE cond DO block END */  FuncState *fs = ls->fs;  int whileinit;  int condexit;  BlockCnt bl;  luaX_next(ls);  /* skip WHILE */  whileinit = luaK_getlabel(fs);  condexit = cond(ls);  enterblock(fs, &bl, 1);  checknext(ls, TK_DO);  block(ls);  luaK_patchlist(fs, luaK_jump(fs), whileinit);  check_match(ls, TK_END, TK_WHILE, line);  leaveblock(fs);  luaK_patchtohere(fs, condexit);  /* false conditions finish the loop */}static void repeatstat (LexState *ls, int line) {  /* repeatstat -> REPEAT block UNTIL cond */  int condexit;  FuncState *fs = ls->fs;  int repeat_init = luaK_getlabel(fs);  BlockCnt bl1, bl2;  enterblock(fs, &bl1, 1);  /* loop block */  enterblock(fs, &bl2, 0);  /* scope block */  luaX_next(ls);  /* skip REPEAT */  chunk(ls);  check_match(ls, TK_UNTIL, TK_REPEAT, line);  condexit = cond(ls);  /* read condition (inside scope block) */  if (!bl2.upval) {  /* no upvalues? */    leaveblock(fs);  /* finish scope */    luaK_patchlist(ls->fs, condexit, repeat_init);  /* close the loop */  }  else {  /* complete semantics when there are upvalues */    breakstat(ls);  /* if condition then break */    luaK_patchtohere(ls->fs, condexit);  /* else... */    leaveblock(fs);  /* finish scope... */    luaK_patchlist(ls->fs, luaK_jump(fs), repeat_init);  /* and repeat */  }  leaveblock(fs);  /* finish loop */}static int exp1 (LexState *ls) {  expdesc e;  int k;  expr(ls, &e);  k = e.k;  luaK_exp2nextreg(ls->fs, &e);  return k;}static void forbody (LexState *ls, int base, int line, int nvars, int isnum) {  /* forbody -> DO block */  BlockCnt bl;  FuncState *fs = ls->fs;  int prep, endfor;  adjustlocalvars(ls, 3);  /* control variables */  checknext(ls, TK_DO);  prep = isnum ? luaK_codeAsBx(fs, OP_FORPREP, base, NO_JUMP) : luaK_jump(fs);  enterblock(fs, &bl, 0);  /* scope for declared variables */  adjustlocalvars(ls, nvars);  luaK_reserveregs(fs, nvars);  block(ls);  leaveblock(fs);  /* end of scope for declared variables */  luaK_patchtohere(fs, prep);  endfor = (isnum) ? luaK_codeAsBx(fs, OP_FORLOOP, base, NO_JUMP) :                     luaK_codeABC(fs, OP_TFORLOOP, base, 0, nvars);  luaK_fixline(fs, line);  /* pretend that `OP_FOR' starts the loop */  luaK_patchlist(fs, (isnum ? endfor : luaK_jump(fs)), prep + 1);}static void fornum (LexState *ls, TString *varname, int line) {  /* fornum -> NAME = exp1,exp1[,exp1] forbody */  FuncState *fs = ls->fs;  int base = fs->freereg;  new_localvarliteral(ls, "(for index)", 0);  new_localvarliteral(ls, "(for limit)", 1);  new_localvarliteral(ls, "(for step)", 2);  new_localvar(ls, varname, 3);  checknext(ls, '=');  exp1(ls);  /* initial value */  checknext(ls, ',');  exp1(ls);  /* limit */  if (testnext(ls, ','))    exp1(ls);  /* optional step */  else {  /* default step = 1 */    luaK_codeABx(fs, OP_LOADK, fs->freereg, luaK_numberK(fs, 1));    luaK_reserveregs(fs, 1);  }  forbody(ls, base, line, 1, 1);}static void forlist (LexState *ls, TString *indexname) {  /* forlist -> NAME {,NAME} IN explist1 forbody */  FuncState *fs = ls->fs;  expdesc e;  int nvars = 0;  int line;  int base = fs->freereg;  /* create control variables */  new_localvarliteral(ls, "(for generator)", nvars++);  new_localvarliteral(ls, "(for state)", nvars++);  new_localvarliteral(ls, "(for control)", nvars++);  /* create declared variables */  new_localvar(ls, indexname, nvars++);  while (testnext(ls, ','))    new_localvar(ls, str_checkname(ls), nvars++);  checknext(ls, TK_IN);  line = ls->linenumber;  adjust_assign(ls, 3, explist1(ls, &e), &e);  luaK_checkstack(fs, 3);  /* extra space to call generator */  forbody(ls, base, line, nvars - 3, 0);}static void forstat (LexState *ls, int line) {  /* forstat -> FOR (fornum | forlist) END */  FuncState *fs = ls->fs;  TString *varname;  BlockCnt bl;  enterblock(fs, &bl, 1);  /* scope for loop and control variables */  luaX_next(ls);  /* skip `for' */  varname = str_checkname(ls);  /* first variable name */  switch (ls->t.token) {    case '=': fornum(ls, varname, line); break;    case ',': case TK_IN: forlist(ls, varname); break;    default: luaX_syntaxerror(ls, LUA_QL("=") " or " LUA_QL("in") " expected");  }  check_match(ls, TK_END, TK_FOR, line);  leaveblock(fs);  /* loop scope (`break' jumps to this point) */}static int test_then_block (LexState *ls) {  /* test_then_block -> [IF | ELSEIF] cond THEN block */  int condexit;  luaX_next(ls);  /* skip IF or ELSEIF */  condexit = cond(ls);  checknext(ls, TK_THEN);  block(ls);  /* `then' part */  return condexit;}static void ifstat (LexState *ls, int line) {  /* ifstat -> IF cond THEN block {ELSEIF cond THEN block} [ELSE block] END */  FuncState *fs = ls->fs;  int flist;  int escapelist = NO_JUMP;  flist = test_then_block(ls);  /* IF cond THEN block */  while (ls->t.token == TK_ELSEIF) {    luaK_concat(fs, &escapelist, luaK_jump(fs));    luaK_patchtohere(fs, flist);    flist = test_then_block(ls);  /* ELSEIF cond THEN block */  }  if (ls->t.token == TK_ELSE) {    luaK_concat(fs, &escapelist, luaK_jump(fs));    luaK_patchtohere(fs, flist);    luaX_next(ls);  /* skip ELSE (after patch, for correct line info) */    block(ls);  /* `else' part */  }  else    luaK_concat(fs, &escapelist, flist);  luaK_patchtohere(fs, escapelist);  check_match(ls, TK_END, TK_IF, line);}static void localfunc (LexState *ls) {  expdesc v, b;  FuncState *fs = ls->fs;  new_localvar(ls, str_checkname(ls), 0);  init_exp(&v, VLOCAL, fs->freereg);  luaK_reserveregs(fs, 1);  adjustlocalvars(ls, 1);  body(ls, &b, 0, ls->linenumber);  luaK_storevar(fs, &v, &b);  /* debug information will only see the variable after this point! */  getlocvar(fs, fs->nactvar - 1).startpc = fs->pc;}static void localstat (LexState *ls) {  /* stat -> LOCAL NAME {`,' NAME} [`=' explist1] */  int nvars = 0;  int nexps;  expdesc e;  do {    new_localvar(ls, str_checkname(ls), nvars++);  } while (testnext(ls, ','));  if (testnext(ls, '='))    nexps = explist1(ls, &e);  else {    e.k = VVOID;    nexps = 0;  }  adjust_assign(ls, nvars, nexps, &e);  adjustlocalvars(ls, nvars);}static int funcname (LexState *ls, expdesc *v) {  /* funcname -> NAME {field} [`:' NAME] */  int needself = 0;  singlevar(ls, v);  while (ls->t.token == '.')    field(ls, v);  if (ls->t.token == ':') {    needself = 1;    field(ls, v);  }  return needself;}static void funcstat (LexState *ls, int line) {  /* funcstat -> FUNCTION funcname body */  int needself;  expdesc v, b;  luaX_next(ls);  /* skip FUNCTION */  needself = funcname(ls, &v);  body(ls, &b, needself, line);  luaK_storevar(ls->fs, &v, &b);  luaK_fixline(ls->fs, line);  /* definition `happens' in the first line */}static void exprstat (LexState *ls) {  /* stat -> func | assignment */  FuncState *fs = ls->fs;  struct LHS_assign v;  primaryexp(ls, &v.v);  if (v.v.k == VCALL)  /* stat -> func */    SETARG_C(getcode(fs, &v.v), 1);  /* call statement uses no results */  else {  /* stat -> assignment */    v.prev = NULL;    assignment(ls, &v, 1);  }}static void retstat (LexState *ls) {  /* stat -> RETURN explist */  FuncState *fs = ls->fs;  expdesc e;  int first, nret;  /* registers with returned values */  luaX_next(ls);  /* skip RETURN */  if (block_follow(ls->t.token) || ls->t.token == ';')    first = nret = 0;  /* return no values */  else {    nret = explist1(ls, &e);  /* optional return values */    if (hasmultret(e.k)) {      luaK_setmultret(fs, &e);      if (e.k == VCALL && nret == 1) {  /* tail call? */        SET_OPCODE(getcode(fs,&e), OP_TAILCALL);        lua_assert(GETARG_A(getcode(fs,&e)) == fs->nactvar);      }      first = fs->nactvar;      nret = LUA_MULTRET;  /* return all values */    }    else {      if (nret == 1)  /* only one single value? */        first = luaK_exp2anyreg(fs, &e);      else {        luaK_exp2nextreg(fs, &e);  /* values must go to the `stack' */        first = fs->nactvar;  /* return all `active' values */        lua_assert(nret == fs->freereg - first);      }    }  }  luaK_ret(fs, first, nret);}static int statement (LexState *ls) {  int line = ls->linenumber;  /* may be needed for error messages */  switch (ls->t.token) {    case TK_IF: {  /* stat -> ifstat */      ifstat(ls, line);      return 0;    }    case TK_WHILE: {  /* stat -> whilestat */      whilestat(ls, line);      return 0;    }    case TK_DO: {  /* stat -> DO block END */      luaX_next(ls);  /* skip DO */      block(ls);      check_match(ls, TK_END, TK_DO, line);      return 0;    }    case TK_FOR: {  /* stat -> forstat */      forstat(ls, line);      return 0;    }    case TK_REPEAT: {  /* stat -> repeatstat */      repeatstat(ls, line);      return 0;    }    case TK_FUNCTION: {      funcstat(ls, line);  /* stat -> funcstat */      return 0;    }    case TK_LOCAL: {  /* stat -> localstat */      luaX_next(ls);  /* skip LOCAL */      if (testnext(ls, TK_FUNCTION))  /* local function? */        localfunc(ls);      else        localstat(ls);      return 0;    }    case TK_RETURN: {  /* stat -> retstat */      retstat(ls);      return 1;  /* must be last statement */    }    case TK_BREAK: {  /* stat -> breakstat */      luaX_next(ls);  /* skip BREAK */      breakstat(ls);      return 1;  /* must be last statement */    }    default: {      exprstat(ls);      return 0;  /* to avoid warnings */    }  }}static void chunk (LexState *ls) {  /* chunk -> { stat [`;'] } */  int islast = 0;  enterlevel(ls);  while (!islast && !block_follow(ls->t.token)) {    islast = statement(ls);    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 */  }  leavelevel(ls);}/* }====================================================================== */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av不卡一区二区| 91亚洲精品乱码久久久久久蜜桃| 亚洲一区在线视频| 亚洲欧美日韩综合aⅴ视频| 国产农村妇女精品| 久久精品亚洲精品国产欧美kt∨| 欧美videofree性高清杂交| 精品少妇一区二区三区在线视频| 日韩午夜三级在线| 欧美精品一区二区三区蜜桃| 久久综合九色欧美综合狠狠 | 一区二区三区日韩欧美精品| 亚洲精品视频在线观看免费 | 色哟哟精品一区| 色av成人天堂桃色av| 欧美在线三级电影| 欧美老肥妇做.爰bbww视频| 91精品国产一区二区三区| 日韩欧美国产三级电影视频| 91精品午夜视频| 欧美成人女星排名| 国产日产亚洲精品系列| 亚洲欧洲在线观看av| 亚洲一区中文在线| 久久精品国产亚洲aⅴ | 久久亚洲精品国产精品紫薇| 久久精品日韩一区二区三区| 国产精品国产馆在线真实露脸 | 精品久久人人做人人爰| 日本一区二区在线不卡| 亚洲欧美日韩一区二区三区在线观看| 亚洲精品久久久久久国产精华液| 亚洲成a人v欧美综合天堂下载| 日韩av高清在线观看| 国产一区在线观看麻豆| 9l国产精品久久久久麻豆| 欧美午夜不卡视频| 久久欧美中文字幕| 亚洲精品国产无天堂网2021| 日韩高清不卡一区| 懂色av一区二区夜夜嗨| 日本韩国一区二区三区| 日韩欧美国产午夜精品| 综合激情成人伊人| 麻豆精品久久久| 色综合天天综合给合国产| 欧美日韩免费电影| 国产亚洲一本大道中文在线| 一个色综合网站| 国产一二精品视频| 欧美少妇一区二区| 国产欧美一二三区| 婷婷亚洲久悠悠色悠在线播放| 国产呦精品一区二区三区网站| 色呦呦一区二区三区| 久久理论电影网| 午夜一区二区三区视频| 成人激情免费电影网址| 欧美一区二区国产| 亚洲精品国产视频| 国产精品一区二区免费不卡| 欧美人动与zoxxxx乱| 国产精品麻豆99久久久久久| 视频一区二区三区中文字幕| www.亚洲精品| 精品国产免费一区二区三区四区 | 亚洲精品在线电影| 亚洲一二三专区| 成人免费黄色在线| 精品国产免费一区二区三区四区| 亚洲成人激情av| 不卡的电视剧免费网站有什么| 欧美电视剧免费观看| 亚洲午夜免费电影| 91亚洲精品一区二区乱码| 国产日韩精品久久久| 麻豆精品久久精品色综合| 欧美最新大片在线看| 亚洲色图在线播放| 成人激情图片网| 国产日韩成人精品| 国产乱一区二区| 欧美大片免费久久精品三p| 午夜久久福利影院| 在线亚洲免费视频| 亚洲精品视频观看| 97精品国产露脸对白| 欧美精品一区二区不卡| 日一区二区三区| 欧美色视频在线| 亚洲免费观看高清完整版在线观看| 国产丶欧美丶日本不卡视频| 精品国产一区二区在线观看| 日韩av网站免费在线| 7777精品伊人久久久大香线蕉经典版下载| 自拍视频在线观看一区二区| 91精品国产色综合久久ai换脸| 1000精品久久久久久久久| 国产夫妻精品视频| 久久先锋影音av鲁色资源网| 美女在线视频一区| 日韩午夜小视频| 麻豆精品视频在线| 欧美刺激脚交jootjob| 麻豆中文一区二区| 欧美成人艳星乳罩| 国产麻豆欧美日韩一区| 久久一日本道色综合| 国产一区二区0| 亚洲国产精品激情在线观看| 高清av一区二区| 国产精品免费av| 91亚洲精华国产精华精华液| 中文字幕一区日韩精品欧美| 91浏览器在线视频| 一区二区三区精密机械公司| 欧美婷婷六月丁香综合色| 性欧美大战久久久久久久久| 欧美电影在线免费观看| 日韩精品欧美成人高清一区二区| 欧美一区二区精品久久911| 五月婷婷激情综合| 欧美岛国在线观看| 国产91精品一区二区麻豆亚洲| 国产精品私人影院| 一本色道久久综合狠狠躁的推荐| 亚洲自拍偷拍网站| 91精品国产综合久久精品性色| 久久精品国产色蜜蜜麻豆| 久久久久高清精品| 91视频在线看| 午夜久久电影网| 久久免费偷拍视频| 99久久精品免费| 婷婷综合五月天| 精品国产乱码久久久久久图片| 国产精品18久久久久久久久久久久| 国产精品久久三区| 欧美日韩亚洲不卡| 韩国中文字幕2020精品| 国产精品久久三区| 91麻豆精品91久久久久久清纯 | 欧美日韩综合色| 九九九久久久精品| 国产精品网站在线观看| 欧美日韩高清影院| 国产黄人亚洲片| 亚洲一区在线看| 国产亚洲一区二区三区在线观看 | 久久久精品免费免费| 91老师国产黑色丝袜在线| 日日夜夜精品免费视频| 国产精品无遮挡| 91精品国产品国语在线不卡| 国产成人免费xxxxxxxx| 亚洲动漫第一页| 国产亚洲欧美在线| 欧美日韩夫妻久久| 成人蜜臀av电影| 日韩二区三区四区| 国产精品高潮呻吟| 日韩亚洲欧美综合| 91蜜桃传媒精品久久久一区二区| 麻豆国产精品一区二区三区 | 久久精品二区亚洲w码| 亚洲精品自拍动漫在线| 久久免费看少妇高潮| 欧美日韩免费在线视频| 成人免费观看av| 国内精品伊人久久久久av一坑 | 久久99精品国产.久久久久| 亚洲天堂福利av| 国产亚洲欧洲997久久综合| 欧美日韩一二三| 99久久精品国产观看| 激情综合色播激情啊| 亚洲成人激情综合网| 亚洲欧美电影院| 国产精品三级av在线播放| 日韩三级免费观看| 欧美日韩电影在线播放| 色综合久久久久综合| 国产91丝袜在线播放| 久久国产视频网| 免费人成精品欧美精品 | 国产精品一区二区三区乱码| 五月天丁香久久| 一级女性全黄久久生活片免费| 中文字幕一区二区日韩精品绯色| 精品国产123| 日韩三级免费观看| 日韩写真欧美这视频| 67194成人在线观看| 欧美在线观看你懂的| 91女神在线视频| eeuss鲁片一区二区三区| 国产宾馆实践打屁股91| 国产一区二区三区四区五区美女| 日本vs亚洲vs韩国一区三区 | 日韩国产一区二|