| 30 | * CompositeExpression Allow most flexible parsing, restrict by examining type of returned node |
| 31 | */ |
| 32 | final public AstCompositeExpression CompositeExpression() |
| 33 | throws ParseException {/* @bgen(jjtree) CompositeExpression */ |
| 34 | AstCompositeExpression jjtn000 = new AstCompositeExpression(JJTCOMPOSITEEXPRESSION); |
| 35 | boolean jjtc000 = true; |
| 36 | jjtree.openNodeScope(jjtn000); |
| 37 | try { |
| 38 | label_1: |
| 39 | while (true) { |
| 40 | switch ((jj_ntk == -1) ? jj_ntk_f() : jj_ntk) { |
| 41 | case LITERAL_EXPRESSION: |
| 42 | case START_DYNAMIC_EXPRESSION: |
| 43 | case START_DEFERRED_EXPRESSION: { |
| 44 | ; |
| 45 | break; |
| 46 | } |
| 47 | default: |
| 48 | jj_la1[0] = jj_gen; |
| 49 | break label_1; |
| 50 | } |
| 51 | switch ((jj_ntk == -1) ? jj_ntk_f() : jj_ntk) { |
| 52 | case START_DEFERRED_EXPRESSION: { |
| 53 | DeferredExpression(); |
| 54 | break; |
| 55 | } |
| 56 | case START_DYNAMIC_EXPRESSION: { |
| 57 | DynamicExpression(); |
| 58 | break; |
| 59 | } |
| 60 | case LITERAL_EXPRESSION: { |
| 61 | LiteralExpression(); |
| 62 | break; |
| 63 | } |
| 64 | default: |
| 65 | jj_la1[1] = jj_gen; |
| 66 | jj_consume_token(-1); |
| 67 | throw new ParseException(); |
| 68 | } |
| 69 | } |
| 70 | jj_consume_token(0); |
| 71 | jjtree.closeNodeScope(jjtn000, true); |
| 72 | jjtc000 = false; |
| 73 | { |
| 74 | if ("" != null) { |
| 75 | return jjtn000; |
| 76 | } |
| 77 | } |
| 78 | } catch (Throwable jjte000) { |
| 79 | if (jjtc000) { |
| 80 | jjtree.clearNodeScope(jjtn000); |
| 81 | jjtc000 = false; |
| 82 | } else { |
| 83 | jjtree.popNode(); |
| 84 | } |
| 85 | if (jjte000 instanceof RuntimeException) { |
| 86 | { |
| 87 | if (true) { |
| 88 | throw (RuntimeException) jjte000; |
| 89 | } |