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;
}
}