src/main/java/ognl/OgnlParser.java
final public void relationalExpression() throws ParseException {
    shiftExpression();
    label_8:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 19:
      case 20:
      case 21:
      case 22:
      case 23:
      case 24:
      case 25:
      case 26:
      case 27:
      case 28:
        ;
        break;
      default:
        jj_la1[17] = jj_gen;
        break label_8;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 19:
      case 20:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 19:
          jj_consume_token(19);
          break;
        case 20:
          jj_consume_token(20);
          break;
        default:
          jj_la1[18] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                       ASTLess jjtn001 = new ASTLess(JJTLESS);
                       boolean jjtc001 = true;
                       jjtree.openNodeScope(jjtn001);
        try {
          shiftExpression();
        } catch (Throwable jjte001) {
                       if (jjtc001) {
                         jjtree.clearNodeScope(jjtn001);
                         jjtc001 = false;
                       } else {
                         jjtree.popNode();
                       }
                       if (jjte001 instanceof RuntimeException) {
                         {if (true) throw (RuntimeException)jjte001;}
                       }
                       if (jjte001 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte001;}
                       }
                       {if (true) throw (Error)jjte001;}
        } finally {
                       if (jjtc001) {
                         jjtree.closeNodeScope(jjtn001,  2);
                       }
        }
        break;
      case 21:
      case 22:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 21:
          jj_consume_token(21);
          break;
        case 22:
          jj_consume_token(22);
          break;
        default:
          jj_la1[19] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                       ASTGreater jjtn002 = new ASTGreater(JJTGREATER);
                       boolean jjtc002 = true;
                       jjtree.openNodeScope(jjtn002);
        try {
          shiftExpression();
        } catch (Throwable jjte002) {
                       if (jjtc002) {
                         jjtree.clearNodeScope(jjtn002);
                         jjtc002 = false;
                       } else {
                         jjtree.popNode();
                       }
                       if (jjte002 instanceof RuntimeException) {
                         {if (true) throw (RuntimeException)jjte002;}
                       }
                       if (jjte002 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte002;}
                       }
                       {if (true) throw (Error)jjte002;}
        } finally {
                       if (jjtc002) {
                         jjtree.closeNodeScope(jjtn002,  2);
                       }
        }
        break;
      case 23:
      case 24:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 23:
          jj_consume_token(23);
          break;
        case 24:
          jj_consume_token(24);
          break;
        default:
          jj_la1[20] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                         ASTLessEq jjtn003 = new ASTLessEq(JJTLESSEQ);
                         boolean jjtc003 = true;
                         jjtree.openNodeScope(jjtn003);
        try {
          shiftExpression();
        } catch (Throwable jjte003) {
                         if (jjtc003) {
                           jjtree.clearNodeScope(jjtn003);
                           jjtc003 = false;
                         } else {
                           jjtree.popNode();
                         }
                         if (jjte003 instanceof RuntimeException) {
                           {if (true) throw (RuntimeException)jjte003;}
                         }
                         if (jjte003 instanceof ParseException) {
                           {if (true) throw (ParseException)jjte003;}
                         }
                         {if (true) throw (Error)jjte003;}
        } finally {
                         if (jjtc003) {
                           jjtree.closeNodeScope(jjtn003,  2);
                         }
        }
        break;
      case 25:
      case 26:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 25:
          jj_consume_token(25);
          break;
        case 26:
          jj_consume_token(26);
          break;
        default:
          jj_la1[21] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                         ASTGreaterEq jjtn004 = new ASTGreaterEq(JJTGREATEREQ);
                         boolean jjtc004 = true;
                         jjtree.openNodeScope(jjtn004);
        try {
          shiftExpression();
        } catch (Throwable jjte004) {
                         if (jjtc004) {
                           jjtree.clearNodeScope(jjtn004);
                           jjtc004 = false;
                         } else {
                           jjtree.popNode();
                         }
                         if (jjte004 instanceof RuntimeException) {
                           {if (true) throw (RuntimeException)jjte004;}
                         }
                         if (jjte004 instanceof ParseException) {
                           {if (true) throw (ParseException)jjte004;}
                         }
                         {if (true) throw (Error)jjte004;}
        } finally {
                         if (jjtc004) {
                           jjtree.closeNodeScope(jjtn004,  2);
                         }
        }
        break;
      case 27:
        jj_consume_token(27);
               ASTIn jjtn005 = new ASTIn(JJTIN);
               boolean jjtc005 = true;
               jjtree.openNodeScope(jjtn005);
        try {
          shiftExpression();
        } catch (Throwable jjte005) {
               if (jjtc005) {
                 jjtree.clearNodeScope(jjtn005);
                 jjtc005 = false;
               } else {
                 jjtree.popNode();
               }
               if (jjte005 instanceof RuntimeException) {
                 {if (true) throw (RuntimeException)jjte005;}
               }
               if (jjte005 instanceof ParseException) {
                 {if (true) throw (ParseException)jjte005;}
               }
               {if (true) throw (Error)jjte005;}
        } finally {
               if (jjtc005) {
                 jjtree.closeNodeScope(jjtn005,  2);
               }
        }
        break;
      case 28:
        jj_consume_token(28);
        jj_consume_token(27);
                     ASTNotIn jjtn006 = new ASTNotIn(JJTNOTIN);
                     boolean jjtc006 = true;
                     jjtree.openNodeScope(jjtn006);
        try {
          shiftExpression();
        } catch (Throwable jjte006) {
                     if (jjtc006) {
                       jjtree.clearNodeScope(jjtn006);
                       jjtc006 = false;
                     } else {
                       jjtree.popNode();
                     }
                     if (jjte006 instanceof RuntimeException) {
                       {if (true) throw (RuntimeException)jjte006;}
                     }
                     if (jjte006 instanceof ParseException) {
                       {if (true) throw (ParseException)jjte006;}
                     }
                     {if (true) throw (Error)jjte006;}
        } finally {
                     if (jjtc006) {
                       jjtree.closeNodeScope(jjtn006,  2);
                     }
        }
        break;
      default:
        jj_la1[22] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }
final public void relationalExpression() throws ParseException {
    shiftExpression();
    label_8:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 19:
      case 20:
      case 21:
      case 22:
      case 23:
      case 24:
      case 25:
      case 26:
      case 27:
      case 28:
        ;
        break;
      default:
        jj_la1[17] = jj_gen;
        break label_8;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 19:
      case 20:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 19:
          jj_consume_token(19);
          break;
        case 20:
          jj_consume_token(20);
          break;
        default:
          jj_la1[18] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                       ASTLess jjtn001 = new ASTLess(JJTLESS);
                       boolean jjtc001 = true;
                       jjtree.openNodeScope(jjtn001);
        try {
          shiftExpression();
        } catch (Throwable jjte001) {
                       if (jjtc001) {
                         jjtree.clearNodeScope(jjtn001);
                         jjtc001 = false;
                       } else {
                         jjtree.popNode();
                       }
                       if (jjte001 instanceof RuntimeException) {
                         {if (true) throw (RuntimeException)jjte001;}
                       }
                       if (jjte001 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte001;}
                       }
                       {if (true) throw (Error)jjte001;}
        } finally {
                       if (jjtc001) {
                         jjtree.closeNodeScope(jjtn001,  2);
                       }
        }
        break;
      case 21:
      case 22:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 21:
          jj_consume_token(21);
          break;
        case 22:
          jj_consume_token(22);
          break;
        default:
          jj_la1[19] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                       ASTGreater jjtn002 = new ASTGreater(JJTGREATER);
                       boolean jjtc002 = true;
                       jjtree.openNodeScope(jjtn002);
        try {
          shiftExpression();
        } catch (Throwable jjte002) {
                       if (jjtc002) {
                         jjtree.clearNodeScope(jjtn002);
                         jjtc002 = false;
                       } else {
                         jjtree.popNode();
                       }
                       if (jjte002 instanceof RuntimeException) {
                         {if (true) throw (RuntimeException)jjte002;}
                       }
                       if (jjte002 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte002;}
                       }
                       {if (true) throw (Error)jjte002;}
        } finally {
                       if (jjtc002) {
                         jjtree.closeNodeScope(jjtn002,  2);
                       }
        }
        break;
      case 23:
      case 24:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 23:
          jj_consume_token(23);
          break;
        case 24:
          jj_consume_token(24);
          break;
        default:
          jj_la1[20] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                         ASTLessEq jjtn003 = new ASTLessEq(JJTLESSEQ);
                         boolean jjtc003 = true;
                         jjtree.openNodeScope(jjtn003);
        try {
          shiftExpression();
        } catch (Throwable jjte003) {
                         if (jjtc003) {
                           jjtree.clearNodeScope(jjtn003);
                           jjtc003 = false;
                         } else {
                           jjtree.popNode();
                         }
                         if (jjte003 instanceof RuntimeException) {
                           {if (true) throw (RuntimeException)jjte003;}
                         }
                         if (jjte003 instanceof ParseException) {
                           {if (true) throw (ParseException)jjte003;}
                         }
                         {if (true) throw (Error)jjte003;}
        } finally {
                         if (jjtc003) {
                           jjtree.closeNodeScope(jjtn003,  2);
                         }
        }
        break;
      case 25:
      case 26:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 25:
          jj_consume_token(25);
          break;
        case 26:
          jj_consume_token(26);
          break;
        default:
          jj_la1[21] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                         ASTGreaterEq jjtn004 = new ASTGreaterEq(JJTGREATEREQ);
                         boolean jjtc004 = true;
                         jjtree.openNodeScope(jjtn004);
        try {
          shiftExpression();
        } catch (Throwable jjte004) {
                         if (jjtc004) {
                           jjtree.clearNodeScope(jjtn004);
                           jjtc004 = false;
                         } else {
                           jjtree.popNode();
                         }
                         if (jjte004 instanceof RuntimeException) {
                           {if (true) throw (RuntimeException)jjte004;}
                         }
                         if (jjte004 instanceof ParseException) {
                           {if (true) throw (ParseException)jjte004;}
                         }
                         {if (true) throw (Error)jjte004;}
        } finally {
                         if (jjtc004) {
                           jjtree.closeNodeScope(jjtn004,  2);
                         }
        }
        break;
      case 27:
        jj_consume_token(27);
               ASTIn jjtn005 = new ASTIn(JJTIN);
               boolean jjtc005 = true;
               jjtree.openNodeScope(jjtn005);
        try {
          shiftExpression();
        } catch (Throwable jjte005) {
               if (jjtc005) {
                 jjtree.clearNodeScope(jjtn005);
                 jjtc005 = false;
               } else {
                 jjtree.popNode();
               }
               if (jjte005 instanceof RuntimeException) {
                 {if (true) throw (RuntimeException)jjte005;}
               }
               if (jjte005 instanceof ParseException) {
                 {if (true) throw (ParseException)jjte005;}
               }
               {if (true) throw (Error)jjte005;}
        } finally {
               if (jjtc005) {
                 jjtree.closeNodeScope(jjtn005,  2);
               }
        }
        break;
      case 28:
        jj_consume_token(28);
        jj_consume_token(27);
                     ASTNotIn jjtn006 = new ASTNotIn(JJTNOTIN);
                     boolean jjtc006 = true;
                     jjtree.openNodeScope(jjtn006);
        try {
          shiftExpression();
        } catch (Throwable jjte006) {
                     if (jjtc006) {
                       jjtree.clearNodeScope(jjtn006);
                       jjtc006 = false;
                     } else {
                       jjtree.popNode();
                     }
                     if (jjte006 instanceof RuntimeException) {
                       {if (true) throw (RuntimeException)jjte006;}
                     }
                     if (jjte006 instanceof ParseException) {
                       {if (true) throw (ParseException)jjte006;}
                     }
                     {if (true) throw (Error)jjte006;}
        } finally {
                     if (jjtc006) {
                       jjtree.closeNodeScope(jjtn006,  2);
                     }
        }
        break;
      default:
        jj_la1[22] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }
final public void relationalExpression ( ) throws ParseException { shiftExpression ( ) ; label_8 : while ( true ) { switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 19 : case 20 : case 21 : case 22 : case 23 : case 24 : case 25 : case 26 : case 27 : case 28 : ; break ; default : jj_la1 [ 17 ] = jj_gen ; break label_8 ; } switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 19 : case 20 : switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 19 : jj_consume_token ( 19 ) ; break ; case 20 : jj_consume_token ( 20 ) ; break ; default : jj_la1 [ 18 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } ASTLess jjtn001 = new ASTLess ( JJTLESS ) ; boolean jjtc001 = true ; jjtree . openNodeScope ( jjtn001 ) ; try { shiftExpression ( ) ; } catch ( Throwable jjte001 ) { if ( jjtc001 ) { jjtree . clearNodeScope ( jjtn001 ) ; jjtc001 = false ; } else { jjtree . popNode ( ) ; } if ( jjte001 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte001 ; } } if ( jjte001 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte001 ; } } { if ( true ) throw ( Error ) jjte001 ; } } finally { if ( jjtc001 ) { jjtree . closeNodeScope ( jjtn001 , 2 ) ; } } break ; case 21 : case 22 : switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 21 : jj_consume_token ( 21 ) ; break ; case 22 : jj_consume_token ( 22 ) ; break ; default : jj_la1 [ 19 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } ASTGreater jjtn002 = new ASTGreater ( JJTGREATER ) ; boolean jjtc002 = true ; jjtree . openNodeScope ( jjtn002 ) ; try { shiftExpression ( ) ; } catch ( Throwable jjte002 ) { if ( jjtc002 ) { jjtree . clearNodeScope ( jjtn002 ) ; jjtc002 = false ; } else { jjtree . popNode ( ) ; } if ( jjte002 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte002 ; } } if ( jjte002 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte002 ; } } { if ( true ) throw ( Error ) jjte002 ; } } finally { if ( jjtc002 ) { jjtree . closeNodeScope ( jjtn002 , 2 ) ; } } break ; case 23 : case 24 : switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 23 : jj_consume_token ( 23 ) ; break ; case 24 : jj_consume_token ( 24 ) ; break ; default : jj_la1 [ 20 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } ASTLessEq jjtn003 = new ASTLessEq ( JJTLESSEQ ) ; boolean jjtc003 = true ; jjtree . openNodeScope ( jjtn003 ) ; try { shiftExpression ( ) ; } catch ( Throwable jjte003 ) { if ( jjtc003 ) { jjtree . clearNodeScope ( jjtn003 ) ; jjtc003 = false ; } else { jjtree . popNode ( ) ; } if ( jjte003 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte003 ; } } if ( jjte003 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte003 ; } } { if ( true ) throw ( Error ) jjte003 ; } } finally { if ( jjtc003 ) { jjtree . closeNodeScope ( jjtn003 , 2 ) ; } } break ; case 25 : case 26 : switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 25 : jj_consume_token ( 25 ) ; break ; case 26 : jj_consume_token ( 26 ) ; break ; default : jj_la1 [ 21 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } ASTGreaterEq jjtn004 = new ASTGreaterEq ( JJTGREATEREQ ) ; boolean jjtc004 = true ; jjtree . openNodeScope ( jjtn004 ) ; try { shiftExpression ( ) ; } catch ( Throwable jjte004 ) { if ( jjtc004 ) { jjtree . clearNodeScope ( jjtn004 ) ; jjtc004 = false ; } else { jjtree . popNode ( ) ; } if ( jjte004 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte004 ; } } if ( jjte004 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte004 ; } } { if ( true ) throw ( Error ) jjte004 ; } } finally { if ( jjtc004 ) { jjtree . closeNodeScope ( jjtn004 , 2 ) ; } } break ; case 27 : jj_consume_token ( 27 ) ; ASTIn jjtn005 = new ASTIn ( JJTIN ) ; boolean jjtc005 = true ; jjtree . openNodeScope ( jjtn005 ) ; try { shiftExpression ( ) ; } catch ( Throwable jjte005 ) { if ( jjtc005 ) { jjtree . clearNodeScope ( jjtn005 ) ; jjtc005 = false ; } else { jjtree . popNode ( ) ; } if ( jjte005 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte005 ; } } if ( jjte005 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte005 ; } } { if ( true ) throw ( Error ) jjte005 ; } } finally { if ( jjtc005 ) { jjtree . closeNodeScope ( jjtn005 , 2 ) ; } } break ; case 28 : jj_consume_token ( 28 ) ; jj_consume_token ( 27 ) ; ASTNotIn jjtn006 = new ASTNotIn ( JJTNOTIN ) ; boolean jjtc006 = true ; jjtree . openNodeScope ( jjtn006 ) ; try { shiftExpression ( ) ; } catch ( Throwable jjte006 ) { if ( jjtc006 ) { jjtree . clearNodeScope ( jjtn006 ) ; jjtc006 = false ; } else { jjtree . popNode ( ) ; } if ( jjte006 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte006 ; } } if ( jjte006 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte006 ; } } { if ( true ) throw ( Error ) jjte006 ; } } finally { if ( jjtc006 ) { jjtree . closeNodeScope ( jjtn006 , 2 ) ; } } break ; default : jj_la1 [ 22 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } } }
boolean relational expressions (level 5)
boolean relational expressions ( level 5 )