public Exp and_expr() { var e = shift_expr(); if (e == null) return null; while (PeekAndDiscard(TokenType.OP_AMP)) { var r = shift_expr(); if (r == null) Unexpected(); e = new BinExp(Op.BitAnd, e, r, filename, e.Start, r.End); } return e; }