function luaY.simpleexp(L,r,P)local M=r.t.token if M=="\084\075\095\078\085\077\066\069\082"then L:init_exp(P,"\086\075\078\085\077",0)P.nval=r.t.seminfo elseif M=="\084\075\095\083\084\082\073\078\071"then L:codestring(r,P,r.t.seminfo)elseif M=="\084\075\095\078\073\076"then L:init_exp(P,"\086\078\073\076",0)elseif M=="\084\075\095\084\082\085\069"then L:init_exp(P,"\086\084\082\085\069",0)elseif M=="\084\075\095\070\065\076\083\069"then L:init_exp(P,"\086\070\065\076\083\069",0)elseif M=="\084\075\095\068\079\084\083"then local M=r.fs L:check_condition(r,M.f.is_vararg~=0,"\099\097\110\110\111\116 \117\115\101 "..(L:LUA_QL("\046\046\046").." \111\117\116\115\105\100\101 \097 \118\097\114\097\114\103 \102\117\110\099\116\105\111\110"))local n=M.f.is_vararg if n>=L.VARARG_NEEDSARG then M.f.is_vararg=n-L.VARARG_NEEDSARG end L:init_exp(P,"\086\086\065\082\065\082\071",luaK:codeABC(M,"\079\080\095\086\065\082\065\082\071",0,1,0))elseif M=="\123"then L:constructor(r,P)return elseif M=="\084\075\095\070\085\078\067\084\073\079\078"then luaX:next(r)L:body(r,P,false,r.linenumber)return else L:primaryexp(r,P)return end luaX:next(r)end
------------------------------------------------------------------------
-- parses general expression types, constants handled here
-- * used in subexpr()
------------------------------------------------------------------------
function luaY:simpleexp(ls, v)
	-- simpleexp -> NUMBER | STRING | NIL | TRUE | FALSE | ... |
	--              constructor | FUNCTION body | primaryexp
	local c = ls.t.token
	if c == "TK_NUMBER" then
		self:init_exp(v, "VKNUM", 0)
		v.nval = ls.t.seminfo
	elseif c == "TK_STRING" then
		self:codestring(ls, v, ls.t.seminfo)
	elseif c == "TK_NIL" then
		self:init_exp(v, "VNIL", 0)
	elseif c == "TK_TRUE" then
		self:init_exp(v, "VTRUE", 0)
	elseif c == "TK_FALSE" then
		self:init_exp(v, "VFALSE", 0)
	elseif c == "TK_DOTS" then -- vararg
		local fs = ls.fs
		self:check_condition(
			ls,
			fs.f.is_vararg ~= 0,
			"cannot use " .. self:LUA_QL("...") .. " outside a vararg function"
		)
		-- NOTE: the following substitutes for a bitop, but is value-specific
		local is_vararg = fs.f.is_vararg
		if is_vararg >= self.VARARG_NEEDSARG then
			fs.f.is_vararg = is_vararg - self.VARARG_NEEDSARG -- don't need 'arg'
		end
		self:init_exp(v, "VVARARG", luaK:codeABC(fs, "OP_VARARG", 0, 1, 0))
	elseif c == "{" then -- constructor
		self:constructor(ls, v)
		return
	elseif c == "TK_FUNCTION" then
		luaX:next(ls)
		self:body(ls, v, false, ls.linenumber)
		return
	else
		self:primaryexp(ls, v)
		return
	end --if c
	luaX:next(ls)
end
