Neos\Eel\FlowQuery\FizzleParser::match_PathFilter PHP Méthode

match_PathFilter() public méthode

public match_PathFilter ( $stack = [] )
    function match_PathFilter($stack = array())
    {
        $matchrule = "PathFilter";
        $result = $this->construct($matchrule, $matchrule, null);
        $_51 = NULL;
        do {
            $res_31 = $result;
            $pos_31 = $this->pos;
            $_40 = NULL;
            do {
                if (substr($this->string, $this->pos, 1) == '/') {
                    $this->pos += 1;
                    $result["text"] .= '/';
                } else {
                    $_40 = FALSE;
                    break;
                }
                $res_39 = $result;
                $pos_39 = $this->pos;
                $_38 = NULL;
                do {
                    $matcher = 'match_' . 'Identifier';
                    $key = $matcher;
                    $pos = $this->pos;
                    $subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
                    if ($subres !== FALSE) {
                        $this->store($result, $subres);
                    } else {
                        $_38 = FALSE;
                        break;
                    }
                    while (true) {
                        $res_37 = $result;
                        $pos_37 = $this->pos;
                        $_36 = NULL;
                        do {
                            if (substr($this->string, $this->pos, 1) == '/') {
                                $this->pos += 1;
                                $result["text"] .= '/';
                            } else {
                                $_36 = FALSE;
                                break;
                            }
                            $matcher = 'match_' . 'Identifier';
                            $key = $matcher;
                            $pos = $this->pos;
                            $subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
                            if ($subres !== FALSE) {
                                $this->store($result, $subres);
                            } else {
                                $_36 = FALSE;
                                break;
                            }
                            $_36 = TRUE;
                            break;
                        } while (0);
                        if ($_36 === FALSE) {
                            $result = $res_37;
                            $this->pos = $pos_37;
                            unset($res_37);
                            unset($pos_37);
                            break;
                        }
                    }
                    $_38 = TRUE;
                    break;
                } while (0);
                if ($_38 === FALSE) {
                    $result = $res_39;
                    $this->pos = $pos_39;
                    unset($res_39);
                    unset($pos_39);
                }
                $_40 = TRUE;
                break;
            } while (0);
            if ($_40 === TRUE) {
                $_51 = TRUE;
                break;
            }
            $result = $res_31;
            $this->pos = $pos_31;
            $_49 = NULL;
            do {
                $matcher = 'match_' . 'Identifier';
                $key = $matcher;
                $pos = $this->pos;
                $subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
                if ($subres !== FALSE) {
                    $this->store($result, $subres);
                } else {
                    $_49 = FALSE;
                    break;
                }
                if (substr($this->string, $this->pos, 1) == '/') {
                    $this->pos += 1;
                    $result["text"] .= '/';
                } else {
                    $_49 = FALSE;
                    break;
                }
                $matcher = 'match_' . 'Identifier';
                $key = $matcher;
                $pos = $this->pos;
                $subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
                if ($subres !== FALSE) {
                    $this->store($result, $subres);
                } else {
                    $_49 = FALSE;
                    break;
                }
                while (true) {
                    $res_48 = $result;
                    $pos_48 = $this->pos;
                    $_47 = NULL;
                    do {
                        if (substr($this->string, $this->pos, 1) == '/') {
                            $this->pos += 1;
                            $result["text"] .= '/';
                        } else {
                            $_47 = FALSE;
                            break;
                        }
                        $matcher = 'match_' . 'Identifier';
                        $key = $matcher;
                        $pos = $this->pos;
                        $subres = $this->packhas($key, $pos) ? $this->packread($key, $pos) : $this->packwrite($key, $pos, $this->{$matcher}(array_merge($stack, array($result))));
                        if ($subres !== FALSE) {
                            $this->store($result, $subres);
                        } else {
                            $_47 = FALSE;
                            break;
                        }
                        $_47 = TRUE;
                        break;
                    } while (0);
                    if ($_47 === FALSE) {
                        $result = $res_48;
                        $this->pos = $pos_48;
                        unset($res_48);
                        unset($pos_48);
                        break;
                    }
                }
                $_49 = TRUE;
                break;
            } while (0);
            if ($_49 === TRUE) {
                $_51 = TRUE;
                break;
            }
            $result = $res_31;
            $this->pos = $pos_31;
            $_51 = FALSE;
            break;
        } while (0);
        if ($_51 === TRUE) {
            return $this->finalise($result);
        }
        if ($_51 === FALSE) {
            return FALSE;
        }
    }