generated/Parser/ParserImpl.php
protected function parseObjectAccessor()
    {
        $a = [];

        if ($this->type !== '.') { return $this; }
        $a[] = $this->consume();

        if ($this->type !== 'T_IDENTIFIER') { $this->error("Error parsing \"ObjectAccessor\" on line %s:"); }
        $a[] = $this->consume();

        // ( '(' ArgumentList? ')' )?
        while (true) {
            $o2 = $this->offset;
            $c2 = [];

            if ($this->type !== '(') { $o2 = null; break; }
            $c2[] = $this->consume();

            // ArgumentList?
            while (true) {
                $o4 = $this->offset;

                if (null === ($parsed = yield 'ArgumentList')) { $o4 = null; break; }
                $c4 = $parsed;

                $c2[] = $c4;

                break;
            }

            if ($o4 === null) {
                $c2[] = null;
            }

            if ($this->type !== ')') { $this->error("Error parsing \"ObjectAccessor\" on line %s:"); }
            $c2[] = $this->consume();

            $a[] = $c2;

            break;
        }

        if ($o2 === null) {
            $a[] = null;
        }

        // Accessor?
        while (true) {
            $o2 = $this->offset;

            if (null === ($parsed = yield 'Accessor')) { $o2 = null; break; }
            $c2 = $parsed;

            $a[] = $c2;

            break;
        }

        if ($o2 === null) {
            $a[] = null;
        }

        return ($this->action)('ObjectAccessor', 'parseObjectAccessor', $a);
    }
protected function parseObjectAccessor()
    {
        $a = [];

        if ($this->type !== '.') { return $this; }
        $a[] = $this->consume();

        if ($this->type !== 'T_IDENTIFIER') { $this->error("Error parsing \"ObjectAccessor\" on line %s:"); }
        $a[] = $this->consume();

        // ( '(' ArgumentList? ')' )?
        while (true) {
            $o2 = $this->offset;
            $c2 = [];

            if ($this->type !== '(') { $o2 = null; break; }
            $c2[] = $this->consume();

            // ArgumentList?
            while (true) {
                $o4 = $this->offset;

                if (null === ($parsed = yield 'ArgumentList')) { $o4 = null; break; }
                $c4 = $parsed;

                $c2[] = $c4;

                break;
            }

            if ($o4 === null) {
                $c2[] = null;
            }

            if ($this->type !== ')') { $this->error("Error parsing \"ObjectAccessor\" on line %s:"); }
            $c2[] = $this->consume();

            $a[] = $c2;

            break;
        }

        if ($o2 === null) {
            $a[] = null;
        }

        // Accessor?
        while (true) {
            $o2 = $this->offset;

            if (null === ($parsed = yield 'Accessor')) { $o2 = null; break; }
            $c2 = $parsed;

            $a[] = $c2;

            break;
        }

        if ($o2 === null) {
            $a[] = null;
        }

        return ($this->action)('ObjectAccessor', 'parseObjectAccessor', $a);
    }
ObjectAccessor ::= '.' T_IDENTIFIER ( '(' ArgumentList? ')' )? Accessor?