code: protected Expression relationalExpression() {
          Expression left = term();
          if (tokenizer.current().isSymbol("<")) {
              tokenizer.consume();
              Expression right = relationalExpression();
              return reOrder(left, right, BinaryOperation.Op.LT);
          }
          if (tokenizer.current().isSymbol("<=")) {
              tokenizer.consume();
              Expression right = relationalExpression();
              return reOrder(left, right, BinaryOperation.Op.LT_EQ);
          }
          if (tokenizer.current().isSymbol("=")) {
              tokenizer.consume();
              Expression right = relationalExpression();
              return reOrder(left, right, BinaryOperation.Op.EQ);
          }
          if (tokenizer.current().isSymbol(">=")) {
              tokenizer.consume();
              Expression right = relationalExpression();
              return reOrder(left, right, BinaryOperation.Op.GT_EQ);
          }
          if (tokenizer.current().isSymbol(">")) {
              tokenizer.consume();
              Expression right = relationalExpression();
              return reOrder(left, right, BinaryOperation.Op.GT);
          }
          if (tokenizer.current().isSymbol("!=")) {
              tokenizer.consume();
              Expression right = relationalExpression();
              return reOrder(left, right, BinaryOperation.Op.NEQ);
          }
          return left;
      }
docs: Parser rule for parsing a relational expression.
  <p>
  A relational expression is a <tt>term</tt> which might be followed by a relational operator
  (&lt;,&lt;=,...,&gt;) and another <tt>relationalExpression</tt>.
  
  @return a relational expression parsed from the given input