示例#1
0
文件: lparser.c 项目: BitMax/openitg
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;
    }
  }
}
示例#2
0
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;
		}
	}
}
示例#3
0
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;
}
示例#4
0
文件: lparser.c 项目: BitMax/openitg
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;
}
示例#5
0
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;
}