MCPcopy Create free account
hub / github.com/Achain-Dev/Achain / luaY_parser

Function luaY_parser

src/Chain/libraries/glua/lparser.cpp:1697–1720  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1695
1696
1697LClosure *luaY_parser(lua_State *L, ZIO *z, Mbuffer *buff,
1698 Dyndata *dyd, const char *name, int firstchar) {
1699 LexState lexstate;
1700 FuncState funcstate;
1701 LClosure *cl = luaF_newLclosure(L, 1); /* create main closure */
1702 setclLvalue(L, L->top, cl); /* anchor it (to avoid being collected) */
1703 luaD_inctop(L);
1704 lexstate.h = luaH_new(L); /* create table for scanner */
1705 sethvalue(L, L->top, lexstate.h); /* anchor it */
1706 luaD_inctop(L);
1707 funcstate.f = cl->p = luaF_newproto(L);
1708 funcstate.f->source = luaS_new(L, name); /* create and anchor TString */
1709 lua_assert(iswhite(funcstate.f)); /* do not need barrier here */
1710 lexstate.buff = buff;
1711 lexstate.dyd = dyd;
1712 dyd->actvar.n = dyd->gt.n = dyd->label.n = 0;
1713 luaX_setinput(L, &lexstate, z, funcstate.f->source, firstchar);
1714 mainfunc(&lexstate, &funcstate);
1715 lua_assert(!funcstate.prev && funcstate.nups == 1 && !lexstate.fs);
1716 /* all scopes should be correctly finished */
1717 lua_assert(dyd->actvar.n == 0 && dyd->gt.n == 0 && dyd->label.n == 0);
1718 L->top--; /* remove scanner's table */
1719 return cl; /* closure is on the stack, too */
1720}
1721

Callers 1

f_parserFunction · 0.85

Calls 7

luaF_newLclosureFunction · 0.85
luaD_inctopFunction · 0.85
luaH_newFunction · 0.85
luaF_newprotoFunction · 0.85
luaS_newFunction · 0.85
luaX_setinputFunction · 0.85
mainfuncFunction · 0.85

Tested by

no test coverage detected