static final public AbstractSyntaxTreeNode<DataTypeEnum,IValue> booleanFactorExpression() throws ParseException {
        Token t;
        AbstractSyntaxTreeNode<DataTypeEnum,IValue>  node;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ID:
      t = jj_consume_token(ID);
                {if (true) return new Variable(t.image);}
      break;
    case LPAR:
      jj_consume_token(LPAR);
      node = booleanExpression();
      jj_consume_token(RPAR);
                                                  {if (true) return node;}
      break;
    case TRUE:
      jj_consume_token(TRUE);
                 {if (true) return new Constant<BooleanValue>(new BooleanValue(true));}
      break;
    case FALSE:
      jj_consume_token(FALSE);
                 {if (true) return new Constant<BooleanValue>(new BooleanValue(false));}
      break;
    default:
      jj_la1[3] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }