src/main/java/ognl/OgnlParser.java
final public void multiplicativeExpression() throws ParseException {
    unaryExpression();
    label_11:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 37:
      case 38:
      case 39:
        ;
        break;
      default:
        jj_la1[30] = jj_gen;
        break label_11;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 37:
        jj_consume_token(37);
              ASTMultiply jjtn001 = new ASTMultiply(JJTMULTIPLY);
              boolean jjtc001 = true;
              jjtree.openNodeScope(jjtn001);
        try {
          unaryExpression();
        } 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 38:
        jj_consume_token(38);
              ASTDivide jjtn002 = new ASTDivide(JJTDIVIDE);
              boolean jjtc002 = true;
              jjtree.openNodeScope(jjtn002);
        try {
          unaryExpression();
        } 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 39:
        jj_consume_token(39);
              ASTRemainder jjtn003 = new ASTRemainder(JJTREMAINDER);
              boolean jjtc003 = true;
              jjtree.openNodeScope(jjtn003);
        try {
          unaryExpression();
        } 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;
      default:
        jj_la1[31] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }
final public void multiplicativeExpression() throws ParseException {
    unaryExpression();
    label_11:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 37:
      case 38:
      case 39:
        ;
        break;
      default:
        jj_la1[30] = jj_gen;
        break label_11;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 37:
        jj_consume_token(37);
              ASTMultiply jjtn001 = new ASTMultiply(JJTMULTIPLY);
              boolean jjtc001 = true;
              jjtree.openNodeScope(jjtn001);
        try {
          unaryExpression();
        } 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 38:
        jj_consume_token(38);
              ASTDivide jjtn002 = new ASTDivide(JJTDIVIDE);
              boolean jjtc002 = true;
              jjtree.openNodeScope(jjtn002);
        try {
          unaryExpression();
        } 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 39:
        jj_consume_token(39);
              ASTRemainder jjtn003 = new ASTRemainder(JJTREMAINDER);
              boolean jjtc003 = true;
              jjtree.openNodeScope(jjtn003);
        try {
          unaryExpression();
        } 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;
      default:
        jj_la1[31] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }
final public void multiplicativeExpression ( ) throws ParseException { unaryExpression ( ) ; label_11 : while ( true ) { switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 37 : case 38 : case 39 : ; break ; default : jj_la1 [ 30 ] = jj_gen ; break label_11 ; } switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 37 : jj_consume_token ( 37 ) ; ASTMultiply jjtn001 = new ASTMultiply ( JJTMULTIPLY ) ; boolean jjtc001 = true ; jjtree . openNodeScope ( jjtn001 ) ; try { unaryExpression ( ) ; } 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 38 : jj_consume_token ( 38 ) ; ASTDivide jjtn002 = new ASTDivide ( JJTDIVIDE ) ; boolean jjtc002 = true ; jjtree . openNodeScope ( jjtn002 ) ; try { unaryExpression ( ) ; } 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 39 : jj_consume_token ( 39 ) ; ASTRemainder jjtn003 = new ASTRemainder ( JJTREMAINDER ) ; boolean jjtc003 = true ; jjtree . openNodeScope ( jjtn003 ) ; try { unaryExpression ( ) ; } 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 ; default : jj_la1 [ 31 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } } }
multiplication/division/remainder (level 2)
multiplication / division / remainder ( level 2 )