def _field(self):
        pos = self._pos
        if self._accept(lexer.TokSymbol('[')):
            key_exp = self._assert(self._exp(), 'exp key in field')
            self._expect(lexer.TokSymbol(']'))
            self._expect(lexer.TokSymbol('='))
            exp = self._assert(self._exp(), 'exp value in field')
            return FieldExpKey(key_exp, exp, start=pos, end=self._pos)

        key_name = self._accept(lexer.TokName)
        if (key_name is not None and
            self._accept(lexer.TokSymbol('=')) is not None):
            exp = self._assert(self._exp(), 'exp value in field')
            return FieldNamedKey(key_name, exp, start=pos, end=self._pos)
        self._pos = pos
        
        exp = self._exp()
        if exp is not None:
            return FieldExp(exp, start=pos, end=self._pos)

        return None
Parse a field.
dataset/ETHPy150Open dansanderson/picotool/pico8/lua/parser.py/Parser._field