code: protected Expression expression() {
          Expression left = relationalExpression();
          if (tokenizer.current().isSymbol("&&")) {
              tokenizer.consume();
              Expression right = expression();
              return reOrder(left, right, BinaryOperation.Op.AND);
          }
          if (tokenizer.current().isSymbol("||")) {
              tokenizer.consume();
              Expression right = expression();
              return reOrder(left, right, BinaryOperation.Op.OR);
          }
          return left;
      }
docs: Parser rule for parsing an expression.
  <p>
  This is the root rule. An expression is a <tt>relationalExpression</tt> which might be followed by a logical
  operator (&amp;&amp; or ||) and another <tt>expression</tt>.
  
  @return an expression parsed from the given input