function match_Term($stack = array())
{
$matchrule = "Term";
$result = $this->construct($matchrule, $matchrule, null);
$_60 = NULL;
do {
$res_46 = $result;
$pos_46 = $this->pos;
$_49 = NULL;
do {
$matcher = 'match_' . 'BooleanLiteral';
$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, "term");
} else {
$_49 = FALSE;
break;
}
$res_48 = $result;
$pos_48 = $this->pos;
$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);
$result = $res_48;
$this->pos = $pos_48;
$_49 = FALSE;
break;
} else {
$result = $res_48;
$this->pos = $pos_48;
}
$_49 = TRUE;
break;
} while (0);
if ($_49 === TRUE) {
$_60 = TRUE;
break;
}
$result = $res_46;
$this->pos = $pos_46;
$_58 = NULL;
do {
$res_51 = $result;
$pos_51 = $this->pos;
$matcher = 'match_' . 'NumberLiteral';
$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, "term");
$_58 = TRUE;
break;
}
$result = $res_51;
$this->pos = $pos_51;
$_56 = NULL;
do {
$res_53 = $result;
$pos_53 = $this->pos;
$matcher = 'match_' . 'StringLiteral';
$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, "term");
$_56 = TRUE;
break;
}
$result = $res_53;
$this->pos = $pos_53;
$matcher = 'match_' . 'ObjectPath';
$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, "term");
$_56 = TRUE;
break;
}
$result = $res_53;
$this->pos = $pos_53;
$_56 = FALSE;
break;
} while (0);
if ($_56 === TRUE) {
$_58 = TRUE;
break;
}
$result = $res_51;
$this->pos = $pos_51;
$_58 = FALSE;
break;
} while (0);
if ($_58 === TRUE) {
$_60 = TRUE;
break;
}
$result = $res_46;
$this->pos = $pos_46;
$_60 = FALSE;
break;
} while (0);
if ($_60 === TRUE) {
return $this->finalise($result);
}
if ($_60 === FALSE) {
return FALSE;
}
}