/** * Parses a bitwise AND expression <i>x '&' y</i>. * * @param required true, if the expression is required. * @return The generated term. * @throws ParseException if a parse error occurs */ private Term parseBitwiseAnd(final boolean required) throws ParseException { Term t1 = parseAdd(required); while (t1 != null) { int tt = tokenizer.next(); if (tt == '&') { Term t2 = parseAdd(true); if ((t1.isI() && t2.isI()) || !isTypeChecking()) { t1 = new Term.AndI(t1, t2); } else { reportTypeErrorI2("'&'"); } } else { tokenizer.pushBack(); break; } } return t1; }