_MemberExpression

in doc-src/parsejs/lib/parsejs/grammar.kpeg.rb [6892:7008]


  def _MemberExpression

    _save = self.pos
    while true # choice

      _save1 = self.pos
      while true # sequence
        _tmp = apply(:_MemberExpression)
        left = @result
        unless _tmp
          self.pos = _save1
          break
        end
        _tmp = apply(:__hyphen_)
        unless _tmp
          self.pos = _save1
          break
        end
        _tmp = apply(:_BracketAccessor)
        right = @result
        unless _tmp
          self.pos = _save1
          break
        end
        @result = begin; member_expression(left, right, true); end
        _tmp = true
        unless _tmp
          self.pos = _save1
        end
        break
      end # end sequence

      break if _tmp
      self.pos = _save

      _save2 = self.pos
      while true # sequence
        _tmp = apply(:_MemberExpression)
        left = @result
        unless _tmp
          self.pos = _save2
          break
        end
        _tmp = apply(:__hyphen_)
        unless _tmp
          self.pos = _save2
          break
        end
        _tmp = apply(:_DotAccessor)
        right = @result
        unless _tmp
          self.pos = _save2
          break
        end
        @result = begin; member_expression(left, right, false); end
        _tmp = true
        unless _tmp
          self.pos = _save2
        end
        break
      end # end sequence

      break if _tmp
      self.pos = _save

      _save3 = self.pos
      while true # sequence
        _tmp = apply(:_NewTok)
        unless _tmp
          self.pos = _save3
          break
        end
        _tmp = apply(:__hyphen_)
        unless _tmp
          self.pos = _save3
          break
        end
        _tmp = apply(:_MemberExpression)
        expr = @result
        unless _tmp
          self.pos = _save3
          break
        end
        _tmp = apply(:__hyphen_)
        unless _tmp
          self.pos = _save3
          break
        end
        _tmp = apply(:_Arguments)
        arguments = @result
        unless _tmp
          self.pos = _save3
          break
        end
        @result = begin; new_expression(expr, arguments); end
        _tmp = true
        unless _tmp
          self.pos = _save3
        end
        break
      end # end sequence

      break if _tmp
      self.pos = _save
      _tmp = apply(:_PrimaryExpression)
      break if _tmp
      self.pos = _save
      _tmp = apply(:_FunctionExpression)
      break if _tmp
      self.pos = _save
      break
    end # end choice

    set_failed_rule :_MemberExpression unless _tmp
    return _tmp
  end