def _exp_term(self):
        pos = self._pos
        if self._accept(lexer.TokKeyword('nil')) is not None:
            return ExpValue(None, start=pos, end=self._pos)
        if self._accept(lexer.TokKeyword('false')) is not None:
            return ExpValue(False, start=pos, end=self._pos)
        if self._accept(lexer.TokKeyword('true')) is not None:
            return ExpValue(True, start=pos, end=self._pos)
        val = self._accept(lexer.TokNumber)
        if val is not None:
            return ExpValue(val, start=pos, end=self._pos)
        val = self._accept(lexer.TokString)
        if val is not None:
            return ExpValue(val, start=pos, end=self._pos)
        if self._accept(lexer.TokSymbol('...')) is not None:
            return VarargDots(start=pos, end=self._pos)
        val = self._function()
        if val is not None:
            return ExpValue(val, start=pos, end=self._pos)
        val = self._prefixexp()
        if val is not None:
            return ExpValue(val, start=pos, end=self._pos)
        val = self._tableconstructor()
        if val is not None:
            return ExpValue(val, start=pos, end=self._pos)
        
        unop = self._accept(lexer.TokSymbol('-'))
        if unop is None:
            unop = self._accept(lexer.TokKeyword('not'))
            if unop is None:
                unop = self._accept(lexer.TokSymbol('#'))
                if unop is None:
                    return None
        exp = self._assert(self._exp(), 'exp after unary op')
        return ExpUnOp(unop, exp, start=pos, end=self._pos)
Parse a non-recursive expression term.
dataset/ETHPy150Open dansanderson/picotool/pico8/lua/parser.py/Parser._exp_term