code: private ExprCfg parseCmpExpr(ExprToken code, ExprCfg left, ExprCfg right)
    {
      while (true) {
        ExprToken token = scanToken();
        
        switch (token) {
        case EQ: case NE:
        case GT: case LT:
        case LE: case GE:
        case MATCHES:
          left = new ExprCfgCmp(left, right);
  
          code = token;
          right = parseTerm();
          break;
  
          /*
        case Expr.ADD: case Expr.SUB:
          right = parseAddExpr(token, right, parseTerm());
          break;
  
        case Expr.MUL: case Expr.DIV: case Expr.MOD:
          right = parseMulExpr(token, right, parseTerm());
          break;
          */
  
        default:
          unreadToken();
          return new ExprCfgCmp(left, right);
        }
      }
    }
docs: cmp-expr ::= cmp-expr '=' expr
  ::= cmp-expr