}
public final boolean expr(AST _t) throws RecognitionException {
boolean r;
AST expr_AST_in = (_t == ASTNULL) ? null : (AST)_t;
boolean a,b;
r = false;
try { // for error handling
if (_t==null) _t=ASTNULL;
switch ( _t.getType()) {
case XOR:
{
AST __t31 = _t;
AST tmp1_AST_in = (AST)_t;
match(_t,XOR);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t31;
_t = _t.getNextSibling();
r = !(a && b) && (a || b);
break;
}
case OR:
{
AST __t32 = _t;
AST tmp2_AST_in = (AST)_t;
match(_t,OR);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t32;
_t = _t.getNextSibling();
r = a || b;
break;
}
case AND:
{
AST __t33 = _t;
AST tmp3_AST_in = (AST)_t;
match(_t,AND);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t33;
_t = _t.getNextSibling();
r = a && b;
break;
}
case NOT:
{
AST __t34 = _t;
AST tmp4_AST_in = (AST)_t;
match(_t,NOT);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
_t = __t34;
_t = _t.getNextSibling();
r = !a;
break;
}
case TRUE:
{
AST tmp5_AST_in = (AST)_t;
match(_t,TRUE);
_t = _t.getNextSibling();
r = true;
break;
}
case FALSE:
{
AST tmp6_AST_in = (AST)_t;
match(_t,FALSE);
_t = _t.getNextSibling();
r = false;
break;
}