Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 221055
Collapse All | Expand All

(-)src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java (-56 / +393 lines)
Lines 65-74 Link Here
65
          throw new ParseException();
65
          throw new ParseException();
66
        }
66
        }
67
      }
67
      }
68
                                                               jjtree.closeNodeScope(jjtn000, true);
68
                                                                                 jjtree.closeNodeScope(jjtn000, true);
69
                                                               jjtc000 = false;
69
                                                                                 jjtc000 = false;
70
                                                               jjtreeCloseNodeScope(jjtn000);
70
                                                                                 jjtreeCloseNodeScope(jjtn000);
71
                                                               {if (true) return jjtn000;}
71
                                                                                 {if (true) return jjtn000;}
72
    } catch (Throwable jjte000) {
72
    } catch (Throwable jjte000) {
73
          if (jjtc000) {
73
          if (jjtc000) {
74
            jjtree.clearNodeScope(jjtn000);
74
            jjtree.clearNodeScope(jjtn000);
Lines 481-489 Link Here
481
    try {
481
    try {
482
      OrExpression();
482
      OrExpression();
483
      jj_consume_token(COND);
483
      jj_consume_token(COND);
484
      OrExpression();
484
      Expression();
485
      jj_consume_token(COLON);
485
      jj_consume_token(COLON);
486
      OrExpression();
486
      Expression();
487
    } catch (Throwable jjte000) {
487
    } catch (Throwable jjte000) {
488
          if (jjtc000) {
488
          if (jjtc000) {
489
            jjtree.clearNodeScope(jjtn000);
489
            jjtree.clearNodeScope(jjtn000);
Lines 641-647 Link Here
641
        break;
641
        break;
642
      default:
642
      default:
643
        jj_la1[16] = jj_gen;
643
        jj_la1[16] = jj_gen;
644
        if (jj_2_2(3)) {
644
        if (jj_2_2(2147483647)) {
645
          FunctionInvocation();
645
          FunctionInvocation();
646
        } else {
646
        } else {
647
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
647
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
Lines 739-785 Link Here
739
        jjtree.openNodeScope(jjtn000);
739
        jjtree.openNodeScope(jjtn000);
740
        jjtreeOpenNodeScope(jjtn000);Token prefix = null, name = null;
740
        jjtreeOpenNodeScope(jjtn000);Token prefix = null, name = null;
741
    try {
741
    try {
742
      prefix = jj_consume_token(IDENTIFIER);
742
      if (jj_2_3(2)) {
743
      jj_consume_token(COLON);
743
        prefix = jj_consume_token(IDENTIFIER);
744
                                      jjtn000.setFullFunctionName(prefix.image + ":");
744
        jj_consume_token(COLON);
745
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
745
      } else {
746
      case IDENTIFIER:
747
        name = jj_consume_token(IDENTIFIER);
748
        break;
749
      default:
750
        jj_la1[20] = jj_gen;
751
        
746
        
752
      }
747
      }
748
      name = jj_consume_token(IDENTIFIER);
753
            if(null != prefix && null != name)
749
            if(null != prefix && null != name)
754
                    jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
750
                    jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
755
            else if(null != name)
751
            else if(null != name)
756
                    jjtn000.setFullFunctionName(name.image);
752
                    jjtn000.setFullFunctionName(name.image);
757
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
753
      jj_consume_token(LPAREN);
758
      case LPAREN:
754
      Expression();
759
        jj_consume_token(LPAREN);
755
      label_8:
760
        Expression();
756
      while (true) {
761
        label_8:
757
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
762
        while (true) {
758
        case COMMA:
763
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
759
          
764
          case COMMA:
760
          break;
765
            
761
        default:
766
            break;
762
          jj_la1[20] = jj_gen;
767
          default:
763
          break label_8;
768
            jj_la1[21] = jj_gen;
769
            break label_8;
770
          }
771
          jj_consume_token(COMMA);
772
          Expression();
773
        }
764
        }
774
        try {
765
        jj_consume_token(COMMA);
775
          jj_consume_token(RPAREN);
766
        Expression();
776
        } catch (Exception e) {
767
      }
768
      try {
769
        jj_consume_token(RPAREN);
770
      } catch (Exception e) {
777
771
778
        }
779
        break;
780
      default:
781
        jj_la1[22] = jj_gen;
782
        
783
      }
772
      }
784
    } catch (Throwable jjte000) {
773
    } catch (Throwable jjte000) {
785
      if (jjtc000) {
774
      if (jjtc000) {
Lines 830-836 Link Here
830
        jj_consume_token(NULL);
819
        jj_consume_token(NULL);
831
        break;
820
        break;
832
      default:
821
      default:
833
        jj_la1[23] = jj_gen;
822
        jj_la1[21] = jj_gen;
834
        jj_consume_token(-1);
823
        jj_consume_token(-1);
835
        throw new ParseException();
824
        throw new ParseException();
836
      }
825
      }
Lines 856-887 Link Here
856
    finally { jj_save(1, xla); }
845
    finally { jj_save(1, xla); }
857
  }
846
  }
858
847
859
  final private boolean jj_3R_10() {
848
  final private boolean jj_2_3(int xla) {
860
    if (jj_scan_token(LPAREN)) return true;
849
    jj_la = xla; jj_lastpos = jj_scanpos = token;
850
    try { return !jj_3_3(); }
851
    catch(LookaheadSuccess ls) { return true; }
852
    finally { jj_save(2, xla); }
853
  }
854
855
  final private boolean jj_3R_38() {
856
    if (jj_3R_9()) return true;
861
    return false;
857
    return false;
862
  }
858
  }
863
859
864
  final private boolean jj_3R_9() {
860
  final private boolean jj_3R_9() {
861
    if (jj_3R_11()) return true;
862
    Token xsp;
863
    while (true) {
864
      xsp = jj_scanpos;
865
      if (jj_3R_12()) { jj_scanpos = xsp; break; }
866
    }
867
    return false;
868
  }
869
870
  final private boolean jj_3_3() {
865
    if (jj_scan_token(IDENTIFIER)) return true;
871
    if (jj_scan_token(IDENTIFIER)) return true;
866
    if (jj_scan_token(COLON)) return true;
872
    if (jj_scan_token(COLON)) return true;
873
    return false;
874
  }
875
876
  final private boolean jj_3R_34() {
877
    Token xsp;
878
    xsp = jj_scanpos;
879
    if (jj_3_3()) jj_scanpos = xsp;
880
    if (jj_scan_token(IDENTIFIER)) return true;
881
    if (jj_scan_token(LPAREN)) return true;
882
    if (jj_3R_33()) return true;
883
    while (true) {
884
      xsp = jj_scanpos;
885
      if (jj_3R_39()) { jj_scanpos = xsp; break; }
886
    }
887
    if (jj_scan_token(RPAREN)) return true;
888
    return false;
889
  }
890
891
  final private boolean jj_3R_37() {
892
    if (jj_3R_40()) return true;
893
    return false;
894
  }
895
896
  final private boolean jj_3R_17() {
897
    if (jj_3R_19()) return true;
898
    Token xsp;
899
    while (true) {
900
      xsp = jj_scanpos;
901
      if (jj_3R_20()) { jj_scanpos = xsp; break; }
902
    }
903
    return false;
904
  }
905
906
  final private boolean jj_3R_36() {
907
    if (jj_scan_token(LBRACKET)) return true;
908
    if (jj_3R_33()) return true;
909
    if (jj_scan_token(RBRACKET)) return true;
910
    return false;
911
  }
912
913
  final private boolean jj_3R_33() {
914
    Token xsp;
915
    xsp = jj_scanpos;
916
    if (jj_3R_37()) {
917
    jj_scanpos = xsp;
918
    if (jj_3R_38()) return true;
919
    }
920
    return false;
921
  }
922
923
  final private boolean jj_3R_18() {
924
    Token xsp;
925
    xsp = jj_scanpos;
926
    if (jj_scan_token(16)) {
927
    jj_scanpos = xsp;
928
    if (jj_scan_token(17)) {
929
    jj_scanpos = xsp;
930
    if (jj_scan_token(14)) {
931
    jj_scanpos = xsp;
932
    if (jj_scan_token(15)) {
933
    jj_scanpos = xsp;
934
    if (jj_scan_token(22)) {
935
    jj_scanpos = xsp;
936
    if (jj_scan_token(23)) {
937
    jj_scanpos = xsp;
938
    if (jj_scan_token(20)) {
939
    jj_scanpos = xsp;
940
    if (jj_scan_token(21)) return true;
941
    }
942
    }
943
    }
944
    }
945
    }
946
    }
947
    }
948
    if (jj_3R_17()) return true;
949
    return false;
950
  }
951
952
  final private boolean jj_3R_27() {
953
    if (jj_3R_31()) return true;
954
    return false;
955
  }
956
957
  final private boolean jj_3R_35() {
958
    if (jj_scan_token(DOT)) return true;
867
    Token xsp;
959
    Token xsp;
868
    xsp = jj_scanpos;
960
    xsp = jj_scanpos;
869
    if (jj_scan_token(47)) jj_scanpos = xsp;
961
    if (jj_scan_token(47)) jj_scanpos = xsp;
962
    return false;
963
  }
964
965
  final private boolean jj_3R_31() {
966
    Token xsp;
870
    xsp = jj_scanpos;
967
    xsp = jj_scanpos;
871
    if (jj_3R_10()) jj_scanpos = xsp;
968
    if (jj_3R_35()) {
969
    jj_scanpos = xsp;
970
    if (jj_3R_36()) return true;
971
    }
872
    return false;
972
    return false;
873
  }
973
  }
874
974
875
  final private boolean jj_3_2() {
975
  final private boolean jj_3_2() {
976
    if (jj_scan_token(IDENTIFIER)) return true;
977
    Token xsp;
978
    xsp = jj_scanpos;
979
    if (jj_scan_token(26)) {
980
    jj_scanpos = xsp;
981
    if (jj_3R_10()) return true;
982
    }
983
    return false;
984
  }
985
986
  final private boolean jj_3R_29() {
987
    if (jj_scan_token(LPAREN)) return true;
988
    if (jj_3R_33()) return true;
989
    if (jj_scan_token(RPAREN)) return true;
990
    return false;
991
  }
992
993
  final private boolean jj_3R_14() {
994
    Token xsp;
995
    xsp = jj_scanpos;
996
    if (jj_scan_token(41)) {
997
    jj_scanpos = xsp;
998
    if (jj_scan_token(42)) return true;
999
    }
1000
    if (jj_3R_13()) return true;
1001
    return false;
1002
  }
1003
1004
  final private boolean jj_3R_39() {
1005
    if (jj_scan_token(COMMA)) return true;
1006
    if (jj_3R_33()) return true;
1007
    return false;
1008
  }
1009
1010
  final private boolean jj_3R_15() {
1011
    if (jj_3R_17()) return true;
1012
    Token xsp;
1013
    while (true) {
1014
      xsp = jj_scanpos;
1015
      if (jj_3R_18()) { jj_scanpos = xsp; break; }
1016
    }
1017
    return false;
1018
  }
1019
1020
  final private boolean jj_3R_30() {
1021
    if (jj_3R_34()) return true;
1022
    return false;
1023
  }
1024
1025
  final private boolean jj_3R_28() {
1026
    if (jj_3R_32()) return true;
1027
    return false;
1028
  }
1029
1030
  final private boolean jj_3R_26() {
1031
    Token xsp;
1032
    xsp = jj_scanpos;
1033
    if (jj_3R_28()) {
1034
    jj_scanpos = xsp;
1035
    if (jj_3R_29()) {
1036
    jj_scanpos = xsp;
1037
    if (jj_3R_30()) {
1038
    jj_scanpos = xsp;
1039
    if (jj_scan_token(47)) return true;
1040
    }
1041
    }
1042
    }
1043
    return false;
1044
  }
1045
1046
  final private boolean jj_3R_25() {
1047
    if (jj_3R_26()) return true;
1048
    Token xsp;
1049
    while (true) {
1050
      xsp = jj_scanpos;
1051
      if (jj_3R_27()) { jj_scanpos = xsp; break; }
1052
    }
1053
    return false;
1054
  }
1055
1056
  final private boolean jj_3R_16() {
1057
    Token xsp;
1058
    xsp = jj_scanpos;
1059
    if (jj_scan_token(18)) {
1060
    jj_scanpos = xsp;
1061
    if (jj_scan_token(19)) {
1062
    jj_scanpos = xsp;
1063
    if (jj_scan_token(24)) {
1064
    jj_scanpos = xsp;
1065
    if (jj_scan_token(25)) return true;
1066
    }
1067
    }
1068
    }
1069
    if (jj_3R_15()) return true;
1070
    return false;
1071
  }
1072
1073
  final private boolean jj_3R_24() {
1074
    if (jj_3R_25()) return true;
1075
    return false;
1076
  }
1077
1078
  final private boolean jj_3R_13() {
1079
    if (jj_3R_15()) return true;
1080
    Token xsp;
1081
    while (true) {
1082
      xsp = jj_scanpos;
1083
      if (jj_3R_16()) { jj_scanpos = xsp; break; }
1084
    }
1085
    return false;
1086
  }
1087
1088
  final private boolean jj_3R_12() {
1089
    Token xsp;
1090
    xsp = jj_scanpos;
1091
    if (jj_scan_token(43)) {
1092
    jj_scanpos = xsp;
1093
    if (jj_scan_token(44)) return true;
1094
    }
1095
    if (jj_3R_11()) return true;
1096
    return false;
1097
  }
1098
1099
  final private boolean jj_3R_23() {
1100
    Token xsp;
1101
    xsp = jj_scanpos;
1102
    if (jj_scan_token(39)) {
1103
    jj_scanpos = xsp;
1104
    if (jj_scan_token(40)) {
1105
    jj_scanpos = xsp;
1106
    if (jj_scan_token(33)) {
1107
    jj_scanpos = xsp;
1108
    if (jj_scan_token(45)) return true;
1109
    }
1110
    }
1111
    }
1112
    if (jj_3R_21()) return true;
1113
    return false;
1114
  }
1115
1116
  final private boolean jj_3R_20() {
1117
    Token xsp;
1118
    xsp = jj_scanpos;
1119
    if (jj_scan_token(32)) {
1120
    jj_scanpos = xsp;
1121
    if (jj_scan_token(33)) return true;
1122
    }
1123
    if (jj_3R_19()) return true;
1124
    return false;
1125
  }
1126
1127
  final private boolean jj_3R_21() {
1128
    Token xsp;
1129
    xsp = jj_scanpos;
1130
    if (jj_3R_23()) {
1131
    jj_scanpos = xsp;
1132
    if (jj_3R_24()) return true;
1133
    }
1134
    return false;
1135
  }
1136
1137
  final private boolean jj_3R_10() {
1138
    if (jj_scan_token(COLON)) return true;
1139
    if (jj_scan_token(IDENTIFIER)) return true;
1140
    if (jj_scan_token(LPAREN)) return true;
1141
    return false;
1142
  }
1143
1144
  final private boolean jj_3R_22() {
1145
    Token xsp;
1146
    xsp = jj_scanpos;
1147
    if (jj_scan_token(34)) {
1148
    jj_scanpos = xsp;
1149
    if (jj_scan_token(35)) {
1150
    jj_scanpos = xsp;
1151
    if (jj_scan_token(36)) {
1152
    jj_scanpos = xsp;
1153
    if (jj_scan_token(37)) {
1154
    jj_scanpos = xsp;
1155
    if (jj_scan_token(38)) return true;
1156
    }
1157
    }
1158
    }
1159
    }
1160
    if (jj_3R_21()) return true;
1161
    return false;
1162
  }
1163
1164
  final private boolean jj_3R_40() {
876
    if (jj_3R_9()) return true;
1165
    if (jj_3R_9()) return true;
1166
    if (jj_scan_token(COND)) return true;
1167
    if (jj_3R_33()) return true;
1168
    if (jj_scan_token(COLON)) return true;
1169
    if (jj_3R_33()) return true;
1170
    return false;
1171
  }
1172
1173
  final private boolean jj_3R_32() {
1174
    Token xsp;
1175
    xsp = jj_scanpos;
1176
    if (jj_scan_token(10)) {
1177
    jj_scanpos = xsp;
1178
    if (jj_scan_token(11)) {
1179
    jj_scanpos = xsp;
1180
    if (jj_scan_token(5)) {
1181
    jj_scanpos = xsp;
1182
    if (jj_scan_token(6)) {
1183
    jj_scanpos = xsp;
1184
    if (jj_scan_token(8)) {
1185
    jj_scanpos = xsp;
1186
    if (jj_scan_token(12)) return true;
1187
    }
1188
    }
1189
    }
1190
    }
1191
    }
1192
    return false;
1193
  }
1194
1195
  final private boolean jj_3R_11() {
1196
    if (jj_3R_13()) return true;
1197
    Token xsp;
1198
    while (true) {
1199
      xsp = jj_scanpos;
1200
      if (jj_3R_14()) { jj_scanpos = xsp; break; }
1201
    }
877
    return false;
1202
    return false;
878
  }
1203
  }
879
1204
880
  final private boolean jj_3_1() {
1205
  final private boolean jj_3_1() {
1206
    if (jj_3R_9()) return true;
881
    if (jj_scan_token(COND)) return true;
1207
    if (jj_scan_token(COND)) return true;
882
    return false;
1208
    return false;
883
  }
1209
  }
884
1210
1211
  final private boolean jj_3R_19() {
1212
    if (jj_3R_21()) return true;
1213
    Token xsp;
1214
    while (true) {
1215
      xsp = jj_scanpos;
1216
      if (jj_3R_22()) { jj_scanpos = xsp; break; }
1217
    }
1218
    return false;
1219
  }
1220
885
  public JSPELParserTokenManager token_source;
1221
  public JSPELParserTokenManager token_source;
886
  SimpleCharStream jj_input_stream;
1222
  SimpleCharStream jj_input_stream;
887
  public Token token, jj_nt;
1223
  public Token token, jj_nt;
Lines 891-897 Link Here
891
  public boolean lookingAhead = false;
1227
  public boolean lookingAhead = false;
892
//  private boolean jj_semLA;
1228
//  private boolean jj_semLA;
893
  private int jj_gen;
1229
  private int jj_gen;
894
  final private int[] jj_la1 = new int[24];
1230
  final private int[] jj_la1 = new int[22];
895
  static private int[] jj_la1_0;
1231
  static private int[] jj_la1_0;
896
  static private int[] jj_la1_1;
1232
  static private int[] jj_la1_1;
897
  static {
1233
  static {
Lines 899-910 Link Here
899
      jj_la1_1();
1235
      jj_la1_1();
900
   }
1236
   }
901
   private static void jj_la1_0() {
1237
   private static void jj_la1_0() {
902
      jj_la1_0 = new int[] {0x4001d60,0x0,0x0,0x0,0x0,0x30c0000,0x30c0000,0xf3c000,0xf3c000,0x0,0x0,0x0,0x0,0x0,0x4001d60,0x40002000,0x4001d60,0x0,0x0,0x40002000,0x0,0x10000000,0x4000000,0x1d60,};
1238
      jj_la1_0 = new int[] {0x4001d60,0x0,0x0,0x0,0x0,0x30c0000,0x30c0000,0xf3c000,0xf3c000,0x0,0x0,0x0,0x0,0x0,0x4001d60,0x40002000,0x4001d60,0x0,0x0,0x40002000,0x10000000,0x1d60,};
903
   }
1239
   }
904
   private static void jj_la1_1() {
1240
   private static void jj_la1_1() {
905
      jj_la1_1 = new int[] {0xa182,0x1800,0x1800,0x600,0x600,0x0,0x0,0x0,0x0,0x3,0x3,0x7c,0x7c,0x2182,0xa182,0x0,0x0,0x8000,0x8000,0x0,0x8000,0x0,0x0,0x0,};
1241
      jj_la1_1 = new int[] {0xa182,0x1800,0x1800,0x600,0x600,0x0,0x0,0x0,0x0,0x3,0x3,0x7c,0x7c,0x2182,0xa182,0x0,0x0,0x8000,0x8000,0x0,0x0,0x0,};
906
   }
1242
   }
907
  final private JJCalls[] jj_2_rtns = new JJCalls[2];
1243
  final private JJCalls[] jj_2_rtns = new JJCalls[3];
908
  private boolean jj_rescan = false;
1244
  private boolean jj_rescan = false;
909
  private int jj_gc = 0;
1245
  private int jj_gc = 0;
910
1246
Lines 914-920 Link Here
914
    token = new Token();
1250
    token = new Token();
915
    jj_ntk = -1;
1251
    jj_ntk = -1;
916
    jj_gen = 0;
1252
    jj_gen = 0;
917
    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
1253
    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
918
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1254
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
919
  }
1255
  }
920
1256
Lines 925-931 Link Here
925
    jj_ntk = -1;
1261
    jj_ntk = -1;
926
    jjtree.reset();
1262
    jjtree.reset();
927
    jj_gen = 0;
1263
    jj_gen = 0;
928
    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
1264
    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
929
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1265
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
930
  }
1266
  }
931
1267
Lines 935-941 Link Here
935
    token = new Token();
1271
    token = new Token();
936
    jj_ntk = -1;
1272
    jj_ntk = -1;
937
    jj_gen = 0;
1273
    jj_gen = 0;
938
    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
1274
    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
939
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1275
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
940
  }
1276
  }
941
1277
Lines 946-952 Link Here
946
    jj_ntk = -1;
1282
    jj_ntk = -1;
947
    jjtree.reset();
1283
    jjtree.reset();
948
    jj_gen = 0;
1284
    jj_gen = 0;
949
    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
1285
    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
950
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1286
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
951
  }
1287
  }
952
1288
Lines 955-961 Link Here
955
    token = new Token();
1291
    token = new Token();
956
    jj_ntk = -1;
1292
    jj_ntk = -1;
957
    jj_gen = 0;
1293
    jj_gen = 0;
958
    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
1294
    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
959
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1295
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
960
  }
1296
  }
961
1297
Lines 965-971 Link Here
965
    jj_ntk = -1;
1301
    jj_ntk = -1;
966
    jjtree.reset();
1302
    jjtree.reset();
967
    jj_gen = 0;
1303
    jj_gen = 0;
968
    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
1304
    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
969
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1305
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
970
  }
1306
  }
971
1307
Lines 1086-1092 Link Here
1086
      la1tokens[jj_kind] = true;
1422
      la1tokens[jj_kind] = true;
1087
      jj_kind = -1;
1423
      jj_kind = -1;
1088
    }
1424
    }
1089
    for (int i = 0; i < 24; i++) {
1425
    for (int i = 0; i < 22; i++) {
1090
      if (jj_la1[i] == jj_gen) {
1426
      if (jj_la1[i] == jj_gen) {
1091
        for (int j = 0; j < 32; j++) {
1427
        for (int j = 0; j < 32; j++) {
1092
          if ((jj_la1_0[i] & (1<<j)) != 0) {
1428
          if ((jj_la1_0[i] & (1<<j)) != 0) {
Lines 1123-1129 Link Here
1123
1459
1124
  final private void jj_rescan_token() {
1460
  final private void jj_rescan_token() {
1125
    jj_rescan = true;
1461
    jj_rescan = true;
1126
    for (int i = 0; i < 2; i++) {
1462
    for (int i = 0; i < 3; i++) {
1127
      JJCalls p = jj_2_rtns[i];
1463
      JJCalls p = jj_2_rtns[i];
1128
      do {
1464
      do {
1129
        if (p.gen > jj_gen) {
1465
        if (p.gen > jj_gen) {
Lines 1131-1136 Link Here
1131
          switch (i) {
1467
          switch (i) {
1132
            case 0: jj_3_1(); break;
1468
            case 0: jj_3_1(); break;
1133
            case 1: jj_3_2(); break;
1469
            case 1: jj_3_2(); break;
1470
            case 2: jj_3_3(); break;
1134
          }
1471
          }
1135
        }
1472
        }
1136
        p = p.next;
1473
        p = p.next;
(-)src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj (-675 / +676 lines)
Lines 1-675 Link Here
1
*******************************************************************************
1
/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. JSPEL.jj */
2
 * Copyright (c) 2005 BEA Systems and others.
2
/*@egen*//*******************************************************************************
3
 * All rights reserved. This program and the accompanying materials
3
 * Copyright (c) 2005 BEA Systems and others.
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * All rights reserved. This program and the accompanying materials
5
 * which accompanies this distribution, and is available at
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * http://www.eclipse.org/legal/epl-v10.html
6
 * which accompanies this distribution, and is available at
7
 * 
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 * Contributors:
8
 * 
9
 *     BEA Systems - initial implementation
9
 * Contributors:
10
 *     
10
 *     BEA Systems - initial implementation
11
 *******************************************************************************/
11
 *     
12
/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. JSPEL.jj */
12
 *******************************************************************************/
13
/*@egen*//* I know that haing some of these options on one line is rude but 
13
/* I know that having some of these options on one line is rude but 
14
 * if we don't do that the line number reported from javacc are off
14
 * if we don't do that the line number reported from javacc are off
15
 * which, trust me, is far more annoying.  --tcarroll@bea.com
15
 * which, trust me, is far more annoying.  --tcarroll@bea.com
16
 */
16
 */
17
options {
17
options {
18
  JAVA_UNICODE_ESCAPE = false;
18
  JAVA_UNICODE_ESCAPE = false;
19
  UNICODE_INPUT = true;
19
  UNICODE_INPUT = true;
20
  STATIC = false;
20
  STATIC = false;
21
  OPTIMIZE_TOKEN_MANAGER = true;                                                                                                                     
21
  OPTIMIZE_TOKEN_MANAGER = true;                                                                                                                     
22
}
22
}
23
23
24
PARSER_BEGIN(JSPELParser)
24
PARSER_BEGIN(JSPELParser)
25
25
26
package org.eclipse.jst.jsp.core.internal.java.jspel;
26
package org.eclipse.jst.jsp.core.internal.java.jspel;
27
27
28
public class JSPELParser/*@bgen(jjtree)*/implements JSPELParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
28
public class JSPELParser/*@bgen(jjtree)*/implements JSPELParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
29
  protected JJTJSPELParserState jjtree = new JJTJSPELParserState();
29
  protected JJTJSPELParserState jjtree = new JJTJSPELParserState();
30
30
31
/*@egen*/
31
/*@egen*/
32
  
32
  
33
  void jjtreeOpenNodeScope(Node n)
33
  void jjtreeOpenNodeScope(Node n)
34
  {
34
  {
35
          ((SimpleNode)n).setFirstToken(getToken(1));
35
          ((SimpleNode)n).setFirstToken(getToken(1));
36
  }
36
  }
37
37
38
  void jjtreeCloseNodeScope(Node n)
38
  void jjtreeCloseNodeScope(Node n)
39
  {
39
  {
40
    ((SimpleNode)n).setLastToken(getToken(0));
40
    ((SimpleNode)n).setLastToken(getToken(0));
41
  }
41
  }
42
  
42
  
43
  public static JSPELParser createParser(java.lang.String input) {
43
  public static JSPELParser createParser(java.lang.String input) {
44
          java.io.StringReader reader = new java.io.StringReader(input);
44
          java.io.StringReader reader = new java.io.StringReader(input);
45
          return new JSPELParser(reader);
45
          return new JSPELParser(reader);
46
  }
46
  }
47
  
47
  
48
  public void ReInit(java.lang.String input) {
48
  public void ReInit(java.lang.String input) {
49
           java.io.StringReader reader = new java.io.StringReader(input);
49
           java.io.StringReader reader = new java.io.StringReader(input);
50
           ReInit(reader);
50
           ReInit(reader);
51
  }
51
  }
52
  
52
  
53
}
53
}
54
54
55
PARSER_END(JSPELParser)
55
PARSER_END(JSPELParser)
56
56
57
SKIP :
57
SKIP :
58
{
58
{
59
  " "
59
  " "
60
| "\t"
60
| "\t"
61
| "\n"
61
| "\n"
62
| "\r"
62
| "\r"
63
}
63
}
64
64
65
TOKEN :
65
TOKEN :
66
{
66
{
67
/* Literals */
67
/* Literals */
68
  < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* >
68
  < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* >
69
|
69
|
70
  < FLOATING_POINT_LITERAL:
70
  < FLOATING_POINT_LITERAL:
71
        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)?
71
        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)?
72
      | "." (["0"-"9"])+ (<EXPONENT>)?
72
      | "." (["0"-"9"])+ (<EXPONENT>)?
73
      | (["0"-"9"])+ <EXPONENT>
73
      | (["0"-"9"])+ <EXPONENT>
74
  >
74
  >
75
|
75
|
76
  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
76
  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
77
|
77
|
78
  < STRING_LITERAL:
78
  < STRING_LITERAL:
79
      ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\""] )))* "\"") |
79
      ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\""] )))* "\"") |
80
      ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\'"] )))* "\'")
80
      ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\'"] )))* "\'")
81
  >
81
  >
82
|
82
|
83
  < BADLY_ESCAPED_STRING_LITERAL:
83
  < BADLY_ESCAPED_STRING_LITERAL:
84
      ("\"" (~["\"","\\"])* ("\\" ( ~["\\","\""] ))) |
84
      ("\"" (~["\"","\\"])* ("\\" ( ~["\\","\""] ))) |
85
      ("\'" (~["\'","\\"])* ("\\" ( ~["\\","\'"] )))
85
      ("\'" (~["\'","\\"])* ("\\" ( ~["\\","\'"] )))
86
  >
86
  >
87
87
88
/* Reserved Words and Symbols */
88
/* Reserved Words and Symbols */
89
| < TRUE: "true" >
89
| < TRUE: "true" >
90
| < FALSE: "false" >
90
| < FALSE: "false" >
91
| < NULL: "null" >
91
| < NULL: "null" >
92
| < DOT: "." >
92
| < DOT: "." >
93
| < GT1: ">" >
93
| < GT1: ">" >
94
| < GT2: "gt" >
94
| < GT2: "gt" >
95
| < LT1: "<" >
95
| < LT1: "<" >
96
| < LT2: "lt" >
96
| < LT2: "lt" >
97
| < EQ1: "==" >
97
| < EQ1: "==" >
98
| < EQ2: "eq" >
98
| < EQ2: "eq" >
99
| < LE1: "<=" >
99
| < LE1: "<=" >
100
| < LE2: "le" >
100
| < LE2: "le" >
101
| < GE1: ">=" >
101
| < GE1: ">=" >
102
| < GE2: "ge" >
102
| < GE2: "ge" >
103
| < NEQ1: "!=" >
103
| < NEQ1: "!=" >
104
| < NEQ2: "ne" >
104
| < NEQ2: "ne" >
105
| < LPAREN: "(" >
105
| < LPAREN: "(" >
106
| < RPAREN: ")" >
106
| < RPAREN: ")" >
107
| < COMMA: "," >
107
| < COMMA: "," >
108
| < COLON: ":" >
108
| < COLON: ":" >
109
| < LBRACKET: "[" >
109
| < LBRACKET: "[" >
110
| < RBRACKET: "]" >
110
| < RBRACKET: "]" >
111
| < PLUS: "+" >
111
| < PLUS: "+" >
112
| < MINUS: "-" >
112
| < MINUS: "-" >
113
| < MULTIPLY: "*" >
113
| < MULTIPLY: "*" >
114
| < DIVIDE1: "/" >
114
| < DIVIDE1: "/" >
115
| < DIVIDE2: "div" >
115
| < DIVIDE2: "div" >
116
| < MODULUS1: "%" >
116
| < MODULUS1: "%" >
117
| < MODULUS2: "mod" >
117
| < MODULUS2: "mod" >
118
| < NOT1: "not" >
118
| < NOT1: "not" >
119
| < NOT2: "!" >
119
| < NOT2: "!" >
120
| < AND1: "and" >
120
| < AND1: "and" >
121
| < AND2: "&&" >
121
| < AND2: "&&" >
122
| < OR1: "or" >
122
| < OR1: "or" >
123
| < OR2: "||" >
123
| < OR2: "||" >
124
| < EMPTY: "empty" >
124
| < EMPTY: "empty" >
125
| < COND: "?" >
125
| < COND: "?" >
126
126
127
/* Identifiers */
127
/* Identifiers */
128
128
129
| < IDENTIFIER: (<LETTER>|<IMPL_OBJ_START>) (<LETTER>|<DIGIT>)* >
129
| < IDENTIFIER: (<LETTER>|<IMPL_OBJ_START>) (<LETTER>|<DIGIT>)* >
130
| < #IMPL_OBJ_START: "#" >
130
| < #IMPL_OBJ_START: "#" >
131
|
131
|
132
  < #LETTER:
132
  < #LETTER:
133
      [
133
      [
134
       "$",
134
       "$",
135
       "A"-"Z",
135
       "A"-"Z",
136
       "_",
136
       "_",
137
       "a"-"z",
137
       "a"-"z",
138
       "\u00c0"-"\u00d6",
138
       "\u00c0"-"\u00d6",
139
       "\u00d8"-"\u00f6",
139
       "\u00d8"-"\u00f6",
140
       "\u00f8"-"\u00ff",
140
       "\u00f8"-"\u00ff",
141
       "\u0100"-"\u1fff",
141
       "\u0100"-"\u1fff",
142
       "\u3040"-"\u318f",
142
       "\u3040"-"\u318f",
143
       "\u3300"-"\u337f",
143
       "\u3300"-"\u337f",
144
       "\u3400"-"\u3d2d",
144
       "\u3400"-"\u3d2d",
145
       "\u4e00"-"\u9fff",
145
       "\u4e00"-"\u9fff",
146
       "\uf900"-"\ufaff"
146
       "\uf900"-"\ufaff"
147
      ]
147
      ]
148
  >
148
  >
149
|
149
|
150
  < #DIGIT:
150
  < #DIGIT:
151
      [
151
      [
152
       "0"-"9",
152
       "0"-"9",
153
       "\u0660"-"\u0669",
153
       "\u0660"-"\u0669",
154
       "\u06f0"-"\u06f9",
154
       "\u06f0"-"\u06f9",
155
       "\u0966"-"\u096f",
155
       "\u0966"-"\u096f",
156
       "\u09e6"-"\u09ef",
156
       "\u09e6"-"\u09ef",
157
       "\u0a66"-"\u0a6f",
157
       "\u0a66"-"\u0a6f",
158
       "\u0ae6"-"\u0aef",
158
       "\u0ae6"-"\u0aef",
159
       "\u0b66"-"\u0b6f",
159
       "\u0b66"-"\u0b6f",
160
       "\u0be7"-"\u0bef",
160
       "\u0be7"-"\u0bef",
161
       "\u0c66"-"\u0c6f",
161
       "\u0c66"-"\u0c6f",
162
       "\u0ce6"-"\u0cef",
162
       "\u0ce6"-"\u0cef",
163
       "\u0d66"-"\u0d6f",
163
       "\u0d66"-"\u0d6f",
164
       "\u0e50"-"\u0e59",
164
       "\u0e50"-"\u0e59",
165
       "\u0ed0"-"\u0ed9",
165
       "\u0ed0"-"\u0ed9",
166
       "\u1040"-"\u1049"
166
       "\u1040"-"\u1049"
167
      ]
167
      ]
168
  >
168
  >
169
}
169
}
170
170
171
ASTExpression Expression() : {/*@bgen(jjtree) Expression */
171
ASTExpression Expression() : {/*@bgen(jjtree) Expression */
172
  ASTExpression jjtn000 = new ASTExpression(JJTEXPRESSION);
172
  ASTExpression jjtn000 = new ASTExpression(JJTEXPRESSION);
173
  boolean jjtc000 = true;
173
  boolean jjtc000 = true;
174
  jjtree.openNodeScope(jjtn000);
174
  jjtree.openNodeScope(jjtn000);
175
  jjtreeOpenNodeScope(jjtn000);
175
  jjtreeOpenNodeScope(jjtn000);
176
/*@egen*/}
176
/*@egen*/}
177
{/*@bgen(jjtree) Expression */
177
{/*@bgen(jjtree) Expression */
178
        try {
178
        try {
179
/*@egen*/
179
/*@egen*/
180
        (LOOKAHEAD("?") ChoiceExpression() | OrExpression())/*@bgen(jjtree)*/
180
        (LOOKAHEAD(OrExpression() <COND>) ChoiceExpression() | OrExpression())/*@bgen(jjtree)*/
181
                                                             {
181
                                                                               {
182
                                                               jjtree.closeNodeScope(jjtn000, true);
182
                                                                                 jjtree.closeNodeScope(jjtn000, true);
183
                                                               jjtc000 = false;
183
                                                                                 jjtc000 = false;
184
                                                               jjtreeCloseNodeScope(jjtn000);
184
                                                                                 jjtreeCloseNodeScope(jjtn000);
185
                                                             }
185
                                                                               }
186
/*@egen*/ { return jjtn000; }/*@bgen(jjtree)*/
186
/*@egen*/ { return jjtn000; }/*@bgen(jjtree)*/
187
        } catch (Throwable jjte000) {
187
        } catch (Throwable jjte000) {
188
          if (jjtc000) {
188
          if (jjtc000) {
189
            jjtree.clearNodeScope(jjtn000);
189
            jjtree.clearNodeScope(jjtn000);
190
            jjtc000 = false;
190
            jjtc000 = false;
191
          } else {
191
          } else {
192
            jjtree.popNode();
192
            jjtree.popNode();
193
          }
193
          }
194
          if (jjte000 instanceof RuntimeException) {
194
          if (jjte000 instanceof RuntimeException) {
195
            throw (RuntimeException)jjte000;
195
            throw (RuntimeException)jjte000;
196
          }
196
          }
197
          if (jjte000 instanceof ParseException) {
197
          if (jjte000 instanceof ParseException) {
198
            throw (ParseException)jjte000;
198
            throw (ParseException)jjte000;
199
          }
199
          }
200
          throw (Error)jjte000;
200
          throw (Error)jjte000;
201
        } finally {
201
        } finally {
202
          if (jjtc000) {
202
          if (jjtc000) {
203
            jjtree.closeNodeScope(jjtn000, true);
203
            jjtree.closeNodeScope(jjtn000, true);
204
            jjtreeCloseNodeScope(jjtn000);
204
            jjtreeCloseNodeScope(jjtn000);
205
          }
205
          }
206
        }
206
        }
207
/*@egen*/
207
/*@egen*/
208
}
208
}
209
209
210
void OrExpression()                   : 
210
void OrExpression()                   : 
211
{/*@bgen(jjtree) #OrExpression(> 1) */
211
{/*@bgen(jjtree) #OrExpression(> 1) */
212
        ASTOrExpression jjtn000 = new ASTOrExpression(JJTOREXPRESSION);
212
        ASTOrExpression jjtn000 = new ASTOrExpression(JJTOREXPRESSION);
213
        boolean jjtc000 = true;
213
        boolean jjtc000 = true;
214
        jjtree.openNodeScope(jjtn000);
214
        jjtree.openNodeScope(jjtn000);
215
        jjtreeOpenNodeScope(jjtn000);
215
        jjtreeOpenNodeScope(jjtn000);
216
/*@egen*/
216
/*@egen*/
217
        Token t;
217
        Token t;
218
}
218
}
219
{/*@bgen(jjtree) #OrExpression(> 1) */
219
{/*@bgen(jjtree) #OrExpression(> 1) */
220
        try {
220
        try {
221
/*@egen*/
221
/*@egen*/
222
        AndExpression() ((t = <OR1> | t = <OR2>) { jjtn000.addOperatorToken(t); }
222
        AndExpression() ((t = <OR1> | t = <OR2>) { jjtn000.addOperatorToken(t); }
223
        AndExpression())*/*@bgen(jjtree)*/
223
        AndExpression())*/*@bgen(jjtree)*/
224
        } catch (Throwable jjte000) {
224
        } catch (Throwable jjte000) {
225
          if (jjtc000) {
225
          if (jjtc000) {
226
            jjtree.clearNodeScope(jjtn000);
226
            jjtree.clearNodeScope(jjtn000);
227
            jjtc000 = false;
227
            jjtc000 = false;
228
          } else {
228
          } else {
229
            jjtree.popNode();
229
            jjtree.popNode();
230
          }
230
          }
231
          if (jjte000 instanceof RuntimeException) {
231
          if (jjte000 instanceof RuntimeException) {
232
            throw (RuntimeException)jjte000;
232
            throw (RuntimeException)jjte000;
233
          }
233
          }
234
          if (jjte000 instanceof ParseException) {
234
          if (jjte000 instanceof ParseException) {
235
            throw (ParseException)jjte000;
235
            throw (ParseException)jjte000;
236
          }
236
          }
237
          throw (Error)jjte000;
237
          throw (Error)jjte000;
238
        } finally {
238
        } finally {
239
          if (jjtc000) {
239
          if (jjtc000) {
240
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
240
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
241
            jjtreeCloseNodeScope(jjtn000);
241
            jjtreeCloseNodeScope(jjtn000);
242
          }
242
          }
243
        }
243
        }
244
/*@egen*/
244
/*@egen*/
245
}
245
}
246
246
247
void AndExpression()                    : 
247
void AndExpression()                    : 
248
{/*@bgen(jjtree) #AndExpression(> 1) */
248
{/*@bgen(jjtree) #AndExpression(> 1) */
249
        ASTAndExpression jjtn000 = new ASTAndExpression(JJTANDEXPRESSION);
249
        ASTAndExpression jjtn000 = new ASTAndExpression(JJTANDEXPRESSION);
250
        boolean jjtc000 = true;
250
        boolean jjtc000 = true;
251
        jjtree.openNodeScope(jjtn000);
251
        jjtree.openNodeScope(jjtn000);
252
        jjtreeOpenNodeScope(jjtn000);
252
        jjtreeOpenNodeScope(jjtn000);
253
/*@egen*/
253
/*@egen*/
254
        Token t;
254
        Token t;
255
}
255
}
256
{/*@bgen(jjtree) #AndExpression(> 1) */
256
{/*@bgen(jjtree) #AndExpression(> 1) */
257
        try {
257
        try {
258
/*@egen*/
258
/*@egen*/
259
        EqualityExpression() ((t = <AND1> | t = <AND2>) { jjtn000.addOperatorToken(t); }
259
        EqualityExpression() ((t = <AND1> | t = <AND2>) { jjtn000.addOperatorToken(t); }
260
        EqualityExpression())*/*@bgen(jjtree)*/
260
        EqualityExpression())*/*@bgen(jjtree)*/
261
        } catch (Throwable jjte000) {
261
        } catch (Throwable jjte000) {
262
          if (jjtc000) {
262
          if (jjtc000) {
263
            jjtree.clearNodeScope(jjtn000);
263
            jjtree.clearNodeScope(jjtn000);
264
            jjtc000 = false;
264
            jjtc000 = false;
265
          } else {
265
          } else {
266
            jjtree.popNode();
266
            jjtree.popNode();
267
          }
267
          }
268
          if (jjte000 instanceof RuntimeException) {
268
          if (jjte000 instanceof RuntimeException) {
269
            throw (RuntimeException)jjte000;
269
            throw (RuntimeException)jjte000;
270
          }
270
          }
271
          if (jjte000 instanceof ParseException) {
271
          if (jjte000 instanceof ParseException) {
272
            throw (ParseException)jjte000;
272
            throw (ParseException)jjte000;
273
          }
273
          }
274
          throw (Error)jjte000;
274
          throw (Error)jjte000;
275
        } finally {
275
        } finally {
276
          if (jjtc000) {
276
          if (jjtc000) {
277
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
277
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
278
            jjtreeCloseNodeScope(jjtn000);
278
            jjtreeCloseNodeScope(jjtn000);
279
          }
279
          }
280
        }
280
        }
281
/*@egen*/        
281
/*@egen*/        
282
}
282
}
283
283
284
void EqualityExpression()                         : 
284
void EqualityExpression()                         : 
285
{/*@bgen(jjtree) #EqualityExpression(> 1) */
285
{/*@bgen(jjtree) #EqualityExpression(> 1) */
286
        ASTEqualityExpression jjtn000 = new ASTEqualityExpression(JJTEQUALITYEXPRESSION);
286
        ASTEqualityExpression jjtn000 = new ASTEqualityExpression(JJTEQUALITYEXPRESSION);
287
        boolean jjtc000 = true;
287
        boolean jjtc000 = true;
288
        jjtree.openNodeScope(jjtn000);
288
        jjtree.openNodeScope(jjtn000);
289
        jjtreeOpenNodeScope(jjtn000);
289
        jjtreeOpenNodeScope(jjtn000);
290
/*@egen*/
290
/*@egen*/
291
        Token t;
291
        Token t;
292
}
292
}
293
{/*@bgen(jjtree) #EqualityExpression(> 1) */
293
{/*@bgen(jjtree) #EqualityExpression(> 1) */
294
        try {
294
        try {
295
/*@egen*/
295
/*@egen*/
296
        RelationalExpression() 
296
        RelationalExpression() 
297
        ((t = <EQ1> | t = <EQ2> | t = <NEQ1> | t = <NEQ2>) { jjtn000.addOperatorToken(t); }
297
        ((t = <EQ1> | t = <EQ2> | t = <NEQ1> | t = <NEQ2>) { jjtn000.addOperatorToken(t); }
298
        RelationalExpression())*/*@bgen(jjtree)*/
298
        RelationalExpression())*/*@bgen(jjtree)*/
299
        } catch (Throwable jjte000) {
299
        } catch (Throwable jjte000) {
300
          if (jjtc000) {
300
          if (jjtc000) {
301
            jjtree.clearNodeScope(jjtn000);
301
            jjtree.clearNodeScope(jjtn000);
302
            jjtc000 = false;
302
            jjtc000 = false;
303
          } else {
303
          } else {
304
            jjtree.popNode();
304
            jjtree.popNode();
305
          }
305
          }
306
          if (jjte000 instanceof RuntimeException) {
306
          if (jjte000 instanceof RuntimeException) {
307
            throw (RuntimeException)jjte000;
307
            throw (RuntimeException)jjte000;
308
          }
308
          }
309
          if (jjte000 instanceof ParseException) {
309
          if (jjte000 instanceof ParseException) {
310
            throw (ParseException)jjte000;
310
            throw (ParseException)jjte000;
311
          }
311
          }
312
          throw (Error)jjte000;
312
          throw (Error)jjte000;
313
        } finally {
313
        } finally {
314
          if (jjtc000) {
314
          if (jjtc000) {
315
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
315
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
316
            jjtreeCloseNodeScope(jjtn000);
316
            jjtreeCloseNodeScope(jjtn000);
317
          }
317
          }
318
        }
318
        }
319
/*@egen*/
319
/*@egen*/
320
}
320
}
321
321
322
void RelationalExpression()                           :
322
void RelationalExpression()                           :
323
{/*@bgen(jjtree) #RelationalExpression(> 1) */
323
{/*@bgen(jjtree) #RelationalExpression(> 1) */
324
        ASTRelationalExpression jjtn000 = new ASTRelationalExpression(JJTRELATIONALEXPRESSION);
324
        ASTRelationalExpression jjtn000 = new ASTRelationalExpression(JJTRELATIONALEXPRESSION);
325
        boolean jjtc000 = true;
325
        boolean jjtc000 = true;
326
        jjtree.openNodeScope(jjtn000);
326
        jjtree.openNodeScope(jjtn000);
327
        jjtreeOpenNodeScope(jjtn000);
327
        jjtreeOpenNodeScope(jjtn000);
328
/*@egen*/
328
/*@egen*/
329
        Token t;
329
        Token t;
330
}
330
}
331
{/*@bgen(jjtree) #RelationalExpression(> 1) */
331
{/*@bgen(jjtree) #RelationalExpression(> 1) */
332
        try {
332
        try {
333
/*@egen*/
333
/*@egen*/
334
        AddExpression() 
334
        AddExpression() 
335
        (
335
        (
336
                (t = <LT1> | t = <LT2> | t = <GT1> | t = <GT2> | t = <GE1> | t = <GE2> | t = <LE1> | t = <LE2>)  { jjtn000.addOperatorToken(t); }
336
                (t = <LT1> | t = <LT2> | t = <GT1> | t = <GT2> | t = <GE1> | t = <GE2> | t = <LE1> | t = <LE2>)  { jjtn000.addOperatorToken(t); }
337
                AddExpression()
337
                AddExpression()
338
        )*/*@bgen(jjtree)*/
338
        )*/*@bgen(jjtree)*/
339
        } catch (Throwable jjte000) {
339
        } catch (Throwable jjte000) {
340
          if (jjtc000) {
340
          if (jjtc000) {
341
            jjtree.clearNodeScope(jjtn000);
341
            jjtree.clearNodeScope(jjtn000);
342
            jjtc000 = false;
342
            jjtc000 = false;
343
          } else {
343
          } else {
344
            jjtree.popNode();
344
            jjtree.popNode();
345
          }
345
          }
346
          if (jjte000 instanceof RuntimeException) {
346
          if (jjte000 instanceof RuntimeException) {
347
            throw (RuntimeException)jjte000;
347
            throw (RuntimeException)jjte000;
348
          }
348
          }
349
          if (jjte000 instanceof ParseException) {
349
          if (jjte000 instanceof ParseException) {
350
            throw (ParseException)jjte000;
350
            throw (ParseException)jjte000;
351
          }
351
          }
352
          throw (Error)jjte000;
352
          throw (Error)jjte000;
353
        } finally {
353
        } finally {
354
          if (jjtc000) {
354
          if (jjtc000) {
355
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
355
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
356
            jjtreeCloseNodeScope(jjtn000);
356
            jjtreeCloseNodeScope(jjtn000);
357
          }
357
          }
358
        }
358
        }
359
/*@egen*/
359
/*@egen*/
360
}
360
}
361
361
362
void AddExpression()                    : 
362
void AddExpression()                    : 
363
{/*@bgen(jjtree) #AddExpression(> 1) */
363
{/*@bgen(jjtree) #AddExpression(> 1) */
364
        ASTAddExpression jjtn000 = new ASTAddExpression(JJTADDEXPRESSION);
364
        ASTAddExpression jjtn000 = new ASTAddExpression(JJTADDEXPRESSION);
365
        boolean jjtc000 = true;
365
        boolean jjtc000 = true;
366
        jjtree.openNodeScope(jjtn000);
366
        jjtree.openNodeScope(jjtn000);
367
        jjtreeOpenNodeScope(jjtn000);
367
        jjtreeOpenNodeScope(jjtn000);
368
/*@egen*/
368
/*@egen*/
369
        Token t;
369
        Token t;
370
}
370
}
371
{/*@bgen(jjtree) #AddExpression(> 1) */
371
{/*@bgen(jjtree) #AddExpression(> 1) */
372
        try {
372
        try {
373
/*@egen*/
373
/*@egen*/
374
        MultiplyExpression() ((t = <PLUS> | t = <MINUS>) { jjtn000.addOperatorToken(t); }
374
        MultiplyExpression() ((t = <PLUS> | t = <MINUS>) { jjtn000.addOperatorToken(t); }
375
        MultiplyExpression())*/*@bgen(jjtree)*/
375
        MultiplyExpression())*/*@bgen(jjtree)*/
376
        } catch (Throwable jjte000) {
376
        } catch (Throwable jjte000) {
377
          if (jjtc000) {
377
          if (jjtc000) {
378
            jjtree.clearNodeScope(jjtn000);
378
            jjtree.clearNodeScope(jjtn000);
379
            jjtc000 = false;
379
            jjtc000 = false;
380
          } else {
380
          } else {
381
            jjtree.popNode();
381
            jjtree.popNode();
382
          }
382
          }
383
          if (jjte000 instanceof RuntimeException) {
383
          if (jjte000 instanceof RuntimeException) {
384
            throw (RuntimeException)jjte000;
384
            throw (RuntimeException)jjte000;
385
          }
385
          }
386
          if (jjte000 instanceof ParseException) {
386
          if (jjte000 instanceof ParseException) {
387
            throw (ParseException)jjte000;
387
            throw (ParseException)jjte000;
388
          }
388
          }
389
          throw (Error)jjte000;
389
          throw (Error)jjte000;
390
        } finally {
390
        } finally {
391
          if (jjtc000) {
391
          if (jjtc000) {
392
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
392
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
393
            jjtreeCloseNodeScope(jjtn000);
393
            jjtreeCloseNodeScope(jjtn000);
394
          }
394
          }
395
        }
395
        }
396
/*@egen*/
396
/*@egen*/
397
}
397
}
398
398
399
void MultiplyExpression()                         : 
399
void MultiplyExpression()                         : 
400
{/*@bgen(jjtree) #MultiplyExpression(> 1) */
400
{/*@bgen(jjtree) #MultiplyExpression(> 1) */
401
        ASTMultiplyExpression jjtn000 = new ASTMultiplyExpression(JJTMULTIPLYEXPRESSION);
401
        ASTMultiplyExpression jjtn000 = new ASTMultiplyExpression(JJTMULTIPLYEXPRESSION);
402
        boolean jjtc000 = true;
402
        boolean jjtc000 = true;
403
        jjtree.openNodeScope(jjtn000);
403
        jjtree.openNodeScope(jjtn000);
404
        jjtreeOpenNodeScope(jjtn000);
404
        jjtreeOpenNodeScope(jjtn000);
405
/*@egen*/
405
/*@egen*/
406
        Token t;
406
        Token t;
407
}
407
}
408
{/*@bgen(jjtree) #MultiplyExpression(> 1) */
408
{/*@bgen(jjtree) #MultiplyExpression(> 1) */
409
        try {
409
        try {
410
/*@egen*/
410
/*@egen*/
411
        UnaryExpression() (
411
        UnaryExpression() (
412
                ( t = <MULTIPLY> | t = <DIVIDE1> | t = <DIVIDE2> | t = <MODULUS1> | t = <MODULUS2>) { jjtn000.addOperatorToken(t); }
412
                ( t = <MULTIPLY> | t = <DIVIDE1> | t = <DIVIDE2> | t = <MODULUS1> | t = <MODULUS2>) { jjtn000.addOperatorToken(t); }
413
                UnaryExpression()        
413
                UnaryExpression()        
414
        )*/*@bgen(jjtree)*/
414
        )*/*@bgen(jjtree)*/
415
        } catch (Throwable jjte000) {
415
        } catch (Throwable jjte000) {
416
          if (jjtc000) {
416
          if (jjtc000) {
417
            jjtree.clearNodeScope(jjtn000);
417
            jjtree.clearNodeScope(jjtn000);
418
            jjtc000 = false;
418
            jjtc000 = false;
419
          } else {
419
          } else {
420
            jjtree.popNode();
420
            jjtree.popNode();
421
          }
421
          }
422
          if (jjte000 instanceof RuntimeException) {
422
          if (jjte000 instanceof RuntimeException) {
423
            throw (RuntimeException)jjte000;
423
            throw (RuntimeException)jjte000;
424
          }
424
          }
425
          if (jjte000 instanceof ParseException) {
425
          if (jjte000 instanceof ParseException) {
426
            throw (ParseException)jjte000;
426
            throw (ParseException)jjte000;
427
          }
427
          }
428
          throw (Error)jjte000;
428
          throw (Error)jjte000;
429
        } finally {
429
        } finally {
430
          if (jjtc000) {
430
          if (jjtc000) {
431
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
431
            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
432
            jjtreeCloseNodeScope(jjtn000);
432
            jjtreeCloseNodeScope(jjtn000);
433
          }
433
          }
434
        }
434
        }
435
/*@egen*/
435
/*@egen*/
436
}
436
}
437
437
438
void ChoiceExpression() : {/*@bgen(jjtree) ChoiceExpression */
438
void ChoiceExpression() : {/*@bgen(jjtree) ChoiceExpression */
439
  ASTChoiceExpression jjtn000 = new ASTChoiceExpression(JJTCHOICEEXPRESSION);
439
  ASTChoiceExpression jjtn000 = new ASTChoiceExpression(JJTCHOICEEXPRESSION);
440
  boolean jjtc000 = true;
440
  boolean jjtc000 = true;
441
  jjtree.openNodeScope(jjtn000);
441
  jjtree.openNodeScope(jjtn000);
442
  jjtreeOpenNodeScope(jjtn000);
442
  jjtreeOpenNodeScope(jjtn000);
443
/*@egen*/}
443
/*@egen*/}
444
{/*@bgen(jjtree) ChoiceExpression */
444
{/*@bgen(jjtree) ChoiceExpression */
445
        try {
445
        try {
446
/*@egen*/
446
/*@egen*/
447
        OrExpression() <COND> OrExpression() <COLON> OrExpression()/*@bgen(jjtree)*/
447
        OrExpression() <COND> Expression() <COLON> Expression()/*@bgen(jjtree)*/
448
        } catch (Throwable jjte000) {
448
        } catch (Throwable jjte000) {
449
          if (jjtc000) {
449
          if (jjtc000) {
450
            jjtree.clearNodeScope(jjtn000);
450
            jjtree.clearNodeScope(jjtn000);
451
            jjtc000 = false;
451
            jjtc000 = false;
452
          } else {
452
          } else {
453
            jjtree.popNode();
453
            jjtree.popNode();
454
          }
454
          }
455
          if (jjte000 instanceof RuntimeException) {
455
          if (jjte000 instanceof RuntimeException) {
456
            throw (RuntimeException)jjte000;
456
            throw (RuntimeException)jjte000;
457
          }
457
          }
458
          if (jjte000 instanceof ParseException) {
458
          if (jjte000 instanceof ParseException) {
459
            throw (ParseException)jjte000;
459
            throw (ParseException)jjte000;
460
          }
460
          }
461
          throw (Error)jjte000;
461
          throw (Error)jjte000;
462
        } finally {
462
        } finally {
463
          if (jjtc000) {
463
          if (jjtc000) {
464
            jjtree.closeNodeScope(jjtn000, true);
464
            jjtree.closeNodeScope(jjtn000, true);
465
            jjtreeCloseNodeScope(jjtn000);
465
            jjtreeCloseNodeScope(jjtn000);
466
          }
466
          }
467
        }
467
        }
468
/*@egen*/
468
/*@egen*/
469
}
469
}
470
470
471
void UnaryExpression() : {/*@bgen(jjtree) UnaryExpression */
471
void UnaryExpression() : {/*@bgen(jjtree) UnaryExpression */
472
  ASTUnaryExpression jjtn000 = new ASTUnaryExpression(JJTUNARYEXPRESSION);
472
  ASTUnaryExpression jjtn000 = new ASTUnaryExpression(JJTUNARYEXPRESSION);
473
  boolean jjtc000 = true;
473
  boolean jjtc000 = true;
474
  jjtree.openNodeScope(jjtn000);
474
  jjtree.openNodeScope(jjtn000);
475
  jjtreeOpenNodeScope(jjtn000);
475
  jjtreeOpenNodeScope(jjtn000);
476
/*@egen*/}
476
/*@egen*/}
477
{/*@bgen(jjtree) UnaryExpression */
477
{/*@bgen(jjtree) UnaryExpression */
478
        try {
478
        try {
479
/*@egen*/
479
/*@egen*/
480
        ((<NOT1> | <NOT2> | <MINUS> | <EMPTY>) UnaryExpression())
480
        ((<NOT1> | <NOT2> | <MINUS> | <EMPTY>) UnaryExpression())
481
        | Value()/*@bgen(jjtree)*/
481
        | Value()/*@bgen(jjtree)*/
482
        } catch (Throwable jjte000) {
482
        } catch (Throwable jjte000) {
483
          if (jjtc000) {
483
          if (jjtc000) {
484
            jjtree.clearNodeScope(jjtn000);
484
            jjtree.clearNodeScope(jjtn000);
485
            jjtc000 = false;
485
            jjtc000 = false;
486
          } else {
486
          } else {
487
            jjtree.popNode();
487
            jjtree.popNode();
488
          }
488
          }
489
          if (jjte000 instanceof RuntimeException) {
489
          if (jjte000 instanceof RuntimeException) {
490
            throw (RuntimeException)jjte000;
490
            throw (RuntimeException)jjte000;
491
          }
491
          }
492
          if (jjte000 instanceof ParseException) {
492
          if (jjte000 instanceof ParseException) {
493
            throw (ParseException)jjte000;
493
            throw (ParseException)jjte000;
494
          }
494
          }
495
          throw (Error)jjte000;
495
          throw (Error)jjte000;
496
        } finally {
496
        } finally {
497
          if (jjtc000) {
497
          if (jjtc000) {
498
            jjtree.closeNodeScope(jjtn000, true);
498
            jjtree.closeNodeScope(jjtn000, true);
499
            jjtreeCloseNodeScope(jjtn000);
499
            jjtreeCloseNodeScope(jjtn000);
500
          }
500
          }
501
        }
501
        }
502
/*@egen*/
502
/*@egen*/
503
        
503
        
504
}
504
}
505
505
506
void Value() : {/*@bgen(jjtree) Value */
506
void Value() : {/*@bgen(jjtree) Value */
507
  ASTValue jjtn000 = new ASTValue(JJTVALUE);
507
  ASTValue jjtn000 = new ASTValue(JJTVALUE);
508
  boolean jjtc000 = true;
508
  boolean jjtc000 = true;
509
  jjtree.openNodeScope(jjtn000);
509
  jjtree.openNodeScope(jjtn000);
510
  jjtreeOpenNodeScope(jjtn000);
510
  jjtreeOpenNodeScope(jjtn000);
511
/*@egen*/}
511
/*@egen*/}
512
{/*@bgen(jjtree) Value */
512
{/*@bgen(jjtree) Value */
513
        try {
513
        try {
514
/*@egen*/
514
/*@egen*/
515
        ValuePrefix() (ValueSuffix())*/*@bgen(jjtree)*/
515
        ValuePrefix() (ValueSuffix())*/*@bgen(jjtree)*/
516
        } catch (Throwable jjte000) {
516
        } catch (Throwable jjte000) {
517
          if (jjtc000) {
517
          if (jjtc000) {
518
            jjtree.clearNodeScope(jjtn000);
518
            jjtree.clearNodeScope(jjtn000);
519
            jjtc000 = false;
519
            jjtc000 = false;
520
          } else {
520
          } else {
521
            jjtree.popNode();
521
            jjtree.popNode();
522
          }
522
          }
523
          if (jjte000 instanceof RuntimeException) {
523
          if (jjte000 instanceof RuntimeException) {
524
            throw (RuntimeException)jjte000;
524
            throw (RuntimeException)jjte000;
525
          }
525
          }
526
          if (jjte000 instanceof ParseException) {
526
          if (jjte000 instanceof ParseException) {
527
            throw (ParseException)jjte000;
527
            throw (ParseException)jjte000;
528
          }
528
          }
529
          throw (Error)jjte000;
529
          throw (Error)jjte000;
530
        } finally {
530
        } finally {
531
          if (jjtc000) {
531
          if (jjtc000) {
532
            jjtree.closeNodeScope(jjtn000, true);
532
            jjtree.closeNodeScope(jjtn000, true);
533
            jjtreeCloseNodeScope(jjtn000);
533
            jjtreeCloseNodeScope(jjtn000);
534
          }
534
          }
535
        }
535
        }
536
/*@egen*/
536
/*@egen*/
537
}
537
}
538
538
539
void ValuePrefix() : {/*@bgen(jjtree) ValuePrefix */
539
void ValuePrefix() : {/*@bgen(jjtree) ValuePrefix */
540
  ASTValuePrefix jjtn000 = new ASTValuePrefix(JJTVALUEPREFIX);
540
  ASTValuePrefix jjtn000 = new ASTValuePrefix(JJTVALUEPREFIX);
541
  boolean jjtc000 = true;
541
  boolean jjtc000 = true;
542
  jjtree.openNodeScope(jjtn000);
542
  jjtree.openNodeScope(jjtn000);
543
  jjtreeOpenNodeScope(jjtn000);
543
  jjtreeOpenNodeScope(jjtn000);
544
/*@egen*/}
544
/*@egen*/}
545
{/*@bgen(jjtree) ValuePrefix */
545
{/*@bgen(jjtree) ValuePrefix */
546
    try {
546
    try {
547
/*@egen*/
547
/*@egen*/
548
    Literal() | (<LPAREN> Expression() <RPAREN>) | LOOKAHEAD(3) FunctionInvocation() | <IDENTIFIER>/*@bgen(jjtree)*/
548
    Literal() | (<LPAREN> Expression() <RPAREN>)
549
    } catch (Throwable jjte000) {
549
    | LOOKAHEAD(<IDENTIFIER> (<LPAREN> | <COLON> <IDENTIFIER> <LPAREN>)) FunctionInvocation() | <IDENTIFIER>/*@bgen(jjtree)*/
550
      if (jjtc000) {
550
    } catch (Throwable jjte000) {
551
        jjtree.clearNodeScope(jjtn000);
551
      if (jjtc000) {
552
        jjtc000 = false;
552
        jjtree.clearNodeScope(jjtn000);
553
      } else {
553
        jjtc000 = false;
554
        jjtree.popNode();
554
      } else {
555
      }
555
        jjtree.popNode();
556
      if (jjte000 instanceof RuntimeException) {
556
      }
557
        throw (RuntimeException)jjte000;
557
      if (jjte000 instanceof RuntimeException) {
558
      }
558
        throw (RuntimeException)jjte000;
559
      if (jjte000 instanceof ParseException) {
559
      }
560
        throw (ParseException)jjte000;
560
      if (jjte000 instanceof ParseException) {
561
      }
561
        throw (ParseException)jjte000;
562
      throw (Error)jjte000;
562
      }
563
    } finally {
563
      throw (Error)jjte000;
564
      if (jjtc000) {
564
    } finally {
565
        jjtree.closeNodeScope(jjtn000, true);
565
      if (jjtc000) {
566
        jjtreeCloseNodeScope(jjtn000);
566
        jjtree.closeNodeScope(jjtn000, true);
567
      }
567
        jjtreeCloseNodeScope(jjtn000);
568
    }
568
      }
569
/*@egen*/ 
569
    }
570
}
570
/*@egen*/ 
571
571
}
572
void ValueSuffix() : 
572
573
{/*@bgen(jjtree) ValueSuffix */
573
void ValueSuffix() : 
574
        ASTValueSuffix jjtn000 = new ASTValueSuffix(JJTVALUESUFFIX);
574
{/*@bgen(jjtree) ValueSuffix */
575
        boolean jjtc000 = true;
575
        ASTValueSuffix jjtn000 = new ASTValueSuffix(JJTVALUESUFFIX);
576
        jjtree.openNodeScope(jjtn000);
576
        boolean jjtc000 = true;
577
        jjtreeOpenNodeScope(jjtn000);
577
        jjtree.openNodeScope(jjtn000);
578
/*@egen*/
578
        jjtreeOpenNodeScope(jjtn000);
579
        Token t = null;
579
/*@egen*/
580
}
580
        Token t = null;
581
{/*@bgen(jjtree) ValueSuffix */
581
}
582
        try {
582
{/*@bgen(jjtree) ValueSuffix */
583
/*@egen*/
583
        try {
584
        (<DOT> (t = <IDENTIFIER>)?)/*@bgen(jjtree)*/
584
/*@egen*/
585
                                    {
585
        (<DOT> (t = <IDENTIFIER>)?)/*@bgen(jjtree)*/
586
                                      jjtree.closeNodeScope(jjtn000, true);
586
                                    {
587
                                      jjtc000 = false;
587
                                      jjtree.closeNodeScope(jjtn000, true);
588
                                      jjtreeCloseNodeScope(jjtn000);
588
                                      jjtc000 = false;
589
                                    }
589
                                      jjtreeCloseNodeScope(jjtn000);
590
/*@egen*/ { jjtn000.setPropertyNameToken(t); }
590
                                    }
591
        | (<LBRACKET> Expression() <RBRACKET>)/*@bgen(jjtree)*/
591
/*@egen*/ { jjtn000.setPropertyNameToken(t); }
592
        } catch (Throwable jjte000) {
592
        | (<LBRACKET> Expression() <RBRACKET>)/*@bgen(jjtree)*/
593
          if (jjtc000) {
593
        } catch (Throwable jjte000) {
594
            jjtree.clearNodeScope(jjtn000);
594
          if (jjtc000) {
595
            jjtc000 = false;
595
            jjtree.clearNodeScope(jjtn000);
596
          } else {
596
            jjtc000 = false;
597
            jjtree.popNode();
597
          } else {
598
          }
598
            jjtree.popNode();
599
          if (jjte000 instanceof RuntimeException) {
599
          }
600
            throw (RuntimeException)jjte000;
600
          if (jjte000 instanceof RuntimeException) {
601
          }
601
            throw (RuntimeException)jjte000;
602
          if (jjte000 instanceof ParseException) {
602
          }
603
            throw (ParseException)jjte000;
603
          if (jjte000 instanceof ParseException) {
604
          }
604
            throw (ParseException)jjte000;
605
          throw (Error)jjte000;
605
          }
606
        } finally {
606
          throw (Error)jjte000;
607
          if (jjtc000) {
607
        } finally {
608
            jjtree.closeNodeScope(jjtn000, true);
608
          if (jjtc000) {
609
            jjtreeCloseNodeScope(jjtn000);
609
            jjtree.closeNodeScope(jjtn000, true);
610
          }
610
            jjtreeCloseNodeScope(jjtn000);
611
        }
611
          }
612
/*@egen*/
612
        }
613
}
613
/*@egen*/
614
614
}
615
void FunctionInvocation() : 
615
616
{/*@bgen(jjtree) FunctionInvocation */
616
void FunctionInvocation() : 
617
        ASTFunctionInvocation jjtn000 = new ASTFunctionInvocation(JJTFUNCTIONINVOCATION);
617
{/*@bgen(jjtree) FunctionInvocation */
618
        boolean jjtc000 = true;
618
        ASTFunctionInvocation jjtn000 = new ASTFunctionInvocation(JJTFUNCTIONINVOCATION);
619
        jjtree.openNodeScope(jjtn000);
619
        boolean jjtc000 = true;
620
        jjtreeOpenNodeScope(jjtn000);
620
        jjtree.openNodeScope(jjtn000);
621
/*@egen*/
621
        jjtreeOpenNodeScope(jjtn000);
622
        Token prefix = null, name = null;
622
/*@egen*/
623
}
623
        Token prefix = null, name = null;
624
{/*@bgen(jjtree) FunctionInvocation */
624
}
625
    try {
625
{/*@bgen(jjtree) FunctionInvocation */
626
/*@egen*/
626
    try {
627
    (prefix = <IDENTIFIER> <COLON>) { jjtn000.setFullFunctionName(prefix.image + ":"); }
627
/*@egen*/
628
        (name = <IDENTIFIER>)? {
628
    (LOOKAHEAD(2) prefix = <IDENTIFIER> <COLON>)?
629
            if(null != prefix && null != name)
629
        (name = <IDENTIFIER>) {
630
                    jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
630
            if(null != prefix && null != name)
631
            else if(null != name)
631
                    jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
632
                    jjtn000.setFullFunctionName(name.image);
632
            else if(null != name)
633
        }
633
                    jjtn000.setFullFunctionName(name.image);
634
        (<LPAREN> Expression() (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )?/*@bgen(jjtree)*/
634
        }
635
    } catch (Throwable jjte000) {
635
        (<LPAREN> Expression() (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )/*@bgen(jjtree)*/
636
      if (jjtc000) {
636
    } catch (Throwable jjte000) {
637
        jjtree.clearNodeScope(jjtn000);
637
      if (jjtc000) {
638
        jjtc000 = false;
638
        jjtree.clearNodeScope(jjtn000);
639
      } else {
639
        jjtc000 = false;
640
        jjtree.popNode();
640
      } else {
641
      }
641
        jjtree.popNode();
642
      if (jjte000 instanceof RuntimeException) {
642
      }
643
        throw (RuntimeException)jjte000;
643
      if (jjte000 instanceof RuntimeException) {
644
      }
644
        throw (RuntimeException)jjte000;
645
      if (jjte000 instanceof ParseException) {
645
      }
646
        throw (ParseException)jjte000;
646
      if (jjte000 instanceof ParseException) {
647
      }
647
        throw (ParseException)jjte000;
648
      throw (Error)jjte000;
648
      }
649
    } finally {
649
      throw (Error)jjte000;
650
      if (jjtc000) {
650
    } finally {
651
        jjtree.closeNodeScope(jjtn000, true);
651
      if (jjtc000) {
652
        jjtreeCloseNodeScope(jjtn000);
652
        jjtree.closeNodeScope(jjtn000, true);
653
      }
653
        jjtreeCloseNodeScope(jjtn000);
654
    }
654
      }
655
/*@egen*/
655
    }
656
}
656
/*@egen*/
657
657
}
658
void Literal() : {/*@bgen(jjtree) Literal */
658
659
  ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL);
659
void Literal() : {/*@bgen(jjtree) Literal */
660
  boolean jjtc000 = true;
660
  ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL);
661
  jjtree.openNodeScope(jjtn000);
661
  boolean jjtc000 = true;
662
  jjtreeOpenNodeScope(jjtn000);
662
  jjtree.openNodeScope(jjtn000);
663
/*@egen*/}
663
  jjtreeOpenNodeScope(jjtn000);
664
{/*@bgen(jjtree) Literal */
664
/*@egen*/}
665
        try {
665
{/*@bgen(jjtree) Literal */
666
/*@egen*/
666
        try {
667
        <TRUE> | <FALSE> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <NULL>/*@bgen(jjtree)*/
667
/*@egen*/
668
        } finally {
668
        <TRUE> | <FALSE> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <NULL>/*@bgen(jjtree)*/
669
          if (jjtc000) {
669
        } finally {
670
            jjtree.closeNodeScope(jjtn000, true);
670
          if (jjtc000) {
671
            jjtreeCloseNodeScope(jjtn000);
671
            jjtree.closeNodeScope(jjtn000, true);
672
          }
672
            jjtreeCloseNodeScope(jjtn000);
673
        }
673
          }
674
/*@egen*/
674
        }
675
}
675
/*@egen*/
676
}
(-)src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt (-281 / +282 lines)
Lines 1-281 Link Here
1
*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2005 BEA Systems and others.
2
 * Copyright (c) 2005 BEA Systems and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
7
 * 
8
 * Contributors:
8
 * Contributors:
9
 *     BEA Systems - initial implementation
9
 *     BEA Systems - initial implementation
10
 *     
10
 *     
11
 *******************************************************************************/
11
 *******************************************************************************/
12
/* I know that having some of these options on one line is rude but 
12
/* I know that having some of these options on one line is rude but 
13
 * if we don't do that the line number reported from javacc are off
13
 * if we don't do that the line number reported from javacc are off
14
 * which, trust me, is far more annoying.  --tcarroll@bea.com
14
 * which, trust me, is far more annoying.  --tcarroll@bea.com
15
 */
15
 */
16
options {
16
options {
17
  JAVA_UNICODE_ESCAPE = false;
17
  JAVA_UNICODE_ESCAPE = false;
18
  UNICODE_INPUT = true;
18
  UNICODE_INPUT = true;
19
  STATIC = false;
19
  STATIC = false;
20
  OPTIMIZE_TOKEN_MANAGER = true; MULTI = true; VISITOR = true; NODE_PACKAGE = "org.eclipse.jst.jsp.core.internal.java.jspel"; NODE_SCOPE_HOOK = true;
20
  OPTIMIZE_TOKEN_MANAGER = true; MULTI = true; VISITOR = true; NODE_PACKAGE = "org.eclipse.jst.jsp.core.internal.java.jspel"; NODE_SCOPE_HOOK = true;
21
}
21
}
22
22
23
PARSER_BEGIN(JSPELParser)
23
PARSER_BEGIN(JSPELParser)
24
24
25
package org.eclipse.jst.jsp.core.internal.java.jspel;
25
package org.eclipse.jst.jsp.core.internal.java.jspel;
26
26
27
public class JSPELParser {
27
public class JSPELParser {
28
  
28
  
29
  void jjtreeOpenNodeScope(Node n)
29
  void jjtreeOpenNodeScope(Node n)
30
  {
30
  {
31
          ((SimpleNode)n).setFirstToken(getToken(1));
31
          ((SimpleNode)n).setFirstToken(getToken(1));
32
  }
32
  }
33
33
34
  void jjtreeCloseNodeScope(Node n)
34
  void jjtreeCloseNodeScope(Node n)
35
  {
35
  {
36
    ((SimpleNode)n).setLastToken(getToken(0));
36
    ((SimpleNode)n).setLastToken(getToken(0));
37
  }
37
  }
38
  
38
  
39
  public static JSPELParser createParser(java.lang.String input) {
39
  public static JSPELParser createParser(java.lang.String input) {
40
          java.io.StringReader reader = new java.io.StringReader(input);
40
          java.io.StringReader reader = new java.io.StringReader(input);
41
          return new JSPELParser(reader);
41
          return new JSPELParser(reader);
42
  }
42
  }
43
  
43
  
44
  public void ReInit(java.lang.String input) {
44
  public void ReInit(java.lang.String input) {
45
           java.io.StringReader reader = new java.io.StringReader(input);
45
           java.io.StringReader reader = new java.io.StringReader(input);
46
           ReInit(reader);
46
           ReInit(reader);
47
  }
47
  }
48
  
48
  
49
}
49
}
50
50
51
PARSER_END(JSPELParser)
51
PARSER_END(JSPELParser)
52
52
53
SKIP :
53
SKIP :
54
{
54
{
55
  " "
55
  " "
56
| "\t"
56
| "\t"
57
| "\n"
57
| "\n"
58
| "\r"
58
| "\r"
59
}
59
}
60
60
61
TOKEN :
61
TOKEN :
62
{
62
{
63
/* Literals */
63
/* Literals */
64
  < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* >
64
  < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* >
65
|
65
|
66
  < FLOATING_POINT_LITERAL:
66
  < FLOATING_POINT_LITERAL:
67
        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)?
67
        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)?
68
      | "." (["0"-"9"])+ (<EXPONENT>)?
68
      | "." (["0"-"9"])+ (<EXPONENT>)?
69
      | (["0"-"9"])+ <EXPONENT>
69
      | (["0"-"9"])+ <EXPONENT>
70
  >
70
  >
71
|
71
|
72
  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
72
  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
73
|
73
|
74
  < STRING_LITERAL:
74
  < STRING_LITERAL:
75
      ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\""] )))* "\"") |
75
      ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\""] )))* "\"") |
76
      ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\'"] )))* "\'")
76
      ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\'"] )))* "\'")
77
  >
77
  >
78
|
78
|
79
  < BADLY_ESCAPED_STRING_LITERAL:
79
  < BADLY_ESCAPED_STRING_LITERAL:
80
      ("\"" (~["\"","\\"])* ("\\" ( ~["\\","\""] ))) |
80
      ("\"" (~["\"","\\"])* ("\\" ( ~["\\","\""] ))) |
81
      ("\'" (~["\'","\\"])* ("\\" ( ~["\\","\'"] )))
81
      ("\'" (~["\'","\\"])* ("\\" ( ~["\\","\'"] )))
82
  >
82
  >
83
83
84
/* Reserved Words and Symbols */
84
/* Reserved Words and Symbols */
85
| < TRUE: "true" >
85
| < TRUE: "true" >
86
| < FALSE: "false" >
86
| < FALSE: "false" >
87
| < NULL: "null" >
87
| < NULL: "null" >
88
| < DOT: "." >
88
| < DOT: "." >
89
| < GT1: ">" >
89
| < GT1: ">" >
90
| < GT2: "gt" >
90
| < GT2: "gt" >
91
| < LT1: "<" >
91
| < LT1: "<" >
92
| < LT2: "lt" >
92
| < LT2: "lt" >
93
| < EQ1: "==" >
93
| < EQ1: "==" >
94
| < EQ2: "eq" >
94
| < EQ2: "eq" >
95
| < LE1: "<=" >
95
| < LE1: "<=" >
96
| < LE2: "le" >
96
| < LE2: "le" >
97
| < GE1: ">=" >
97
| < GE1: ">=" >
98
| < GE2: "ge" >
98
| < GE2: "ge" >
99
| < NEQ1: "!=" >
99
| < NEQ1: "!=" >
100
| < NEQ2: "ne" >
100
| < NEQ2: "ne" >
101
| < LPAREN: "(" >
101
| < LPAREN: "(" >
102
| < RPAREN: ")" >
102
| < RPAREN: ")" >
103
| < COMMA: "," >
103
| < COMMA: "," >
104
| < COLON: ":" >
104
| < COLON: ":" >
105
| < LBRACKET: "[" >
105
| < LBRACKET: "[" >
106
| < RBRACKET: "]" >
106
| < RBRACKET: "]" >
107
| < PLUS: "+" >
107
| < PLUS: "+" >
108
| < MINUS: "-" >
108
| < MINUS: "-" >
109
| < MULTIPLY: "*" >
109
| < MULTIPLY: "*" >
110
| < DIVIDE1: "/" >
110
| < DIVIDE1: "/" >
111
| < DIVIDE2: "div" >
111
| < DIVIDE2: "div" >
112
| < MODULUS1: "%" >
112
| < MODULUS1: "%" >
113
| < MODULUS2: "mod" >
113
| < MODULUS2: "mod" >
114
| < NOT1: "not" >
114
| < NOT1: "not" >
115
| < NOT2: "!" >
115
| < NOT2: "!" >
116
| < AND1: "and" >
116
| < AND1: "and" >
117
| < AND2: "&&" >
117
| < AND2: "&&" >
118
| < OR1: "or" >
118
| < OR1: "or" >
119
| < OR2: "||" >
119
| < OR2: "||" >
120
| < EMPTY: "empty" >
120
| < EMPTY: "empty" >
121
| < COND: "?" >
121
| < COND: "?" >
122
122
123
/* Identifiers */
123
/* Identifiers */
124
124
125
| < IDENTIFIER: (<LETTER>|<IMPL_OBJ_START>) (<LETTER>|<DIGIT>)* >
125
| < IDENTIFIER: (<LETTER>|<IMPL_OBJ_START>) (<LETTER>|<DIGIT>)* >
126
| < #IMPL_OBJ_START: "#" >
126
| < #IMPL_OBJ_START: "#" >
127
|
127
|
128
  < #LETTER:
128
  < #LETTER:
129
      [
129
      [
130
       "\u0024",
130
       "\u0024",
131
       "\u0041"-"\u005a",
131
       "\u0041"-"\u005a",
132
       "\u005f",
132
       "\u005f",
133
       "\u0061"-"\u007a",
133
       "\u0061"-"\u007a",
134
       "\u00c0"-"\u00d6",
134
       "\u00c0"-"\u00d6",
135
       "\u00d8"-"\u00f6",
135
       "\u00d8"-"\u00f6",
136
       "\u00f8"-"\u00ff",
136
       "\u00f8"-"\u00ff",
137
       "\u0100"-"\u1fff",
137
       "\u0100"-"\u1fff",
138
       "\u3040"-"\u318f",
138
       "\u3040"-"\u318f",
139
       "\u3300"-"\u337f",
139
       "\u3300"-"\u337f",
140
       "\u3400"-"\u3d2d",
140
       "\u3400"-"\u3d2d",
141
       "\u4e00"-"\u9fff",
141
       "\u4e00"-"\u9fff",
142
       "\uf900"-"\ufaff"
142
       "\uf900"-"\ufaff"
143
      ]
143
      ]
144
  >
144
  >
145
|
145
|
146
  < #DIGIT:
146
  < #DIGIT:
147
      [
147
      [
148
       "\u0030"-"\u0039",
148
       "\u0030"-"\u0039",
149
       "\u0660"-"\u0669",
149
       "\u0660"-"\u0669",
150
       "\u06f0"-"\u06f9",
150
       "\u06f0"-"\u06f9",
151
       "\u0966"-"\u096f",
151
       "\u0966"-"\u096f",
152
       "\u09e6"-"\u09ef",
152
       "\u09e6"-"\u09ef",
153
       "\u0a66"-"\u0a6f",
153
       "\u0a66"-"\u0a6f",
154
       "\u0ae6"-"\u0aef",
154
       "\u0ae6"-"\u0aef",
155
       "\u0b66"-"\u0b6f",
155
       "\u0b66"-"\u0b6f",
156
       "\u0be7"-"\u0bef",
156
       "\u0be7"-"\u0bef",
157
       "\u0c66"-"\u0c6f",
157
       "\u0c66"-"\u0c6f",
158
       "\u0ce6"-"\u0cef",
158
       "\u0ce6"-"\u0cef",
159
       "\u0d66"-"\u0d6f",
159
       "\u0d66"-"\u0d6f",
160
       "\u0e50"-"\u0e59",
160
       "\u0e50"-"\u0e59",
161
       "\u0ed0"-"\u0ed9",
161
       "\u0ed0"-"\u0ed9",
162
       "\u1040"-"\u1049"
162
       "\u1040"-"\u1049"
163
      ]
163
      ]
164
  >
164
  >
165
}
165
}
166
166
167
ASTExpression Expression() : {}
167
ASTExpression Expression() : {}
168
{
168
{
169
        (LOOKAHEAD("?") ChoiceExpression() | OrExpression()) { return jjtThis; }
169
        (LOOKAHEAD(OrExpression() <COND>) ChoiceExpression() | OrExpression()) { return jjtThis; }
170
}
170
}
171
171
172
void OrExpression() #OrExpression(>1) : 
172
void OrExpression() #OrExpression(>1) : 
173
{
173
{
174
        Token t;
174
        Token t;
175
}
175
}
176
{
176
{
177
        AndExpression() ((t = <OR1> | t = <OR2>) { jjtThis.addOperatorToken(t); }
177
        AndExpression() ((t = <OR1> | t = <OR2>) { jjtThis.addOperatorToken(t); }
178
        AndExpression())*
178
        AndExpression())*
179
}
179
}
180
180
181
void AndExpression() #AndExpression(>1) : 
181
void AndExpression() #AndExpression(>1) : 
182
{
182
{
183
        Token t;
183
        Token t;
184
}
184
}
185
{
185
{
186
        EqualityExpression() ((t = <AND1> | t = <AND2>) { jjtThis.addOperatorToken(t); }
186
        EqualityExpression() ((t = <AND1> | t = <AND2>) { jjtThis.addOperatorToken(t); }
187
        EqualityExpression())*        
187
        EqualityExpression())*        
188
}
188
}
189
189
190
void EqualityExpression() #EqualityExpression(>1) : 
190
void EqualityExpression() #EqualityExpression(>1) : 
191
{
191
{
192
        Token t;
192
        Token t;
193
}
193
}
194
{
194
{
195
        RelationalExpression() 
195
        RelationalExpression() 
196
        ((t = <EQ1> | t = <EQ2> | t = <NEQ1> | t = <NEQ2>) { jjtThis.addOperatorToken(t); }
196
        ((t = <EQ1> | t = <EQ2> | t = <NEQ1> | t = <NEQ2>) { jjtThis.addOperatorToken(t); }
197
        RelationalExpression())*
197
        RelationalExpression())*
198
}
198
}
199
199
200
void RelationalExpression() #RelationalExpression(>1) :
200
void RelationalExpression() #RelationalExpression(>1) :
201
{
201
{
202
        Token t;
202
        Token t;
203
}
203
}
204
{
204
{
205
        AddExpression() 
205
        AddExpression() 
206
        (
206
        (
207
                (t = <LT1> | t = <LT2> | t = <GT1> | t = <GT2> | t = <GE1> | t = <GE2> | t = <LE1> | t = <LE2>)  { jjtThis.addOperatorToken(t); }
207
                (t = <LT1> | t = <LT2> | t = <GT1> | t = <GT2> | t = <GE1> | t = <GE2> | t = <LE1> | t = <LE2>)  { jjtThis.addOperatorToken(t); }
208
                AddExpression()
208
                AddExpression()
209
        )*
209
        )*
210
}
210
}
211
211
212
void AddExpression() #AddExpression(>1) : 
212
void AddExpression() #AddExpression(>1) : 
213
{
213
{
214
        Token t;
214
        Token t;
215
}
215
}
216
{
216
{
217
        MultiplyExpression() ((t = <PLUS> | t = <MINUS>) { jjtThis.addOperatorToken(t); }
217
        MultiplyExpression() ((t = <PLUS> | t = <MINUS>) { jjtThis.addOperatorToken(t); }
218
        MultiplyExpression())*
218
        MultiplyExpression())*
219
}
219
}
220
220
221
void MultiplyExpression() #MultiplyExpression(>1) : 
221
void MultiplyExpression() #MultiplyExpression(>1) : 
222
{
222
{
223
        Token t;
223
        Token t;
224
}
224
}
225
{
225
{
226
        UnaryExpression() (
226
        UnaryExpression() (
227
                ( t = <MULTIPLY> | t = <DIVIDE1> | t = <DIVIDE2> | t = <MODULUS1> | t = <MODULUS2>) { jjtThis.addOperatorToken(t); }
227
                ( t = <MULTIPLY> | t = <DIVIDE1> | t = <DIVIDE2> | t = <MODULUS1> | t = <MODULUS2>) { jjtThis.addOperatorToken(t); }
228
                UnaryExpression()        
228
                UnaryExpression()        
229
        )*
229
        )*
230
}
230
}
231
231
232
void ChoiceExpression() : {}
232
void ChoiceExpression() : {}
233
{
233
{
234
        OrExpression() <COND> OrExpression() <COLON> OrExpression()
234
        OrExpression() <COND> Expression() <COLON> Expression()
235
}
235
}
236
236
237
void UnaryExpression() : {}
237
void UnaryExpression() : {}
238
{
238
{
239
        ((<NOT1> | <NOT2> | <MINUS> | <EMPTY>) UnaryExpression())
239
        ((<NOT1> | <NOT2> | <MINUS> | <EMPTY>) UnaryExpression())
240
        | Value()
240
        | Value()
241
        
241
        
242
}
242
}
243
243
244
void Value() : {}
244
void Value() : {}
245
{
245
{
246
        ValuePrefix() (ValueSuffix())*
246
        ValuePrefix() (ValueSuffix())*
247
}
247
}
248
248
249
void ValuePrefix() : {}
249
void ValuePrefix() : {}
250
{
250
{
251
    Literal() | (<LPAREN> Expression() <RPAREN>) | LOOKAHEAD(3) FunctionInvocation() | <IDENTIFIER> 
251
    Literal() | (<LPAREN> Expression() <RPAREN>)
252
}
252
    | LOOKAHEAD(<IDENTIFIER> (<LPAREN> | <COLON> <IDENTIFIER> <LPAREN>)) FunctionInvocation() | <IDENTIFIER> 
253
253
}
254
void ValueSuffix() : 
254
255
{
255
void ValueSuffix() : 
256
        Token t = null;
256
{
257
}
257
        Token t = null;
258
{
258
}
259
        (<DOT> (t = <IDENTIFIER>)?) { jjtThis.setPropertyNameToken(t); }
259
{
260
        | (<LBRACKET> Expression() <RBRACKET>)
260
        (<DOT> (t = <IDENTIFIER>)?) { jjtThis.setPropertyNameToken(t); }
261
}
261
        | (<LBRACKET> Expression() <RBRACKET>)
262
262
}
263
void FunctionInvocation() : 
263
264
{
264
void FunctionInvocation() : 
265
        Token prefix = null, name = null;
265
{
266
}
266
        Token prefix = null, name = null;
267
{
267
}
268
    (prefix = <IDENTIFIER> <COLON>) { jjtThis.setFullFunctionName(prefix.image + ":"); }
268
{
269
        (name = <IDENTIFIER>)? {
269
    (LOOKAHEAD(2) prefix = <IDENTIFIER> <COLON>)?
270
            if(null != prefix && null != name)
270
        (name = <IDENTIFIER>) {
271
                    jjtThis.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
271
            if(null != prefix && null != name)
272
            else if(null != name)
272
                    jjtThis.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
273
                    jjtThis.setFullFunctionName(name.image);
273
            else if(null != name)
274
        }
274
                    jjtThis.setFullFunctionName(name.image);
275
        (<LPAREN> Expression() (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )?
275
        }
276
}
276
        (<LPAREN> Expression() (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )
277
277
}
278
void Literal() : {}
278
279
{
279
void Literal() : {}
280
        <TRUE> | <FALSE> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <NULL>
280
{
281
}
281
        <TRUE> | <FALSE> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <NULL>
282
}

Return to bug 221055