(self, prefixexp_first)
return prefixexp_first
Parse the recurring part of a prefixexp.

        prefixexp_recur ::= '[' exp ']' prefixexp_recur |   # VarIndex
                            '.' Name prefixexp_recur |      # VarAttribute
                            args prefixexp_recur |          # FunctionCall
                            ':' Name args prefixexp_recur | # FunctionCallMethod
                            <empty>

        Args:
          prefixexp_first: The first part of the prefixexp.

        Returns:
          VarIndex(exp_prefix, exp_index)
          VarAttribute(exp_prefix, attr_name)
          FunctionCall(exp_prefix, args)
          FunctionCallMethod(exp_prefix, methodname, args)
          prefixexp_first
Parse the recurring part of a prefixexp.
Parse the recurring part of a prefixexp .
def _prefixexp_recur(self, prefixexp_first):
        """Parse the recurring part of a prefixexp.

        prefixexp_recur ::= '[' exp ']' prefixexp_recur |   # VarIndex
                            '.' Name prefixexp_recur |      # VarAttribute
                            args prefixexp_recur |          # FunctionCall
                            ':' Name args prefixexp_recur | # FunctionCallMethod
                            <empty>

        Args:
          prefixexp_first: The first part of the prefixexp.

        Returns:
          VarIndex(exp_prefix, exp_index)
          VarAttribute(exp_prefix, attr_name)
          FunctionCall(exp_prefix, args)
          FunctionCallMethod(exp_prefix, methodname, args)
          prefixexp_first
        """
        pos = self._pos
        if self._accept(lexer.TokSymbol(b'[')) is not None:
            exp = self._assert(self._exp(), 'exp in prefixexp index')
            self._expect(lexer.TokSymbol(b']'))
            return self._prefixexp_recur(VarIndex(prefixexp_first, exp,
                                                  start=pos, end=self._pos))
        if self._accept(lexer.TokSymbol(b'.')) is not None:
            name = self._expect(lexer.TokName)
            return self._prefixexp_recur(VarAttribute(prefixexp_first, name,
                                                      start=pos, end=self._pos))
        args = self._args()
        if args is not None:
            return self._prefixexp_recur(FunctionCall(prefixexp_first, args,
                                                      start=pos, end=self._pos))
        if self._accept(lexer.TokSymbol(b':')) is not None:
            name = self._expect(lexer.TokName)
            args = self._assert(self._args(), 'args for method call')
            return self._prefixexp_recur(
                FunctionCallMethod(prefixexp_first, name, args,
                                   start=pos, end=self._pos))
        return prefixexp_first
def _prefixexp_recur ( self , prefixexp_first ) : pos = self . _pos if self . _accept ( lexer . TokSymbol ( b'[' ) ) is not None : exp = self . _assert ( self . _exp ( ) , 'exp in prefixexp index' ) self . _expect ( lexer . TokSymbol ( b']' ) ) return self . _prefixexp_recur ( VarIndex ( prefixexp_first , exp , start = pos , end = self . _pos ) ) if self . _accept ( lexer . TokSymbol ( b'.' ) ) is not None : name = self . _expect ( lexer . TokName ) return self . _prefixexp_recur ( VarAttribute ( prefixexp_first , name , start = pos , end = self . _pos ) ) args = self . _args ( ) if args is not None : return self . _prefixexp_recur ( FunctionCall ( prefixexp_first , args , start = pos , end = self . _pos ) ) if self . _accept ( lexer . TokSymbol ( b':' ) ) is not None : name = self . _expect ( lexer . TokName ) args = self . _assert ( self . _args ( ) , 'args for method call' ) return self . _prefixexp_recur ( FunctionCallMethod ( prefixexp_first , name , args , start = pos , end = self . _pos ) ) return prefixexp_first