static void prefixexp (LexState *ls, expdesc *v) { /* prefixexp -> NAME | '(' expr ')' */ switch (ls->t.token) { case '(': { int line = ls->linenumber; next(ls); expr(ls, v); check_match(ls, ')', '(', line); luaK_dischargevars(ls->fs, v); return; } case TK_NAME: { singlevar(ls, v, 1); return; } #ifdef LUA_COMPATUPSYNTAX case '%': { /* for compatibility only */ TString *varname; int line = ls->linenumber; next(ls); /* skip `%' */ varname = singlevar(ls, v, 1); if (v->k != VUPVAL) luaX_errorline(ls, "global upvalues are obsolete", getstr(varname), line); return; } #endif default: { luaX_syntaxerror(ls, "unexpected symbol"); return; } } }
static void prefixexp(LexState* ls, expdesc* v) { /* prefixexp -> NAME | '(' expr ')' */ switch (ls->t.token) { case '(': { int line = ls->linenumber; luaX_next(ls); expr(ls, v); check_match(ls, ')', '(', line); luaK_dischargevars(ls->fs, v); return; } case TK_NAME: { singlevar(ls, v); return; } default: { luaX_syntaxerror(ls, "unexpected symbol"); return; } } }
static int funcname (LexState *ls, expdesc *v) { /* funcname -> NAME {field} [`:' NAME] */ int needself = 0; singlevar(ls, v); while (ls->t.token == '.' || ls->t.token == '/' || ls->t.token == ':') field(ls, v); return needself; }
static int funcname (LexState *ls, expdesc *v) { /* funcname -> NAME {field} [`:' NAME] */ int needself = 0; singlevar(ls, v, 1); while (ls->t.token == '.') luaY_field(ls, v); if (ls->t.token == ':') { needself = 1; luaY_field(ls, v); } return needself; }
static int ICACHE_FLASH_ATTR 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; }