diff --git a/cobol-parser/pom.xml b/cobol-parser/pom.xml
index 16d22845..8e65ff85 100644
--- a/cobol-parser/pom.xml
+++ b/cobol-parser/pom.xml
@@ -34,7 +34,7 @@
org.antlr
antlr4-runtime
- 4.8
+ 4.9.3
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookLexer.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookLexer.java
index e0fce173..84b735c4 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookLexer.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookLexer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from copybookLexer.g4 by ANTLR 4.8
+// Generated from copybookLexer.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.g4 b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.g4
index 61a677b8..fec00ec6 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.g4
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.g4
@@ -50,6 +50,22 @@ booleanLiteral
identifier:
IDENTIFIER | THRU_OR_THROUGH | A_S | P_S | P_NS | X_S | | N_S | S_S | S_NS | Z_S | Z_NS | V_S | V_NS
| SINGLE_QUOTED_IDENTIFIER // is this valid?
+ | SIGN | LEADING | TRAILING | SEPARATE | CHARACTER
+ | ASCENDING | DESCENDING | KEY
+ | BINARY | DISPLAY | PACKED_DECIMAL
+ | COMPUTATIONAL | COMPUTATIONAL_0 | COMPUTATIONAL_1 | COMPUTATIONAL_2 | COMPUTATIONAL_3 | COMPUTATIONAL_3U | COMPUTATIONAL_4 | COMPUTATIONAL_5 | COMPUTATIONAL_9
+ | COMP | COMP_0 | COMP_1 | COMP_2 | COMP_3 | COMP_3U | COMP_4 | COMP_5 | COMP_9
+ | REDEFINES | RENAMES
+ | VALUE | VALUES
+ | OCCURS | TIMES | DEPENDING | INDEXED
+ | BLANK | ZERO | ZEROS | ZEROES | SPACE | SPACES
+ | HIGH_VALUE | HIGH_VALUES | LOW_VALUE | LOW_VALUES
+ | NULL | NULLS | QUOTE | QUOTES
+ | JUSTIFIED | JUST | RIGHT
+ | PICTURE | PIC
+ | TRUE | FALSE
+ | ARE | IS | ON | BY | WHEN | TO | ALL
+ | USAGE | FROM
;
thru:
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.java
index e03e6867..fb13b4d4 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from copybookParser.g4 by ANTLR 4.8
+// Generated from copybookParser.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
@@ -504,6 +504,73 @@ public static class IdentifierContext extends ParserRuleContext {
public TerminalNode V_S() { return getToken(copybookParser.V_S, 0); }
public TerminalNode V_NS() { return getToken(copybookParser.V_NS, 0); }
public TerminalNode SINGLE_QUOTED_IDENTIFIER() { return getToken(copybookParser.SINGLE_QUOTED_IDENTIFIER, 0); }
+ public TerminalNode SIGN() { return getToken(copybookParser.SIGN, 0); }
+ public TerminalNode LEADING() { return getToken(copybookParser.LEADING, 0); }
+ public TerminalNode TRAILING() { return getToken(copybookParser.TRAILING, 0); }
+ public TerminalNode SEPARATE() { return getToken(copybookParser.SEPARATE, 0); }
+ public TerminalNode CHARACTER() { return getToken(copybookParser.CHARACTER, 0); }
+ public TerminalNode ASCENDING() { return getToken(copybookParser.ASCENDING, 0); }
+ public TerminalNode DESCENDING() { return getToken(copybookParser.DESCENDING, 0); }
+ public TerminalNode KEY() { return getToken(copybookParser.KEY, 0); }
+ public TerminalNode BINARY() { return getToken(copybookParser.BINARY, 0); }
+ public TerminalNode DISPLAY() { return getToken(copybookParser.DISPLAY, 0); }
+ public TerminalNode PACKED_DECIMAL() { return getToken(copybookParser.PACKED_DECIMAL, 0); }
+ public TerminalNode COMPUTATIONAL() { return getToken(copybookParser.COMPUTATIONAL, 0); }
+ public TerminalNode COMPUTATIONAL_0() { return getToken(copybookParser.COMPUTATIONAL_0, 0); }
+ public TerminalNode COMPUTATIONAL_1() { return getToken(copybookParser.COMPUTATIONAL_1, 0); }
+ public TerminalNode COMPUTATIONAL_2() { return getToken(copybookParser.COMPUTATIONAL_2, 0); }
+ public TerminalNode COMPUTATIONAL_3() { return getToken(copybookParser.COMPUTATIONAL_3, 0); }
+ public TerminalNode COMPUTATIONAL_3U() { return getToken(copybookParser.COMPUTATIONAL_3U, 0); }
+ public TerminalNode COMPUTATIONAL_4() { return getToken(copybookParser.COMPUTATIONAL_4, 0); }
+ public TerminalNode COMPUTATIONAL_5() { return getToken(copybookParser.COMPUTATIONAL_5, 0); }
+ public TerminalNode COMPUTATIONAL_9() { return getToken(copybookParser.COMPUTATIONAL_9, 0); }
+ public TerminalNode COMP() { return getToken(copybookParser.COMP, 0); }
+ public TerminalNode COMP_0() { return getToken(copybookParser.COMP_0, 0); }
+ public TerminalNode COMP_1() { return getToken(copybookParser.COMP_1, 0); }
+ public TerminalNode COMP_2() { return getToken(copybookParser.COMP_2, 0); }
+ public TerminalNode COMP_3() { return getToken(copybookParser.COMP_3, 0); }
+ public TerminalNode COMP_3U() { return getToken(copybookParser.COMP_3U, 0); }
+ public TerminalNode COMP_4() { return getToken(copybookParser.COMP_4, 0); }
+ public TerminalNode COMP_5() { return getToken(copybookParser.COMP_5, 0); }
+ public TerminalNode COMP_9() { return getToken(copybookParser.COMP_9, 0); }
+ public TerminalNode REDEFINES() { return getToken(copybookParser.REDEFINES, 0); }
+ public TerminalNode RENAMES() { return getToken(copybookParser.RENAMES, 0); }
+ public TerminalNode VALUE() { return getToken(copybookParser.VALUE, 0); }
+ public TerminalNode VALUES() { return getToken(copybookParser.VALUES, 0); }
+ public TerminalNode OCCURS() { return getToken(copybookParser.OCCURS, 0); }
+ public TerminalNode TIMES() { return getToken(copybookParser.TIMES, 0); }
+ public TerminalNode DEPENDING() { return getToken(copybookParser.DEPENDING, 0); }
+ public TerminalNode INDEXED() { return getToken(copybookParser.INDEXED, 0); }
+ public TerminalNode BLANK() { return getToken(copybookParser.BLANK, 0); }
+ public TerminalNode ZERO() { return getToken(copybookParser.ZERO, 0); }
+ public TerminalNode ZEROS() { return getToken(copybookParser.ZEROS, 0); }
+ public TerminalNode ZEROES() { return getToken(copybookParser.ZEROES, 0); }
+ public TerminalNode SPACE() { return getToken(copybookParser.SPACE, 0); }
+ public TerminalNode SPACES() { return getToken(copybookParser.SPACES, 0); }
+ public TerminalNode HIGH_VALUE() { return getToken(copybookParser.HIGH_VALUE, 0); }
+ public TerminalNode HIGH_VALUES() { return getToken(copybookParser.HIGH_VALUES, 0); }
+ public TerminalNode LOW_VALUE() { return getToken(copybookParser.LOW_VALUE, 0); }
+ public TerminalNode LOW_VALUES() { return getToken(copybookParser.LOW_VALUES, 0); }
+ public TerminalNode NULL() { return getToken(copybookParser.NULL, 0); }
+ public TerminalNode NULLS() { return getToken(copybookParser.NULLS, 0); }
+ public TerminalNode QUOTE() { return getToken(copybookParser.QUOTE, 0); }
+ public TerminalNode QUOTES() { return getToken(copybookParser.QUOTES, 0); }
+ public TerminalNode JUSTIFIED() { return getToken(copybookParser.JUSTIFIED, 0); }
+ public TerminalNode JUST() { return getToken(copybookParser.JUST, 0); }
+ public TerminalNode RIGHT() { return getToken(copybookParser.RIGHT, 0); }
+ public TerminalNode PICTURE() { return getToken(copybookParser.PICTURE, 0); }
+ public TerminalNode PIC() { return getToken(copybookParser.PIC, 0); }
+ public TerminalNode TRUE() { return getToken(copybookParser.TRUE, 0); }
+ public TerminalNode FALSE() { return getToken(copybookParser.FALSE, 0); }
+ public TerminalNode ARE() { return getToken(copybookParser.ARE, 0); }
+ public TerminalNode IS() { return getToken(copybookParser.IS, 0); }
+ public TerminalNode ON() { return getToken(copybookParser.ON, 0); }
+ public TerminalNode BY() { return getToken(copybookParser.BY, 0); }
+ public TerminalNode WHEN() { return getToken(copybookParser.WHEN, 0); }
+ public TerminalNode TO() { return getToken(copybookParser.TO, 0); }
+ public TerminalNode ALL() { return getToken(copybookParser.ALL, 0); }
+ public TerminalNode USAGE() { return getToken(copybookParser.USAGE, 0); }
+ public TerminalNode FROM() { return getToken(copybookParser.FROM, 0); }
public IdentifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -519,7 +586,7 @@ public final IdentifierContext identifier() throws RecognitionException {
IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
enterRule(_localctx, 10, RULE_identifier);
try {
- setState(128);
+ setState(195);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
case 1:
@@ -625,6 +692,475 @@ public final IdentifierContext identifier() throws RecognitionException {
match(SINGLE_QUOTED_IDENTIFIER);
}
break;
+ case 16:
+ enterOuterAlt(_localctx, 16);
+ {
+ setState(128);
+ match(SIGN);
+ }
+ break;
+ case 17:
+ enterOuterAlt(_localctx, 17);
+ {
+ setState(129);
+ match(LEADING);
+ }
+ break;
+ case 18:
+ enterOuterAlt(_localctx, 18);
+ {
+ setState(130);
+ match(TRAILING);
+ }
+ break;
+ case 19:
+ enterOuterAlt(_localctx, 19);
+ {
+ setState(131);
+ match(SEPARATE);
+ }
+ break;
+ case 20:
+ enterOuterAlt(_localctx, 20);
+ {
+ setState(132);
+ match(CHARACTER);
+ }
+ break;
+ case 21:
+ enterOuterAlt(_localctx, 21);
+ {
+ setState(133);
+ match(ASCENDING);
+ }
+ break;
+ case 22:
+ enterOuterAlt(_localctx, 22);
+ {
+ setState(134);
+ match(DESCENDING);
+ }
+ break;
+ case 23:
+ enterOuterAlt(_localctx, 23);
+ {
+ setState(135);
+ match(KEY);
+ }
+ break;
+ case 24:
+ enterOuterAlt(_localctx, 24);
+ {
+ setState(136);
+ match(BINARY);
+ }
+ break;
+ case 25:
+ enterOuterAlt(_localctx, 25);
+ {
+ setState(137);
+ match(DISPLAY);
+ }
+ break;
+ case 26:
+ enterOuterAlt(_localctx, 26);
+ {
+ setState(138);
+ match(PACKED_DECIMAL);
+ }
+ break;
+ case 27:
+ enterOuterAlt(_localctx, 27);
+ {
+ setState(139);
+ match(COMPUTATIONAL);
+ }
+ break;
+ case 28:
+ enterOuterAlt(_localctx, 28);
+ {
+ setState(140);
+ match(COMPUTATIONAL_0);
+ }
+ break;
+ case 29:
+ enterOuterAlt(_localctx, 29);
+ {
+ setState(141);
+ match(COMPUTATIONAL_1);
+ }
+ break;
+ case 30:
+ enterOuterAlt(_localctx, 30);
+ {
+ setState(142);
+ match(COMPUTATIONAL_2);
+ }
+ break;
+ case 31:
+ enterOuterAlt(_localctx, 31);
+ {
+ setState(143);
+ match(COMPUTATIONAL_3);
+ }
+ break;
+ case 32:
+ enterOuterAlt(_localctx, 32);
+ {
+ setState(144);
+ match(COMPUTATIONAL_3U);
+ }
+ break;
+ case 33:
+ enterOuterAlt(_localctx, 33);
+ {
+ setState(145);
+ match(COMPUTATIONAL_4);
+ }
+ break;
+ case 34:
+ enterOuterAlt(_localctx, 34);
+ {
+ setState(146);
+ match(COMPUTATIONAL_5);
+ }
+ break;
+ case 35:
+ enterOuterAlt(_localctx, 35);
+ {
+ setState(147);
+ match(COMPUTATIONAL_9);
+ }
+ break;
+ case 36:
+ enterOuterAlt(_localctx, 36);
+ {
+ setState(148);
+ match(COMP);
+ }
+ break;
+ case 37:
+ enterOuterAlt(_localctx, 37);
+ {
+ setState(149);
+ match(COMP_0);
+ }
+ break;
+ case 38:
+ enterOuterAlt(_localctx, 38);
+ {
+ setState(150);
+ match(COMP_1);
+ }
+ break;
+ case 39:
+ enterOuterAlt(_localctx, 39);
+ {
+ setState(151);
+ match(COMP_2);
+ }
+ break;
+ case 40:
+ enterOuterAlt(_localctx, 40);
+ {
+ setState(152);
+ match(COMP_3);
+ }
+ break;
+ case 41:
+ enterOuterAlt(_localctx, 41);
+ {
+ setState(153);
+ match(COMP_3U);
+ }
+ break;
+ case 42:
+ enterOuterAlt(_localctx, 42);
+ {
+ setState(154);
+ match(COMP_4);
+ }
+ break;
+ case 43:
+ enterOuterAlt(_localctx, 43);
+ {
+ setState(155);
+ match(COMP_5);
+ }
+ break;
+ case 44:
+ enterOuterAlt(_localctx, 44);
+ {
+ setState(156);
+ match(COMP_9);
+ }
+ break;
+ case 45:
+ enterOuterAlt(_localctx, 45);
+ {
+ setState(157);
+ match(REDEFINES);
+ }
+ break;
+ case 46:
+ enterOuterAlt(_localctx, 46);
+ {
+ setState(158);
+ match(RENAMES);
+ }
+ break;
+ case 47:
+ enterOuterAlt(_localctx, 47);
+ {
+ setState(159);
+ match(VALUE);
+ }
+ break;
+ case 48:
+ enterOuterAlt(_localctx, 48);
+ {
+ setState(160);
+ match(VALUES);
+ }
+ break;
+ case 49:
+ enterOuterAlt(_localctx, 49);
+ {
+ setState(161);
+ match(OCCURS);
+ }
+ break;
+ case 50:
+ enterOuterAlt(_localctx, 50);
+ {
+ setState(162);
+ match(TIMES);
+ }
+ break;
+ case 51:
+ enterOuterAlt(_localctx, 51);
+ {
+ setState(163);
+ match(DEPENDING);
+ }
+ break;
+ case 52:
+ enterOuterAlt(_localctx, 52);
+ {
+ setState(164);
+ match(INDEXED);
+ }
+ break;
+ case 53:
+ enterOuterAlt(_localctx, 53);
+ {
+ setState(165);
+ match(BLANK);
+ }
+ break;
+ case 54:
+ enterOuterAlt(_localctx, 54);
+ {
+ setState(166);
+ match(ZERO);
+ }
+ break;
+ case 55:
+ enterOuterAlt(_localctx, 55);
+ {
+ setState(167);
+ match(ZEROS);
+ }
+ break;
+ case 56:
+ enterOuterAlt(_localctx, 56);
+ {
+ setState(168);
+ match(ZEROES);
+ }
+ break;
+ case 57:
+ enterOuterAlt(_localctx, 57);
+ {
+ setState(169);
+ match(SPACE);
+ }
+ break;
+ case 58:
+ enterOuterAlt(_localctx, 58);
+ {
+ setState(170);
+ match(SPACES);
+ }
+ break;
+ case 59:
+ enterOuterAlt(_localctx, 59);
+ {
+ setState(171);
+ match(HIGH_VALUE);
+ }
+ break;
+ case 60:
+ enterOuterAlt(_localctx, 60);
+ {
+ setState(172);
+ match(HIGH_VALUES);
+ }
+ break;
+ case 61:
+ enterOuterAlt(_localctx, 61);
+ {
+ setState(173);
+ match(LOW_VALUE);
+ }
+ break;
+ case 62:
+ enterOuterAlt(_localctx, 62);
+ {
+ setState(174);
+ match(LOW_VALUES);
+ }
+ break;
+ case 63:
+ enterOuterAlt(_localctx, 63);
+ {
+ setState(175);
+ match(NULL);
+ }
+ break;
+ case 64:
+ enterOuterAlt(_localctx, 64);
+ {
+ setState(176);
+ match(NULLS);
+ }
+ break;
+ case 65:
+ enterOuterAlt(_localctx, 65);
+ {
+ setState(177);
+ match(QUOTE);
+ }
+ break;
+ case 66:
+ enterOuterAlt(_localctx, 66);
+ {
+ setState(178);
+ match(QUOTES);
+ }
+ break;
+ case 67:
+ enterOuterAlt(_localctx, 67);
+ {
+ setState(179);
+ match(JUSTIFIED);
+ }
+ break;
+ case 68:
+ enterOuterAlt(_localctx, 68);
+ {
+ setState(180);
+ match(JUST);
+ }
+ break;
+ case 69:
+ enterOuterAlt(_localctx, 69);
+ {
+ setState(181);
+ match(RIGHT);
+ }
+ break;
+ case 70:
+ enterOuterAlt(_localctx, 70);
+ {
+ setState(182);
+ match(PICTURE);
+ }
+ break;
+ case 71:
+ enterOuterAlt(_localctx, 71);
+ {
+ setState(183);
+ match(PIC);
+ }
+ break;
+ case 72:
+ enterOuterAlt(_localctx, 72);
+ {
+ setState(184);
+ match(TRUE);
+ }
+ break;
+ case 73:
+ enterOuterAlt(_localctx, 73);
+ {
+ setState(185);
+ match(FALSE);
+ }
+ break;
+ case 74:
+ enterOuterAlt(_localctx, 74);
+ {
+ setState(186);
+ match(ARE);
+ }
+ break;
+ case 75:
+ enterOuterAlt(_localctx, 75);
+ {
+ setState(187);
+ match(IS);
+ }
+ break;
+ case 76:
+ enterOuterAlt(_localctx, 76);
+ {
+ setState(188);
+ match(ON);
+ }
+ break;
+ case 77:
+ enterOuterAlt(_localctx, 77);
+ {
+ setState(189);
+ match(BY);
+ }
+ break;
+ case 78:
+ enterOuterAlt(_localctx, 78);
+ {
+ setState(190);
+ match(WHEN);
+ }
+ break;
+ case 79:
+ enterOuterAlt(_localctx, 79);
+ {
+ setState(191);
+ match(TO);
+ }
+ break;
+ case 80:
+ enterOuterAlt(_localctx, 80);
+ {
+ setState(192);
+ match(ALL);
+ }
+ break;
+ case 81:
+ enterOuterAlt(_localctx, 81);
+ {
+ setState(193);
+ match(USAGE);
+ }
+ break;
+ case 82:
+ enterOuterAlt(_localctx, 82);
+ {
+ setState(194);
+ match(FROM);
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -657,7 +1193,7 @@ public final ThruContext thru() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(130);
+ setState(197);
match(THRU_OR_THROUGH);
}
}
@@ -705,19 +1241,19 @@ public final ValuesContext values() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(140);
+ setState(207);
_errHandler.sync(this);
switch (_input.LA(1)) {
case VALUE:
{
- setState(132);
+ setState(199);
match(VALUE);
- setState(134);
+ setState(201);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IS) {
{
- setState(133);
+ setState(200);
match(IS);
}
}
@@ -726,14 +1262,14 @@ public final ValuesContext values() throws RecognitionException {
break;
case VALUES:
{
- setState(136);
+ setState(203);
match(VALUES);
- setState(138);
+ setState(205);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ARE) {
{
- setState(137);
+ setState(204);
match(ARE);
}
}
@@ -743,29 +1279,29 @@ public final ValuesContext values() throws RecognitionException {
default:
throw new NoViableAltException(this);
}
- setState(142);
+ setState(209);
valuesFromTo();
- setState(149);
+ setState(216);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ALL) | (1L << FALSE) | (1L << HIGH_VALUE) | (1L << HIGH_VALUES) | (1L << LOW_VALUE) | (1L << LOW_VALUES) | (1L << NULL) | (1L << NULLS) | (1L << QUOTE) | (1L << QUOTES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (SPACE - 65)) | (1L << (SPACES - 65)) | (1L << (TRUE - 65)) | (1L << (ZERO - 65)) | (1L << (ZEROS - 65)) | (1L << (ZEROES - 65)) | (1L << (COMMACHAR - 65)) | (1L << (MINUSCHAR - 65)) | (1L << (PLUSCHAR - 65)) | (1L << (NINES - 65)) | (1L << (STRINGLITERAL - 65)) | (1L << (LEVEL_ROOT - 65)) | (1L << (LEVEL_REGULAR - 65)) | (1L << (LEVEL_NUMBER_66 - 65)) | (1L << (LEVEL_NUMBER_77 - 65)))) != 0) || ((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (LEVEL_NUMBER_88 - 129)) | (1L << (INTEGERLITERAL - 129)) | (1L << (NUMERICLITERAL - 129)))) != 0)) {
{
{
- setState(144);
+ setState(211);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==COMMACHAR) {
{
- setState(143);
+ setState(210);
match(COMMACHAR);
}
}
- setState(146);
+ setState(213);
valuesFromTo();
}
}
- setState(151);
+ setState(218);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -807,14 +1343,14 @@ public final ValuesFromToContext valuesFromTo() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(152);
+ setState(219);
valuesFrom();
- setState(154);
+ setState(221);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==THRU_OR_THROUGH) {
{
- setState(153);
+ setState(220);
valuesTo();
}
}
@@ -853,7 +1389,7 @@ public final ValuesFromContext valuesFrom() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(156);
+ setState(223);
literal();
}
}
@@ -892,9 +1428,9 @@ public final ValuesToContext valuesTo() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(158);
+ setState(225);
thru();
- setState(159);
+ setState(226);
literal();
}
}
@@ -942,106 +1478,106 @@ public final SpecialValuesContext specialValues() throws RecognitionException {
SpecialValuesContext _localctx = new SpecialValuesContext(_ctx, getState());
enterRule(_localctx, 22, RULE_specialValues);
try {
- setState(176);
+ setState(243);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ALL:
enterOuterAlt(_localctx, 1);
{
- setState(161);
+ setState(228);
match(ALL);
- setState(162);
+ setState(229);
literal();
}
break;
case HIGH_VALUE:
enterOuterAlt(_localctx, 2);
{
- setState(163);
+ setState(230);
match(HIGH_VALUE);
}
break;
case HIGH_VALUES:
enterOuterAlt(_localctx, 3);
{
- setState(164);
+ setState(231);
match(HIGH_VALUES);
}
break;
case LOW_VALUE:
enterOuterAlt(_localctx, 4);
{
- setState(165);
+ setState(232);
match(LOW_VALUE);
}
break;
case LOW_VALUES:
enterOuterAlt(_localctx, 5);
{
- setState(166);
+ setState(233);
match(LOW_VALUES);
}
break;
case NULL:
enterOuterAlt(_localctx, 6);
{
- setState(167);
+ setState(234);
match(NULL);
}
break;
case NULLS:
enterOuterAlt(_localctx, 7);
{
- setState(168);
+ setState(235);
match(NULLS);
}
break;
case QUOTE:
enterOuterAlt(_localctx, 8);
{
- setState(169);
+ setState(236);
match(QUOTE);
}
break;
case QUOTES:
enterOuterAlt(_localctx, 9);
{
- setState(170);
+ setState(237);
match(QUOTES);
}
break;
case SPACE:
enterOuterAlt(_localctx, 10);
{
- setState(171);
+ setState(238);
match(SPACE);
}
break;
case SPACES:
enterOuterAlt(_localctx, 11);
{
- setState(172);
+ setState(239);
match(SPACES);
}
break;
case ZERO:
enterOuterAlt(_localctx, 12);
{
- setState(173);
+ setState(240);
match(ZERO);
}
break;
case ZEROS:
enterOuterAlt(_localctx, 13);
{
- setState(174);
+ setState(241);
match(ZEROS);
}
break;
case ZEROES:
enterOuterAlt(_localctx, 14);
{
- setState(175);
+ setState(242);
match(ZEROES);
}
break;
@@ -1086,7 +1622,7 @@ public final SortsContext sorts() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(178);
+ setState(245);
_la = _input.LA(1);
if ( !(_la==ASCENDING || _la==DESCENDING) ) {
_errHandler.recoverInline(this);
@@ -1096,27 +1632,27 @@ public final SortsContext sorts() throws RecognitionException {
_errHandler.reportMatch(this);
consume();
}
- setState(180);
+ setState(247);
_errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==KEY) {
+ switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
+ case 1:
{
- setState(179);
+ setState(246);
match(KEY);
}
+ break;
}
-
- setState(183);
+ setState(250);
_errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==IS) {
+ switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
+ case 1:
{
- setState(182);
+ setState(249);
match(IS);
}
+ break;
}
-
- setState(185);
+ setState(252);
identifier();
}
}
@@ -1153,9 +1689,9 @@ public final OccursToContext occursTo() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(187);
+ setState(254);
match(TO);
- setState(188);
+ setState(255);
integerLiteral();
}
}
@@ -1190,23 +1726,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final DependingOnContext dependingOn() throws RecognitionException {
DependingOnContext _localctx = new DependingOnContext(_ctx, getState());
enterRule(_localctx, 28, RULE_dependingOn);
- int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(190);
+ setState(257);
match(DEPENDING);
- setState(192);
+ setState(259);
_errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==ON) {
+ switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+ case 1:
{
- setState(191);
+ setState(258);
match(ON);
}
+ break;
}
-
- setState(194);
+ setState(261);
identifier();
}
}
@@ -1253,41 +1788,41 @@ public final IndexedByContext indexedBy() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(196);
+ setState(263);
match(INDEXED);
- setState(198);
+ setState(265);
_errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==BY) {
+ switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
+ case 1:
{
- setState(197);
+ setState(264);
match(BY);
}
+ break;
}
-
- setState(200);
+ setState(267);
identifier();
- setState(207);
+ setState(274);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMACHAR || _la==IDENTIFIER) {
{
{
- setState(202);
+ setState(269);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==COMMACHAR) {
{
- setState(201);
+ setState(268);
match(COMMACHAR);
}
}
- setState(204);
+ setState(271);
match(IDENTIFIER);
}
}
- setState(209);
+ setState(276);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1340,56 +1875,56 @@ public final OccursContext occurs() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(210);
+ setState(277);
match(OCCURS);
- setState(211);
+ setState(278);
integerLiteral();
- setState(213);
+ setState(280);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==TO) {
{
- setState(212);
+ setState(279);
occursTo();
}
}
- setState(216);
+ setState(283);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==TIMES) {
{
- setState(215);
+ setState(282);
match(TIMES);
}
}
- setState(219);
+ setState(286);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==DEPENDING) {
{
- setState(218);
+ setState(285);
dependingOn();
}
}
- setState(222);
+ setState(289);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ASCENDING || _la==DESCENDING) {
{
- setState(221);
+ setState(288);
sorts();
}
}
- setState(225);
+ setState(292);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==INDEXED) {
{
- setState(224);
+ setState(291);
indexedBy();
}
}
@@ -1429,9 +1964,9 @@ public final RedefinesContext redefines() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(227);
+ setState(294);
match(REDEFINES);
- setState(228);
+ setState(295);
identifier();
}
}
@@ -1475,18 +2010,18 @@ public final RenamesContext renames() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(230);
+ setState(297);
match(RENAMES);
- setState(231);
+ setState(298);
identifier();
- setState(235);
+ setState(302);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==THRU_OR_THROUGH) {
{
- setState(232);
+ setState(299);
thru();
- setState(233);
+ setState(300);
identifier();
}
}
@@ -1544,7 +2079,7 @@ public final UsageLiteralContext usageLiteral() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(237);
+ setState(304);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BINARY) | (1L << COMP) | (1L << COMP_0) | (1L << COMP_1) | (1L << COMP_2) | (1L << COMP_3) | (1L << COMP_3U) | (1L << COMP_4) | (1L << COMP_5) | (1L << COMP_9) | (1L << COMPUTATIONAL) | (1L << COMPUTATIONAL_0) | (1L << COMPUTATIONAL_1) | (1L << COMPUTATIONAL_2) | (1L << COMPUTATIONAL_3) | (1L << COMPUTATIONAL_3U) | (1L << COMPUTATIONAL_4) | (1L << COMPUTATIONAL_5) | (1L << COMPUTATIONAL_9) | (1L << DISPLAY) | (1L << PACKED_DECIMAL))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -1603,7 +2138,7 @@ public final GroupUsageLiteralContext groupUsageLiteral() throws RecognitionExce
try {
enterOuterAlt(_localctx, 1);
{
- setState(239);
+ setState(306);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BINARY) | (1L << COMP) | (1L << COMP_0) | (1L << COMP_3) | (1L << COMP_3U) | (1L << COMP_4) | (1L << COMP_5) | (1L << COMP_9) | (1L << COMPUTATIONAL) | (1L << COMPUTATIONAL_0) | (1L << COMPUTATIONAL_3) | (1L << COMPUTATIONAL_3U) | (1L << COMPUTATIONAL_4) | (1L << COMPUTATIONAL_5) | (1L << COMPUTATIONAL_9) | (1L << DISPLAY) | (1L << PACKED_DECIMAL))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -1650,19 +2185,19 @@ public final UsageContext usage() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(245);
+ setState(312);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==USAGE) {
{
- setState(241);
+ setState(308);
match(USAGE);
- setState(243);
+ setState(310);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IS) {
{
- setState(242);
+ setState(309);
match(IS);
}
}
@@ -1670,7 +2205,7 @@ public final UsageContext usage() throws RecognitionException {
}
}
- setState(247);
+ setState(314);
usageLiteral();
}
}
@@ -1709,19 +2244,19 @@ public final UsageGroupContext usageGroup() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(253);
+ setState(320);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==USAGE) {
{
- setState(249);
+ setState(316);
match(USAGE);
- setState(251);
+ setState(318);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IS) {
{
- setState(250);
+ setState(317);
match(IS);
}
}
@@ -1729,7 +2264,7 @@ public final UsageGroupContext usageGroup() throws RecognitionException {
}
}
- setState(255);
+ setState(322);
groupUsageLiteral();
}
}
@@ -1769,19 +2304,19 @@ public final SeparateSignContext separateSign() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(257);
+ setState(324);
match(SIGN);
- setState(259);
+ setState(326);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IS) {
{
- setState(258);
+ setState(325);
match(IS);
}
}
- setState(261);
+ setState(328);
_la = _input.LA(1);
if ( !(_la==LEADING || _la==TRAILING) ) {
_errHandler.recoverInline(this);
@@ -1791,22 +2326,22 @@ public final SeparateSignContext separateSign() throws RecognitionException {
_errHandler.reportMatch(this);
consume();
}
- setState(263);
+ setState(330);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==SEPARATE) {
{
- setState(262);
+ setState(329);
match(SEPARATE);
}
}
- setState(266);
+ setState(333);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==CHARACTER) {
{
- setState(265);
+ setState(332);
match(CHARACTER);
}
}
@@ -1846,7 +2381,7 @@ public final JustifiedContext justified() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(268);
+ setState(335);
_la = _input.LA(1);
if ( !(_la==JUST || _la==JUSTIFIED) ) {
_errHandler.recoverInline(this);
@@ -1856,12 +2391,12 @@ public final JustifiedContext justified() throws RecognitionException {
_errHandler.reportMatch(this);
consume();
}
- setState(270);
+ setState(337);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==RIGHT) {
{
- setState(269);
+ setState(336);
match(RIGHT);
}
}
@@ -1898,7 +2433,7 @@ public final TermContext term() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(272);
+ setState(339);
match(TERMINAL);
}
}
@@ -1947,14 +2482,14 @@ public final PlusMinusContext plusMinus() throws RecognitionException {
PlusMinusContext _localctx = new PlusMinusContext(_ctx, getState());
enterRule(_localctx, 52, RULE_plusMinus);
try {
- setState(276);
+ setState(343);
_errHandler.sync(this);
switch (_input.LA(1)) {
case PLUSCHAR:
_localctx = new PlusContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(274);
+ setState(341);
match(PLUSCHAR);
}
break;
@@ -1962,7 +2497,7 @@ public final PlusMinusContext plusMinus() throws RecognitionException {
_localctx = new MinusContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(275);
+ setState(342);
match(MINUSCHAR);
}
break;
@@ -2114,14 +2649,14 @@ public final Precision9Context precision9() throws RecognitionException {
Precision9Context _localctx = new Precision9Context(_ctx, getState());
enterRule(_localctx, 54, RULE_precision9);
try {
- setState(291);
+ setState(358);
_errHandler.sync(this);
switch (_input.LA(1)) {
case NINES:
_localctx = new Precision9NinesContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(278);
+ setState(345);
match(NINES);
}
break;
@@ -2129,7 +2664,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9SsContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(279);
+ setState(346);
match(S_S);
}
break;
@@ -2137,7 +2672,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9PsContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(280);
+ setState(347);
match(P_S);
}
break;
@@ -2145,7 +2680,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9ZsContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(281);
+ setState(348);
match(Z_S);
}
break;
@@ -2153,7 +2688,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9VsContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(282);
+ setState(349);
match(V_S);
}
break;
@@ -2161,7 +2696,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9ExplicitDotContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(283);
+ setState(350);
match(PRECISION_9_EXPLICIT_DOT);
}
break;
@@ -2169,7 +2704,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9DecimalScaledContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(284);
+ setState(351);
match(PRECISION_9_DECIMAL_SCALED);
}
break;
@@ -2177,7 +2712,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9DecimalScaledWithVContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(285);
+ setState(352);
match(PRECISION_9_DECIMAL_WITH_V);
}
break;
@@ -2185,7 +2720,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9ScaledContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(286);
+ setState(353);
match(PRECISION_9_SCALED);
}
break;
@@ -2193,7 +2728,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new Precision9ScaledLeadContext(_localctx);
enterOuterAlt(_localctx, 10);
{
- setState(287);
+ setState(354);
match(PRECISION_9_SCALED_LEAD);
}
break;
@@ -2201,7 +2736,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new PrecisionZExplicitDotContext(_localctx);
enterOuterAlt(_localctx, 11);
{
- setState(288);
+ setState(355);
match(PRECISION_Z_EXPLICIT_DOT);
}
break;
@@ -2209,7 +2744,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new PrecisionZDecimalScaledContext(_localctx);
enterOuterAlt(_localctx, 12);
{
- setState(289);
+ setState(356);
match(PRECISION_Z_DECIMAL_SCALED);
}
break;
@@ -2217,7 +2752,7 @@ public final Precision9Context precision9() throws RecognitionException {
_localctx = new PrecisionZScaledContext(_localctx);
enterOuterAlt(_localctx, 13);
{
- setState(290);
+ setState(357);
match(PRECISION_Z_SCALED);
}
break;
@@ -2281,7 +2816,7 @@ public final SignPrecision9Context signPrecision9() throws RecognitionException
enterRule(_localctx, 56, RULE_signPrecision9);
int _la;
try {
- setState(300);
+ setState(367);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
case 1:
@@ -2289,17 +2824,17 @@ public final SignPrecision9Context signPrecision9() throws RecognitionException
enterOuterAlt(_localctx, 1);
{
{
- setState(294);
+ setState(361);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==MINUSCHAR || _la==PLUSCHAR) {
{
- setState(293);
+ setState(360);
plusMinus();
}
}
- setState(296);
+ setState(363);
precision9();
}
}
@@ -2309,9 +2844,9 @@ public final SignPrecision9Context signPrecision9() throws RecognitionException
enterOuterAlt(_localctx, 2);
{
{
- setState(297);
+ setState(364);
precision9();
- setState(298);
+ setState(365);
plusMinus();
}
}
@@ -2350,7 +2885,7 @@ public final AlphaXContext alphaX() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(302);
+ setState(369);
_la = _input.LA(1);
if ( !(_la==X_S || _la==LENGTH_TYPE_X) ) {
_errHandler.recoverInline(this);
@@ -2394,7 +2929,7 @@ public final AlphaNContext alphaN() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(304);
+ setState(371);
_la = _input.LA(1);
if ( !(_la==N_S || _la==LENGTH_TYPE_N) ) {
_errHandler.recoverInline(this);
@@ -2438,7 +2973,7 @@ public final AlphaAContext alphaA() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(306);
+ setState(373);
_la = _input.LA(1);
if ( !(_la==A_S || _la==LENGTH_TYPE_A) ) {
_errHandler.recoverInline(this);
@@ -2482,7 +3017,7 @@ public final PictureLiteralContext pictureLiteral() throws RecognitionException
try {
enterOuterAlt(_localctx, 1);
{
- setState(308);
+ setState(375);
_la = _input.LA(1);
if ( !(_la==PIC || _la==PICTURE) ) {
_errHandler.recoverInline(this);
@@ -2544,35 +3079,35 @@ public final PicContext pic() throws RecognitionException {
enterRule(_localctx, 66, RULE_pic);
int _la;
try {
- setState(340);
+ setState(407);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(310);
+ setState(377);
pictureLiteral();
- setState(324);
+ setState(391);
_errHandler.sync(this);
switch (_input.LA(1)) {
case X_S:
case LENGTH_TYPE_X:
{
- setState(311);
+ setState(378);
alphaX();
}
break;
case A_S:
case LENGTH_TYPE_A:
{
- setState(312);
+ setState(379);
alphaA();
}
break;
case N_S:
case LENGTH_TYPE_N:
{
- setState(313);
+ setState(380);
alphaN();
}
break;
@@ -2614,19 +3149,19 @@ public final PicContext pic() throws RecognitionException {
case PRECISION_Z_DECIMAL_SCALED:
case PRECISION_Z_SCALED:
{
- setState(322);
+ setState(389);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
case 1:
{
- setState(314);
+ setState(381);
signPrecision9();
- setState(316);
+ setState(383);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
case 1:
{
- setState(315);
+ setState(382);
usage();
}
break;
@@ -2635,17 +3170,17 @@ public final PicContext pic() throws RecognitionException {
break;
case 2:
{
- setState(319);
+ setState(386);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BINARY) | (1L << COMP) | (1L << COMP_0) | (1L << COMP_1) | (1L << COMP_2) | (1L << COMP_3) | (1L << COMP_3U) | (1L << COMP_4) | (1L << COMP_5) | (1L << COMP_9) | (1L << COMPUTATIONAL) | (1L << COMPUTATIONAL_0) | (1L << COMPUTATIONAL_1) | (1L << COMPUTATIONAL_2) | (1L << COMPUTATIONAL_3) | (1L << COMPUTATIONAL_3U) | (1L << COMPUTATIONAL_4) | (1L << COMPUTATIONAL_5) | (1L << COMPUTATIONAL_9) | (1L << DISPLAY) | (1L << PACKED_DECIMAL))) != 0) || _la==USAGE) {
{
- setState(318);
+ setState(385);
usage();
}
}
- setState(321);
+ setState(388);
signPrecision9();
}
break;
@@ -2660,19 +3195,19 @@ public final PicContext pic() throws RecognitionException {
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(330);
+ setState(397);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==USAGE) {
{
- setState(326);
+ setState(393);
match(USAGE);
- setState(328);
+ setState(395);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IS) {
{
- setState(327);
+ setState(394);
match(IS);
}
}
@@ -2680,26 +3215,26 @@ public final PicContext pic() throws RecognitionException {
}
}
- setState(332);
+ setState(399);
match(COMP_1);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(337);
+ setState(404);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==USAGE) {
{
- setState(333);
+ setState(400);
match(USAGE);
- setState(335);
+ setState(402);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IS) {
{
- setState(334);
+ setState(401);
match(IS);
}
}
@@ -2707,7 +3242,7 @@ public final PicContext pic() throws RecognitionException {
}
}
- setState(339);
+ setState(406);
match(COMP_2);
}
break;
@@ -2745,7 +3280,7 @@ public final SectionContext section() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(342);
+ setState(409);
_la = _input.LA(1);
if ( !(_la==LEVEL_ROOT || _la==LEVEL_REGULAR) ) {
_errHandler.recoverInline(this);
@@ -2790,7 +3325,7 @@ public final SkipLiteralContext skipLiteral() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(344);
+ setState(411);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << SKIP1) | (1L << SKIP2) | (1L << SKIP3))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -2865,21 +3400,21 @@ public final GroupContext group() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(346);
+ setState(413);
section();
- setState(347);
+ setState(414);
identifier();
- setState(354);
+ setState(421);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BINARY) | (1L << COMP) | (1L << COMP_0) | (1L << COMP_3) | (1L << COMP_3U) | (1L << COMP_4) | (1L << COMP_5) | (1L << COMP_9) | (1L << COMPUTATIONAL) | (1L << COMPUTATIONAL_0) | (1L << COMPUTATIONAL_3) | (1L << COMPUTATIONAL_3U) | (1L << COMPUTATIONAL_4) | (1L << COMPUTATIONAL_5) | (1L << COMPUTATIONAL_9) | (1L << DISPLAY) | (1L << OCCURS) | (1L << PACKED_DECIMAL) | (1L << REDEFINES))) != 0) || ((((_la - 73)) & ~0x3f) == 0 && ((1L << (_la - 73)) & ((1L << (USAGE - 73)) | (1L << (VALUE - 73)) | (1L << (VALUES - 73)))) != 0)) {
{
- setState(352);
+ setState(419);
_errHandler.sync(this);
switch (_input.LA(1)) {
case REDEFINES:
{
- setState(348);
+ setState(415);
redefines();
}
break;
@@ -2902,20 +3437,20 @@ public final GroupContext group() throws RecognitionException {
case PACKED_DECIMAL:
case USAGE:
{
- setState(349);
+ setState(416);
usageGroup();
}
break;
case OCCURS:
{
- setState(350);
+ setState(417);
occurs();
}
break;
case VALUE:
case VALUES:
{
- setState(351);
+ setState(418);
values();
}
break;
@@ -2923,11 +3458,11 @@ public final GroupContext group() throws RecognitionException {
throw new NoViableAltException(this);
}
}
- setState(356);
+ setState(423);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(357);
+ setState(424);
term();
}
}
@@ -3015,89 +3550,89 @@ public final PrimitiveContext primitive() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(359);
+ setState(426);
section();
- setState(360);
+ setState(427);
identifier();
- setState(370);
+ setState(437);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BINARY) | (1L << COMP) | (1L << COMP_0) | (1L << COMP_1) | (1L << COMP_2) | (1L << COMP_3) | (1L << COMP_3U) | (1L << COMP_4) | (1L << COMP_5) | (1L << COMP_9) | (1L << COMPUTATIONAL) | (1L << COMPUTATIONAL_0) | (1L << COMPUTATIONAL_1) | (1L << COMPUTATIONAL_2) | (1L << COMPUTATIONAL_3) | (1L << COMPUTATIONAL_3U) | (1L << COMPUTATIONAL_4) | (1L << COMPUTATIONAL_5) | (1L << COMPUTATIONAL_9) | (1L << DISPLAY) | (1L << JUST) | (1L << JUSTIFIED) | (1L << OCCURS) | (1L << PACKED_DECIMAL) | (1L << PIC) | (1L << PICTURE) | (1L << REDEFINES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SIGN - 64)) | (1L << (USAGE - 64)) | (1L << (VALUE - 64)) | (1L << (VALUES - 64)))) != 0)) {
{
- setState(368);
+ setState(435);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
case 1:
{
- setState(361);
+ setState(428);
justified();
}
break;
case 2:
{
- setState(362);
+ setState(429);
occurs();
}
break;
case 3:
{
- setState(363);
+ setState(430);
pic();
}
break;
case 4:
{
- setState(364);
+ setState(431);
redefines();
}
break;
case 5:
{
- setState(365);
+ setState(432);
usage();
}
break;
case 6:
{
- setState(366);
+ setState(433);
values();
}
break;
case 7:
{
- setState(367);
+ setState(434);
separateSign();
}
break;
}
}
- setState(372);
+ setState(439);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(378);
+ setState(445);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==BLANK) {
{
- setState(373);
+ setState(440);
match(BLANK);
- setState(375);
+ setState(442);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==WHEN) {
{
- setState(374);
+ setState(441);
match(WHEN);
}
}
- setState(377);
+ setState(444);
match(ZERO);
}
}
- setState(380);
+ setState(447);
term();
}
}
@@ -3140,13 +3675,13 @@ public final Level66statementContext level66statement() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(382);
+ setState(449);
match(LEVEL_NUMBER_66);
- setState(383);
+ setState(450);
identifier();
- setState(384);
+ setState(451);
renames();
- setState(385);
+ setState(452);
term();
}
}
@@ -3189,13 +3724,13 @@ public final Level88statementContext level88statement() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(387);
+ setState(454);
match(LEVEL_NUMBER_88);
- setState(388);
+ setState(455);
identifier();
- setState(389);
+ setState(456);
values();
- setState(390);
+ setState(457);
term();
}
}
@@ -3245,55 +3780,55 @@ public final ItemContext item() throws RecognitionException {
ItemContext _localctx = new ItemContext(_ctx, getState());
enterRule(_localctx, 80, RULE_item);
try {
- setState(399);
+ setState(466);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(392);
+ setState(459);
match(COMMENT);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(393);
+ setState(460);
group();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(394);
+ setState(461);
primitive();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(395);
+ setState(462);
level66statement();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(396);
+ setState(463);
level88statement();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(397);
+ setState(464);
skipLiteral();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(398);
+ setState(465);
term();
}
break;
@@ -3311,7 +3846,7 @@ public final ItemContext item() throws RecognitionException {
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u008a\u0194\4\2\t"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u008a\u01d7\4\2\t"+
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@@ -3319,156 +3854,198 @@ public final ItemContext item() throws RecognitionException {
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\3\2\6\2"+
"V\n\2\r\2\16\2W\3\2\5\2[\n\2\3\2\3\2\3\3\3\3\3\3\3\3\5\3c\n\3\3\4\5\4"+
"f\n\4\3\4\3\4\3\4\5\4k\n\4\3\4\5\4n\n\4\3\5\3\5\3\6\3\6\3\7\3\7\3\7\3"+
- "\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u0083\n\7\3\b\3\b\3"+
- "\t\3\t\5\t\u0089\n\t\3\t\3\t\5\t\u008d\n\t\5\t\u008f\n\t\3\t\3\t\5\t\u0093"+
- "\n\t\3\t\7\t\u0096\n\t\f\t\16\t\u0099\13\t\3\n\3\n\5\n\u009d\n\n\3\13"+
- "\3\13\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r"+
- "\3\r\3\r\5\r\u00b3\n\r\3\16\3\16\5\16\u00b7\n\16\3\16\5\16\u00ba\n\16"+
- "\3\16\3\16\3\17\3\17\3\17\3\20\3\20\5\20\u00c3\n\20\3\20\3\20\3\21\3\21"+
- "\5\21\u00c9\n\21\3\21\3\21\5\21\u00cd\n\21\3\21\7\21\u00d0\n\21\f\21\16"+
- "\21\u00d3\13\21\3\22\3\22\3\22\5\22\u00d8\n\22\3\22\5\22\u00db\n\22\3"+
- "\22\5\22\u00de\n\22\3\22\5\22\u00e1\n\22\3\22\5\22\u00e4\n\22\3\23\3\23"+
- "\3\23\3\24\3\24\3\24\3\24\3\24\5\24\u00ee\n\24\3\25\3\25\3\26\3\26\3\27"+
- "\3\27\5\27\u00f6\n\27\5\27\u00f8\n\27\3\27\3\27\3\30\3\30\5\30\u00fe\n"+
- "\30\5\30\u0100\n\30\3\30\3\30\3\31\3\31\5\31\u0106\n\31\3\31\3\31\5\31"+
- "\u010a\n\31\3\31\5\31\u010d\n\31\3\32\3\32\5\32\u0111\n\32\3\33\3\33\3"+
- "\34\3\34\5\34\u0117\n\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35"+
- "\3\35\3\35\3\35\3\35\5\35\u0126\n\35\3\36\5\36\u0129\n\36\3\36\3\36\3"+
- "\36\3\36\5\36\u012f\n\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3#\3#\3#"+
- "\3#\5#\u013f\n#\3#\5#\u0142\n#\3#\5#\u0145\n#\5#\u0147\n#\3#\3#\5#\u014b"+
- "\n#\5#\u014d\n#\3#\3#\3#\5#\u0152\n#\5#\u0154\n#\3#\5#\u0157\n#\3$\3$"+
- "\3%\3%\3&\3&\3&\3&\3&\3&\7&\u0163\n&\f&\16&\u0166\13&\3&\3&\3\'\3\'\3"+
- "\'\3\'\3\'\3\'\3\'\3\'\3\'\7\'\u0173\n\'\f\'\16\'\u0176\13\'\3\'\3\'\5"+
- "\'\u017a\n\'\3\'\5\'\u017d\n\'\3\'\3\'\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3"+
- "*\3*\3*\3*\3*\3*\3*\5*\u0192\n*\3*\2\2+\2\4\6\b\n\f\16\20\22\24\26\30"+
- "\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPR\2\17\4\2^^\177\u0084\4\2"+
- "##JJ\4\2\6\6 \6\2\7\7\f\35!!\66\66\b\2\7\7\f\r\20\26\31\35!!\66\66\4"+
- "\2,,II\3\2)*\4\2aaxx\4\2bbzz\4\2__tt\3\2\678\3\2\177\u0080\3\2?A\2\u01d6"+
- "\2U\3\2\2\2\4b\3\2\2\2\6m\3\2\2\2\bo\3\2\2\2\nq\3\2\2\2\f\u0082\3\2\2"+
- "\2\16\u0084\3\2\2\2\20\u008e\3\2\2\2\22\u009a\3\2\2\2\24\u009e\3\2\2\2"+
- "\26\u00a0\3\2\2\2\30\u00b2\3\2\2\2\32\u00b4\3\2\2\2\34\u00bd\3\2\2\2\36"+
- "\u00c0\3\2\2\2 \u00c6\3\2\2\2\"\u00d4\3\2\2\2$\u00e5\3\2\2\2&\u00e8\3"+
- "\2\2\2(\u00ef\3\2\2\2*\u00f1\3\2\2\2,\u00f7\3\2\2\2.\u00ff\3\2\2\2\60"+
- "\u0103\3\2\2\2\62\u010e\3\2\2\2\64\u0112\3\2\2\2\66\u0116\3\2\2\28\u0125"+
- "\3\2\2\2:\u012e\3\2\2\2<\u0130\3\2\2\2>\u0132\3\2\2\2@\u0134\3\2\2\2B"+
- "\u0136\3\2\2\2D\u0156\3\2\2\2F\u0158\3\2\2\2H\u015a\3\2\2\2J\u015c\3\2"+
- "\2\2L\u0169\3\2\2\2N\u0180\3\2\2\2P\u0185\3\2\2\2R\u0191\3\2\2\2TV\5R"+
- "*\2UT\3\2\2\2VW\3\2\2\2WU\3\2\2\2WX\3\2\2\2XZ\3\2\2\2Y[\7\u0089\2\2ZY"+
- "\3\2\2\2Z[\3\2\2\2[\\\3\2\2\2\\]\7\2\2\3]\3\3\2\2\2^c\7~\2\2_c\5\6\4\2"+
- "`c\5\n\6\2ac\5\30\r\2b^\3\2\2\2b_\3\2\2\2b`\3\2\2\2ba\3\2\2\2c\5\3\2\2"+
- "\2df\5\66\34\2ed\3\2\2\2ef\3\2\2\2fg\3\2\2\2gn\7\u0086\2\2hn\7P\2\2ik"+
- "\5\66\34\2ji\3\2\2\2jk\3\2\2\2kl\3\2\2\2ln\5\b\5\2me\3\2\2\2mh\3\2\2\2"+
- "mj\3\2\2\2n\7\3\2\2\2op\t\2\2\2p\t\3\2\2\2qr\t\3\2\2r\13\3\2\2\2s\u0083"+
- "\7\u0088\2\2t\u0083\7\3\2\2u\u0083\7_\2\2v\u0083\7`\2\2w\u0083\7f\2\2"+
- "x\u0083\7a\2\2y\u0083\3\2\2\2z\u0083\7b\2\2{\u0083\7c\2\2|\u0083\7g\2"+
- "\2}\u0083\7d\2\2~\u0083\7h\2\2\177\u0083\7e\2\2\u0080\u0083\7i\2\2\u0081"+
- "\u0083\7\u0087\2\2\u0082s\3\2\2\2\u0082t\3\2\2\2\u0082u\3\2\2\2\u0082"+
- "v\3\2\2\2\u0082w\3\2\2\2\u0082x\3\2\2\2\u0082y\3\2\2\2\u0082z\3\2\2\2"+
- "\u0082{\3\2\2\2\u0082|\3\2\2\2\u0082}\3\2\2\2\u0082~\3\2\2\2\u0082\177"+
- "\3\2\2\2\u0082\u0080\3\2\2\2\u0082\u0081\3\2\2\2\u0083\r\3\2\2\2\u0084"+
- "\u0085\7\3\2\2\u0085\17\3\2\2\2\u0086\u0088\7M\2\2\u0087\u0089\7(\2\2"+
- "\u0088\u0087\3\2\2\2\u0088\u0089\3\2\2\2\u0089\u008f\3\2\2\2\u008a\u008c"+
- "\7N\2\2\u008b\u008d\7\5\2\2\u008c\u008b\3\2\2\2\u008c\u008d\3\2\2\2\u008d"+
- "\u008f\3\2\2\2\u008e\u0086\3\2\2\2\u008e\u008a\3\2\2\2\u008f\u0090\3\2"+
- "\2\2\u0090\u0097\5\22\n\2\u0091\u0093\7T\2\2\u0092\u0091\3\2\2\2\u0092"+
- "\u0093\3\2\2\2\u0093\u0094\3\2\2\2\u0094\u0096\5\22\n\2\u0095\u0092\3"+
- "\2\2\2\u0096\u0099\3\2\2\2\u0097\u0095\3\2\2\2\u0097\u0098\3\2\2\2\u0098"+
- "\21\3\2\2\2\u0099\u0097\3\2\2\2\u009a\u009c\5\24\13\2\u009b\u009d\5\26"+
- "\f\2\u009c\u009b\3\2\2\2\u009c\u009d\3\2\2\2\u009d\23\3\2\2\2\u009e\u009f"+
- "\5\4\3\2\u009f\25\3\2\2\2\u00a0\u00a1\5\16\b\2\u00a1\u00a2\5\4\3\2\u00a2"+
- "\27\3\2\2\2\u00a3\u00a4\7\4\2\2\u00a4\u00b3\5\4\3\2\u00a5\u00b3\7%\2\2"+
- "\u00a6\u00b3\7&\2\2\u00a7\u00b3\7.\2\2\u00a8\u00b3\7/\2\2\u00a9\u00b3"+
- "\7\60\2\2\u00aa\u00b3\7\61\2\2\u00ab\u00b3\79\2\2\u00ac\u00b3\7:\2\2\u00ad"+
- "\u00b3\7C\2\2\u00ae\u00b3\7D\2\2\u00af\u00b3\7P\2\2\u00b0\u00b3\7Q\2\2"+
- "\u00b1\u00b3\7R\2\2\u00b2\u00a3\3\2\2\2\u00b2\u00a5\3\2\2\2\u00b2\u00a6"+
- "\3\2\2\2\u00b2\u00a7\3\2\2\2\u00b2\u00a8\3\2\2\2\u00b2\u00a9\3\2\2\2\u00b2"+
- "\u00aa\3\2\2\2\u00b2\u00ab\3\2\2\2\u00b2\u00ac\3\2\2\2\u00b2\u00ad\3\2"+
- "\2\2\u00b2\u00ae\3\2\2\2\u00b2\u00af\3\2\2\2\u00b2\u00b0\3\2\2\2\u00b2"+
- "\u00b1\3\2\2\2\u00b3\31\3\2\2\2\u00b4\u00b6\t\4\2\2\u00b5\u00b7\7+\2\2"+
- "\u00b6\u00b5\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b9\3\2\2\2\u00b8\u00ba"+
- "\7(\2\2\u00b9\u00b8\3\2\2\2\u00b9\u00ba\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb"+
- "\u00bc\5\f\7\2\u00bc\33\3\2\2\2\u00bd\u00be\7H\2\2\u00be\u00bf\5\b\5\2"+
- "\u00bf\35\3\2\2\2\u00c0\u00c2\7\37\2\2\u00c1\u00c3\7\65\2\2\u00c2\u00c1"+
- "\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c5\5\f\7\2\u00c5"+
- "\37\3\2\2\2\u00c6\u00c8\7\'\2\2\u00c7\u00c9\7\t\2\2\u00c8\u00c7\3\2\2"+
- "\2\u00c8\u00c9\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00d1\5\f\7\2\u00cb\u00cd"+
- "\7T\2\2\u00cc\u00cb\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\u00ce\3\2\2\2\u00ce"+
- "\u00d0\7\u0088\2\2\u00cf\u00cc\3\2\2\2\u00d0\u00d3\3\2\2\2\u00d1\u00cf"+
- "\3\2\2\2\u00d1\u00d2\3\2\2\2\u00d2!\3\2\2\2\u00d3\u00d1\3\2\2\2\u00d4"+
- "\u00d5\7\64\2\2\u00d5\u00d7\5\b\5\2\u00d6\u00d8\5\34\17\2\u00d7\u00d6"+
- "\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8\u00da\3\2\2\2\u00d9\u00db\7G\2\2\u00da"+
- "\u00d9\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00dd\3\2\2\2\u00dc\u00de\5\36"+
- "\20\2\u00dd\u00dc\3\2\2\2\u00dd\u00de\3\2\2\2\u00de\u00e0\3\2\2\2\u00df"+
- "\u00e1\5\32\16\2\u00e0\u00df\3\2\2\2\u00e0\u00e1\3\2\2\2\u00e1\u00e3\3"+
- "\2\2\2\u00e2\u00e4\5 \21\2\u00e3\u00e2\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4"+
- "#\3\2\2\2\u00e5\u00e6\7;\2\2\u00e6\u00e7\5\f\7\2\u00e7%\3\2\2\2\u00e8"+
- "\u00e9\7<\2\2\u00e9\u00ed\5\f\7\2\u00ea\u00eb\5\16\b\2\u00eb\u00ec\5\f"+
- "\7\2\u00ec\u00ee\3\2\2\2\u00ed\u00ea\3\2\2\2\u00ed\u00ee\3\2\2\2\u00ee"+
- "\'\3\2\2\2\u00ef\u00f0\t\5\2\2\u00f0)\3\2\2\2\u00f1\u00f2\t\6\2\2\u00f2"+
- "+\3\2\2\2\u00f3\u00f5\7K\2\2\u00f4\u00f6\7(\2\2\u00f5\u00f4\3\2\2\2\u00f5"+
- "\u00f6\3\2\2\2\u00f6\u00f8\3\2\2\2\u00f7\u00f3\3\2\2\2\u00f7\u00f8\3\2"+
- "\2\2\u00f8\u00f9\3\2\2\2\u00f9\u00fa\5(\25\2\u00fa-\3\2\2\2\u00fb\u00fd"+
- "\7K\2\2\u00fc\u00fe\7(\2\2\u00fd\u00fc\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe"+
- "\u0100\3\2\2\2\u00ff\u00fb\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0101\3\2"+
- "\2\2\u0101\u0102\5*\26\2\u0102/\3\2\2\2\u0103\u0105\7B\2\2\u0104\u0106"+
- "\7(\2\2\u0105\u0104\3\2\2\2\u0105\u0106\3\2\2\2\u0106\u0107\3\2\2\2\u0107"+
- "\u0109\t\7\2\2\u0108\u010a\7>\2\2\u0109\u0108\3\2\2\2\u0109\u010a\3\2"+
- "\2\2\u010a\u010c\3\2\2\2\u010b\u010d\7\n\2\2\u010c\u010b\3\2\2\2\u010c"+
- "\u010d\3\2\2\2\u010d\61\3\2\2\2\u010e\u0110\t\b\2\2\u010f\u0111\7=\2\2"+
- "\u0110\u010f\3\2\2\2\u0110\u0111\3\2\2\2\u0111\63\3\2\2\2\u0112\u0113"+
- "\7\\\2\2\u0113\65\3\2\2\2\u0114\u0117\7X\2\2\u0115\u0117\7W\2\2\u0116"+
- "\u0114\3\2\2\2\u0116\u0115\3\2\2\2\u0117\67\3\2\2\2\u0118\u0126\7^\2\2"+
- "\u0119\u0126\7c\2\2\u011a\u0126\7`\2\2\u011b\u0126\7d\2\2\u011c\u0126"+
- "\7e\2\2\u011d\u0126\7j\2\2\u011e\u0126\7k\2\2\u011f\u0126\7l\2\2\u0120"+
- "\u0126\7m\2\2\u0121\u0126\7n\2\2\u0122\u0126\7o\2\2\u0123\u0126\7p\2\2"+
- "\u0124\u0126\7q\2\2\u0125\u0118\3\2\2\2\u0125\u0119\3\2\2\2\u0125\u011a"+
- "\3\2\2\2\u0125\u011b\3\2\2\2\u0125\u011c\3\2\2\2\u0125\u011d\3\2\2\2\u0125"+
- "\u011e\3\2\2\2\u0125\u011f\3\2\2\2\u0125\u0120\3\2\2\2\u0125\u0121\3\2"+
- "\2\2\u0125\u0122\3\2\2\2\u0125\u0123\3\2\2\2\u0125\u0124\3\2\2\2\u0126"+
- "9\3\2\2\2\u0127\u0129\5\66\34\2\u0128\u0127\3\2\2\2\u0128\u0129\3\2\2"+
- "\2\u0129\u012a\3\2\2\2\u012a\u012f\58\35\2\u012b\u012c\58\35\2\u012c\u012d"+
- "\5\66\34\2\u012d\u012f\3\2\2\2\u012e\u0128\3\2\2\2\u012e\u012b\3\2\2\2"+
- "\u012f;\3\2\2\2\u0130\u0131\t\t\2\2\u0131=\3\2\2\2\u0132\u0133\t\n\2\2"+
- "\u0133?\3\2\2\2\u0134\u0135\t\13\2\2\u0135A\3\2\2\2\u0136\u0137\t\f\2"+
- "\2\u0137C\3\2\2\2\u0138\u0146\5B\"\2\u0139\u0147\5<\37\2\u013a\u0147\5"+
- "@!\2\u013b\u0147\5> \2\u013c\u013e\5:\36\2\u013d\u013f\5,\27\2\u013e\u013d"+
- "\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0145\3\2\2\2\u0140\u0142\5,\27\2\u0141"+
- "\u0140\3\2\2\2\u0141\u0142\3\2\2\2\u0142\u0143\3\2\2\2\u0143\u0145\5:"+
- "\36\2\u0144\u013c\3\2\2\2\u0144\u0141\3\2\2\2\u0145\u0147\3\2\2\2\u0146"+
- "\u0139\3\2\2\2\u0146\u013a\3\2\2\2\u0146\u013b\3\2\2\2\u0146\u0144\3\2"+
- "\2\2\u0147\u0157\3\2\2\2\u0148\u014a\7K\2\2\u0149\u014b\7(\2\2\u014a\u0149"+
- "\3\2\2\2\u014a\u014b\3\2\2\2\u014b\u014d\3\2\2\2\u014c\u0148\3\2\2\2\u014c"+
- "\u014d\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u0157\7\16\2\2\u014f\u0151\7"+
- "K\2\2\u0150\u0152\7(\2\2\u0151\u0150\3\2\2\2\u0151\u0152\3\2\2\2\u0152"+
- "\u0154\3\2\2\2\u0153\u014f\3\2\2\2\u0153\u0154\3\2\2\2\u0154\u0155\3\2"+
- "\2\2\u0155\u0157\7\17\2\2\u0156\u0138\3\2\2\2\u0156\u014c\3\2\2\2\u0156"+
- "\u0153\3\2\2\2\u0157E\3\2\2\2\u0158\u0159\t\r\2\2\u0159G\3\2\2\2\u015a"+
- "\u015b\t\16\2\2\u015bI\3\2\2\2\u015c\u015d\5F$\2\u015d\u0164\5\f\7\2\u015e"+
- "\u0163\5$\23\2\u015f\u0163\5.\30\2\u0160\u0163\5\"\22\2\u0161\u0163\5"+
- "\20\t\2\u0162\u015e\3\2\2\2\u0162\u015f\3\2\2\2\u0162\u0160\3\2\2\2\u0162"+
- "\u0161\3\2\2\2\u0163\u0166\3\2\2\2\u0164\u0162\3\2\2\2\u0164\u0165\3\2"+
- "\2\2\u0165\u0167\3\2\2\2\u0166\u0164\3\2\2\2\u0167\u0168\5\64\33\2\u0168"+
- "K\3\2\2\2\u0169\u016a\5F$\2\u016a\u0174\5\f\7\2\u016b\u0173\5\62\32\2"+
- "\u016c\u0173\5\"\22\2\u016d\u0173\5D#\2\u016e\u0173\5$\23\2\u016f\u0173"+
- "\5,\27\2\u0170\u0173\5\20\t\2\u0171\u0173\5\60\31\2\u0172\u016b\3\2\2"+
- "\2\u0172\u016c\3\2\2\2\u0172\u016d\3\2\2\2\u0172\u016e\3\2\2\2\u0172\u016f"+
- "\3\2\2\2\u0172\u0170\3\2\2\2\u0172\u0171\3\2\2\2\u0173\u0176\3\2\2\2\u0174"+
- "\u0172\3\2\2\2\u0174\u0175\3\2\2\2\u0175\u017c\3\2\2\2\u0176\u0174\3\2"+
- "\2\2\u0177\u0179\7\b\2\2\u0178\u017a\7O\2\2\u0179\u0178\3\2\2\2\u0179"+
- "\u017a\3\2\2\2\u017a\u017b\3\2\2\2\u017b\u017d\7P\2\2\u017c\u0177\3\2"+
- "\2\2\u017c\u017d\3\2\2\2\u017d\u017e\3\2\2\2\u017e\u017f\5\64\33\2\u017f"+
- "M\3\2\2\2\u0180\u0181\7\u0081\2\2\u0181\u0182\5\f\7\2\u0182\u0183\5&\24"+
- "\2\u0183\u0184\5\64\33\2\u0184O\3\2\2\2\u0185\u0186\7\u0083\2\2\u0186"+
- "\u0187\5\f\7\2\u0187\u0188\5\20\t\2\u0188\u0189\5\64\33\2\u0189Q\3\2\2"+
- "\2\u018a\u0192\7]\2\2\u018b\u0192\5J&\2\u018c\u0192\5L\'\2\u018d\u0192"+
- "\5N(\2\u018e\u0192\5P)\2\u018f\u0192\5H%\2\u0190\u0192\5\64\33\2\u0191"+
- "\u018a\3\2\2\2\u0191\u018b\3\2\2\2\u0191\u018c\3\2\2\2\u0191\u018d\3\2"+
- "\2\2\u0191\u018e\3\2\2\2\u0191\u018f\3\2\2\2\u0191\u0190\3\2\2\2\u0192"+
- "S\3\2\2\28WZbejm\u0082\u0088\u008c\u008e\u0092\u0097\u009c\u00b2\u00b6"+
- "\u00b9\u00c2\u00c8\u00cc\u00d1\u00d7\u00da\u00dd\u00e0\u00e3\u00ed\u00f5"+
- "\u00f7\u00fd\u00ff\u0105\u0109\u010c\u0110\u0116\u0125\u0128\u012e\u013e"+
- "\u0141\u0144\u0146\u014a\u014c\u0151\u0153\u0156\u0162\u0164\u0172\u0174"+
- "\u0179\u017c\u0191";
+ "\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+
+ "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+
+ "\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+
+ "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+
+ "\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u00c6\n\7\3\b\3\b\3\t\3\t\5\t\u00cc"+
+ "\n\t\3\t\3\t\5\t\u00d0\n\t\5\t\u00d2\n\t\3\t\3\t\5\t\u00d6\n\t\3\t\7\t"+
+ "\u00d9\n\t\f\t\16\t\u00dc\13\t\3\n\3\n\5\n\u00e0\n\n\3\13\3\13\3\f\3\f"+
+ "\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u00f6"+
+ "\n\r\3\16\3\16\5\16\u00fa\n\16\3\16\5\16\u00fd\n\16\3\16\3\16\3\17\3\17"+
+ "\3\17\3\20\3\20\5\20\u0106\n\20\3\20\3\20\3\21\3\21\5\21\u010c\n\21\3"+
+ "\21\3\21\5\21\u0110\n\21\3\21\7\21\u0113\n\21\f\21\16\21\u0116\13\21\3"+
+ "\22\3\22\3\22\5\22\u011b\n\22\3\22\5\22\u011e\n\22\3\22\5\22\u0121\n\22"+
+ "\3\22\5\22\u0124\n\22\3\22\5\22\u0127\n\22\3\23\3\23\3\23\3\24\3\24\3"+
+ "\24\3\24\3\24\5\24\u0131\n\24\3\25\3\25\3\26\3\26\3\27\3\27\5\27\u0139"+
+ "\n\27\5\27\u013b\n\27\3\27\3\27\3\30\3\30\5\30\u0141\n\30\5\30\u0143\n"+
+ "\30\3\30\3\30\3\31\3\31\5\31\u0149\n\31\3\31\3\31\5\31\u014d\n\31\3\31"+
+ "\5\31\u0150\n\31\3\32\3\32\5\32\u0154\n\32\3\33\3\33\3\34\3\34\5\34\u015a"+
+ "\n\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35"+
+ "\5\35\u0169\n\35\3\36\5\36\u016c\n\36\3\36\3\36\3\36\3\36\5\36\u0172\n"+
+ "\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3#\3#\3#\3#\5#\u0182\n#\3#\5#"+
+ "\u0185\n#\3#\5#\u0188\n#\5#\u018a\n#\3#\3#\5#\u018e\n#\5#\u0190\n#\3#"+
+ "\3#\3#\5#\u0195\n#\5#\u0197\n#\3#\5#\u019a\n#\3$\3$\3%\3%\3&\3&\3&\3&"+
+ "\3&\3&\7&\u01a6\n&\f&\16&\u01a9\13&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'"+
+ "\3\'\3\'\7\'\u01b6\n\'\f\'\16\'\u01b9\13\'\3\'\3\'\5\'\u01bd\n\'\3\'\5"+
+ "\'\u01c0\n\'\3\'\3\'\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3"+
+ "*\5*\u01d5\n*\3*\2\2+\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,."+
+ "\60\62\64\668:<>@BDFHJLNPR\2\17\4\2^^\177\u0084\4\2##JJ\4\2\6\6 \6\2"+
+ "\7\7\f\35!!\66\66\b\2\7\7\f\r\20\26\31\35!!\66\66\4\2,,II\3\2)*\4\2aa"+
+ "xx\4\2bbzz\4\2__tt\3\2\678\3\2\177\u0080\3\2?A\2\u025c\2U\3\2\2\2\4b\3"+
+ "\2\2\2\6m\3\2\2\2\bo\3\2\2\2\nq\3\2\2\2\f\u00c5\3\2\2\2\16\u00c7\3\2\2"+
+ "\2\20\u00d1\3\2\2\2\22\u00dd\3\2\2\2\24\u00e1\3\2\2\2\26\u00e3\3\2\2\2"+
+ "\30\u00f5\3\2\2\2\32\u00f7\3\2\2\2\34\u0100\3\2\2\2\36\u0103\3\2\2\2 "+
+ "\u0109\3\2\2\2\"\u0117\3\2\2\2$\u0128\3\2\2\2&\u012b\3\2\2\2(\u0132\3"+
+ "\2\2\2*\u0134\3\2\2\2,\u013a\3\2\2\2.\u0142\3\2\2\2\60\u0146\3\2\2\2\62"+
+ "\u0151\3\2\2\2\64\u0155\3\2\2\2\66\u0159\3\2\2\28\u0168\3\2\2\2:\u0171"+
+ "\3\2\2\2<\u0173\3\2\2\2>\u0175\3\2\2\2@\u0177\3\2\2\2B\u0179\3\2\2\2D"+
+ "\u0199\3\2\2\2F\u019b\3\2\2\2H\u019d\3\2\2\2J\u019f\3\2\2\2L\u01ac\3\2"+
+ "\2\2N\u01c3\3\2\2\2P\u01c8\3\2\2\2R\u01d4\3\2\2\2TV\5R*\2UT\3\2\2\2VW"+
+ "\3\2\2\2WU\3\2\2\2WX\3\2\2\2XZ\3\2\2\2Y[\7\u0089\2\2ZY\3\2\2\2Z[\3\2\2"+
+ "\2[\\\3\2\2\2\\]\7\2\2\3]\3\3\2\2\2^c\7~\2\2_c\5\6\4\2`c\5\n\6\2ac\5\30"+
+ "\r\2b^\3\2\2\2b_\3\2\2\2b`\3\2\2\2ba\3\2\2\2c\5\3\2\2\2df\5\66\34\2ed"+
+ "\3\2\2\2ef\3\2\2\2fg\3\2\2\2gn\7\u0086\2\2hn\7P\2\2ik\5\66\34\2ji\3\2"+
+ "\2\2jk\3\2\2\2kl\3\2\2\2ln\5\b\5\2me\3\2\2\2mh\3\2\2\2mj\3\2\2\2n\7\3"+
+ "\2\2\2op\t\2\2\2p\t\3\2\2\2qr\t\3\2\2r\13\3\2\2\2s\u00c6\7\u0088\2\2t"+
+ "\u00c6\7\3\2\2u\u00c6\7_\2\2v\u00c6\7`\2\2w\u00c6\7f\2\2x\u00c6\7a\2\2"+
+ "y\u00c6\3\2\2\2z\u00c6\7b\2\2{\u00c6\7c\2\2|\u00c6\7g\2\2}\u00c6\7d\2"+
+ "\2~\u00c6\7h\2\2\177\u00c6\7e\2\2\u0080\u00c6\7i\2\2\u0081\u00c6\7\u0087"+
+ "\2\2\u0082\u00c6\7B\2\2\u0083\u00c6\7,\2\2\u0084\u00c6\7I\2\2\u0085\u00c6"+
+ "\7>\2\2\u0086\u00c6\7\n\2\2\u0087\u00c6\7\6\2\2\u0088\u00c6\7 \2\2\u0089"+
+ "\u00c6\7+\2\2\u008a\u00c6\7\7\2\2\u008b\u00c6\7!\2\2\u008c\u00c6\7\66"+
+ "\2\2\u008d\u00c6\7\25\2\2\u008e\u00c6\7\26\2\2\u008f\u00c6\7\27\2\2\u0090"+
+ "\u00c6\7\30\2\2\u0091\u00c6\7\31\2\2\u0092\u00c6\7\32\2\2\u0093\u00c6"+
+ "\7\33\2\2\u0094\u00c6\7\34\2\2\u0095\u00c6\7\35\2\2\u0096\u00c6\7\f\2"+
+ "\2\u0097\u00c6\7\r\2\2\u0098\u00c6\7\16\2\2\u0099\u00c6\7\17\2\2\u009a"+
+ "\u00c6\7\20\2\2\u009b\u00c6\7\21\2\2\u009c\u00c6\7\22\2\2\u009d\u00c6"+
+ "\7\23\2\2\u009e\u00c6\7\24\2\2\u009f\u00c6\7;\2\2\u00a0\u00c6\7<\2\2\u00a1"+
+ "\u00c6\7M\2\2\u00a2\u00c6\7N\2\2\u00a3\u00c6\7\64\2\2\u00a4\u00c6\7G\2"+
+ "\2\u00a5\u00c6\7\37\2\2\u00a6\u00c6\7\'\2\2\u00a7\u00c6\7\b\2\2\u00a8"+
+ "\u00c6\7P\2\2\u00a9\u00c6\7Q\2\2\u00aa\u00c6\7R\2\2\u00ab\u00c6\7C\2\2"+
+ "\u00ac\u00c6\7D\2\2\u00ad\u00c6\7%\2\2\u00ae\u00c6\7&\2\2\u00af\u00c6"+
+ "\7.\2\2\u00b0\u00c6\7/\2\2\u00b1\u00c6\7\60\2\2\u00b2\u00c6\7\61\2\2\u00b3"+
+ "\u00c6\79\2\2\u00b4\u00c6\7:\2\2\u00b5\u00c6\7*\2\2\u00b6\u00c6\7)\2\2"+
+ "\u00b7\u00c6\7=\2\2\u00b8\u00c6\78\2\2\u00b9\u00c6\7\67\2\2\u00ba\u00c6"+
+ "\7J\2\2\u00bb\u00c6\7#\2\2\u00bc\u00c6\7\5\2\2\u00bd\u00c6\7(\2\2\u00be"+
+ "\u00c6\7\65\2\2\u00bf\u00c6\7\t\2\2\u00c0\u00c6\7O\2\2\u00c1\u00c6\7H"+
+ "\2\2\u00c2\u00c6\7\4\2\2\u00c3\u00c6\7K\2\2\u00c4\u00c6\7$\2\2\u00c5s"+
+ "\3\2\2\2\u00c5t\3\2\2\2\u00c5u\3\2\2\2\u00c5v\3\2\2\2\u00c5w\3\2\2\2\u00c5"+
+ "x\3\2\2\2\u00c5y\3\2\2\2\u00c5z\3\2\2\2\u00c5{\3\2\2\2\u00c5|\3\2\2\2"+
+ "\u00c5}\3\2\2\2\u00c5~\3\2\2\2\u00c5\177\3\2\2\2\u00c5\u0080\3\2\2\2\u00c5"+
+ "\u0081\3\2\2\2\u00c5\u0082\3\2\2\2\u00c5\u0083\3\2\2\2\u00c5\u0084\3\2"+
+ "\2\2\u00c5\u0085\3\2\2\2\u00c5\u0086\3\2\2\2\u00c5\u0087\3\2\2\2\u00c5"+
+ "\u0088\3\2\2\2\u00c5\u0089\3\2\2\2\u00c5\u008a\3\2\2\2\u00c5\u008b\3\2"+
+ "\2\2\u00c5\u008c\3\2\2\2\u00c5\u008d\3\2\2\2\u00c5\u008e\3\2\2\2\u00c5"+
+ "\u008f\3\2\2\2\u00c5\u0090\3\2\2\2\u00c5\u0091\3\2\2\2\u00c5\u0092\3\2"+
+ "\2\2\u00c5\u0093\3\2\2\2\u00c5\u0094\3\2\2\2\u00c5\u0095\3\2\2\2\u00c5"+
+ "\u0096\3\2\2\2\u00c5\u0097\3\2\2\2\u00c5\u0098\3\2\2\2\u00c5\u0099\3\2"+
+ "\2\2\u00c5\u009a\3\2\2\2\u00c5\u009b\3\2\2\2\u00c5\u009c\3\2\2\2\u00c5"+
+ "\u009d\3\2\2\2\u00c5\u009e\3\2\2\2\u00c5\u009f\3\2\2\2\u00c5\u00a0\3\2"+
+ "\2\2\u00c5\u00a1\3\2\2\2\u00c5\u00a2\3\2\2\2\u00c5\u00a3\3\2\2\2\u00c5"+
+ "\u00a4\3\2\2\2\u00c5\u00a5\3\2\2\2\u00c5\u00a6\3\2\2\2\u00c5\u00a7\3\2"+
+ "\2\2\u00c5\u00a8\3\2\2\2\u00c5\u00a9\3\2\2\2\u00c5\u00aa\3\2\2\2\u00c5"+
+ "\u00ab\3\2\2\2\u00c5\u00ac\3\2\2\2\u00c5\u00ad\3\2\2\2\u00c5\u00ae\3\2"+
+ "\2\2\u00c5\u00af\3\2\2\2\u00c5\u00b0\3\2\2\2\u00c5\u00b1\3\2\2\2\u00c5"+
+ "\u00b2\3\2\2\2\u00c5\u00b3\3\2\2\2\u00c5\u00b4\3\2\2\2\u00c5\u00b5\3\2"+
+ "\2\2\u00c5\u00b6\3\2\2\2\u00c5\u00b7\3\2\2\2\u00c5\u00b8\3\2\2\2\u00c5"+
+ "\u00b9\3\2\2\2\u00c5\u00ba\3\2\2\2\u00c5\u00bb\3\2\2\2\u00c5\u00bc\3\2"+
+ "\2\2\u00c5\u00bd\3\2\2\2\u00c5\u00be\3\2\2\2\u00c5\u00bf\3\2\2\2\u00c5"+
+ "\u00c0\3\2\2\2\u00c5\u00c1\3\2\2\2\u00c5\u00c2\3\2\2\2\u00c5\u00c3\3\2"+
+ "\2\2\u00c5\u00c4\3\2\2\2\u00c6\r\3\2\2\2\u00c7\u00c8\7\3\2\2\u00c8\17"+
+ "\3\2\2\2\u00c9\u00cb\7M\2\2\u00ca\u00cc\7(\2\2\u00cb\u00ca\3\2\2\2\u00cb"+
+ "\u00cc\3\2\2\2\u00cc\u00d2\3\2\2\2\u00cd\u00cf\7N\2\2\u00ce\u00d0\7\5"+
+ "\2\2\u00cf\u00ce\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\u00d2\3\2\2\2\u00d1"+
+ "\u00c9\3\2\2\2\u00d1\u00cd\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3\u00da\5\22"+
+ "\n\2\u00d4\u00d6\7T\2\2\u00d5\u00d4\3\2\2\2\u00d5\u00d6\3\2\2\2\u00d6"+
+ "\u00d7\3\2\2\2\u00d7\u00d9\5\22\n\2\u00d8\u00d5\3\2\2\2\u00d9\u00dc\3"+
+ "\2\2\2\u00da\u00d8\3\2\2\2\u00da\u00db\3\2\2\2\u00db\21\3\2\2\2\u00dc"+
+ "\u00da\3\2\2\2\u00dd\u00df\5\24\13\2\u00de\u00e0\5\26\f\2\u00df\u00de"+
+ "\3\2\2\2\u00df\u00e0\3\2\2\2\u00e0\23\3\2\2\2\u00e1\u00e2\5\4\3\2\u00e2"+
+ "\25\3\2\2\2\u00e3\u00e4\5\16\b\2\u00e4\u00e5\5\4\3\2\u00e5\27\3\2\2\2"+
+ "\u00e6\u00e7\7\4\2\2\u00e7\u00f6\5\4\3\2\u00e8\u00f6\7%\2\2\u00e9\u00f6"+
+ "\7&\2\2\u00ea\u00f6\7.\2\2\u00eb\u00f6\7/\2\2\u00ec\u00f6\7\60\2\2\u00ed"+
+ "\u00f6\7\61\2\2\u00ee\u00f6\79\2\2\u00ef\u00f6\7:\2\2\u00f0\u00f6\7C\2"+
+ "\2\u00f1\u00f6\7D\2\2\u00f2\u00f6\7P\2\2\u00f3\u00f6\7Q\2\2\u00f4\u00f6"+
+ "\7R\2\2\u00f5\u00e6\3\2\2\2\u00f5\u00e8\3\2\2\2\u00f5\u00e9\3\2\2\2\u00f5"+
+ "\u00ea\3\2\2\2\u00f5\u00eb\3\2\2\2\u00f5\u00ec\3\2\2\2\u00f5\u00ed\3\2"+
+ "\2\2\u00f5\u00ee\3\2\2\2\u00f5\u00ef\3\2\2\2\u00f5\u00f0\3\2\2\2\u00f5"+
+ "\u00f1\3\2\2\2\u00f5\u00f2\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f5\u00f4\3\2"+
+ "\2\2\u00f6\31\3\2\2\2\u00f7\u00f9\t\4\2\2\u00f8\u00fa\7+\2\2\u00f9\u00f8"+
+ "\3\2\2\2\u00f9\u00fa\3\2\2\2\u00fa\u00fc\3\2\2\2\u00fb\u00fd\7(\2\2\u00fc"+
+ "\u00fb\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe\u00ff\5\f"+
+ "\7\2\u00ff\33\3\2\2\2\u0100\u0101\7H\2\2\u0101\u0102\5\b\5\2\u0102\35"+
+ "\3\2\2\2\u0103\u0105\7\37\2\2\u0104\u0106\7\65\2\2\u0105\u0104\3\2\2\2"+
+ "\u0105\u0106\3\2\2\2\u0106\u0107\3\2\2\2\u0107\u0108\5\f\7\2\u0108\37"+
+ "\3\2\2\2\u0109\u010b\7\'\2\2\u010a\u010c\7\t\2\2\u010b\u010a\3\2\2\2\u010b"+
+ "\u010c\3\2\2\2\u010c\u010d\3\2\2\2\u010d\u0114\5\f\7\2\u010e\u0110\7T"+
+ "\2\2\u010f\u010e\3\2\2\2\u010f\u0110\3\2\2\2\u0110\u0111\3\2\2\2\u0111"+
+ "\u0113\7\u0088\2\2\u0112\u010f\3\2\2\2\u0113\u0116\3\2\2\2\u0114\u0112"+
+ "\3\2\2\2\u0114\u0115\3\2\2\2\u0115!\3\2\2\2\u0116\u0114\3\2\2\2\u0117"+
+ "\u0118\7\64\2\2\u0118\u011a\5\b\5\2\u0119\u011b\5\34\17\2\u011a\u0119"+
+ "\3\2\2\2\u011a\u011b\3\2\2\2\u011b\u011d\3\2\2\2\u011c\u011e\7G\2\2\u011d"+
+ "\u011c\3\2\2\2\u011d\u011e\3\2\2\2\u011e\u0120\3\2\2\2\u011f\u0121\5\36"+
+ "\20\2\u0120\u011f\3\2\2\2\u0120\u0121\3\2\2\2\u0121\u0123\3\2\2\2\u0122"+
+ "\u0124\5\32\16\2\u0123\u0122\3\2\2\2\u0123\u0124\3\2\2\2\u0124\u0126\3"+
+ "\2\2\2\u0125\u0127\5 \21\2\u0126\u0125\3\2\2\2\u0126\u0127\3\2\2\2\u0127"+
+ "#\3\2\2\2\u0128\u0129\7;\2\2\u0129\u012a\5\f\7\2\u012a%\3\2\2\2\u012b"+
+ "\u012c\7<\2\2\u012c\u0130\5\f\7\2\u012d\u012e\5\16\b\2\u012e\u012f\5\f"+
+ "\7\2\u012f\u0131\3\2\2\2\u0130\u012d\3\2\2\2\u0130\u0131\3\2\2\2\u0131"+
+ "\'\3\2\2\2\u0132\u0133\t\5\2\2\u0133)\3\2\2\2\u0134\u0135\t\6\2\2\u0135"+
+ "+\3\2\2\2\u0136\u0138\7K\2\2\u0137\u0139\7(\2\2\u0138\u0137\3\2\2\2\u0138"+
+ "\u0139\3\2\2\2\u0139\u013b\3\2\2\2\u013a\u0136\3\2\2\2\u013a\u013b\3\2"+
+ "\2\2\u013b\u013c\3\2\2\2\u013c\u013d\5(\25\2\u013d-\3\2\2\2\u013e\u0140"+
+ "\7K\2\2\u013f\u0141\7(\2\2\u0140\u013f\3\2\2\2\u0140\u0141\3\2\2\2\u0141"+
+ "\u0143\3\2\2\2\u0142\u013e\3\2\2\2\u0142\u0143\3\2\2\2\u0143\u0144\3\2"+
+ "\2\2\u0144\u0145\5*\26\2\u0145/\3\2\2\2\u0146\u0148\7B\2\2\u0147\u0149"+
+ "\7(\2\2\u0148\u0147\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u014a\3\2\2\2\u014a"+
+ "\u014c\t\7\2\2\u014b\u014d\7>\2\2\u014c\u014b\3\2\2\2\u014c\u014d\3\2"+
+ "\2\2\u014d\u014f\3\2\2\2\u014e\u0150\7\n\2\2\u014f\u014e\3\2\2\2\u014f"+
+ "\u0150\3\2\2\2\u0150\61\3\2\2\2\u0151\u0153\t\b\2\2\u0152\u0154\7=\2\2"+
+ "\u0153\u0152\3\2\2\2\u0153\u0154\3\2\2\2\u0154\63\3\2\2\2\u0155\u0156"+
+ "\7\\\2\2\u0156\65\3\2\2\2\u0157\u015a\7X\2\2\u0158\u015a\7W\2\2\u0159"+
+ "\u0157\3\2\2\2\u0159\u0158\3\2\2\2\u015a\67\3\2\2\2\u015b\u0169\7^\2\2"+
+ "\u015c\u0169\7c\2\2\u015d\u0169\7`\2\2\u015e\u0169\7d\2\2\u015f\u0169"+
+ "\7e\2\2\u0160\u0169\7j\2\2\u0161\u0169\7k\2\2\u0162\u0169\7l\2\2\u0163"+
+ "\u0169\7m\2\2\u0164\u0169\7n\2\2\u0165\u0169\7o\2\2\u0166\u0169\7p\2\2"+
+ "\u0167\u0169\7q\2\2\u0168\u015b\3\2\2\2\u0168\u015c\3\2\2\2\u0168\u015d"+
+ "\3\2\2\2\u0168\u015e\3\2\2\2\u0168\u015f\3\2\2\2\u0168\u0160\3\2\2\2\u0168"+
+ "\u0161\3\2\2\2\u0168\u0162\3\2\2\2\u0168\u0163\3\2\2\2\u0168\u0164\3\2"+
+ "\2\2\u0168\u0165\3\2\2\2\u0168\u0166\3\2\2\2\u0168\u0167\3\2\2\2\u0169"+
+ "9\3\2\2\2\u016a\u016c\5\66\34\2\u016b\u016a\3\2\2\2\u016b\u016c\3\2\2"+
+ "\2\u016c\u016d\3\2\2\2\u016d\u0172\58\35\2\u016e\u016f\58\35\2\u016f\u0170"+
+ "\5\66\34\2\u0170\u0172\3\2\2\2\u0171\u016b\3\2\2\2\u0171\u016e\3\2\2\2"+
+ "\u0172;\3\2\2\2\u0173\u0174\t\t\2\2\u0174=\3\2\2\2\u0175\u0176\t\n\2\2"+
+ "\u0176?\3\2\2\2\u0177\u0178\t\13\2\2\u0178A\3\2\2\2\u0179\u017a\t\f\2"+
+ "\2\u017aC\3\2\2\2\u017b\u0189\5B\"\2\u017c\u018a\5<\37\2\u017d\u018a\5"+
+ "@!\2\u017e\u018a\5> \2\u017f\u0181\5:\36\2\u0180\u0182\5,\27\2\u0181\u0180"+
+ "\3\2\2\2\u0181\u0182\3\2\2\2\u0182\u0188\3\2\2\2\u0183\u0185\5,\27\2\u0184"+
+ "\u0183\3\2\2\2\u0184\u0185\3\2\2\2\u0185\u0186\3\2\2\2\u0186\u0188\5:"+
+ "\36\2\u0187\u017f\3\2\2\2\u0187\u0184\3\2\2\2\u0188\u018a\3\2\2\2\u0189"+
+ "\u017c\3\2\2\2\u0189\u017d\3\2\2\2\u0189\u017e\3\2\2\2\u0189\u0187\3\2"+
+ "\2\2\u018a\u019a\3\2\2\2\u018b\u018d\7K\2\2\u018c\u018e\7(\2\2\u018d\u018c"+
+ "\3\2\2\2\u018d\u018e\3\2\2\2\u018e\u0190\3\2\2\2\u018f\u018b\3\2\2\2\u018f"+
+ "\u0190\3\2\2\2\u0190\u0191\3\2\2\2\u0191\u019a\7\16\2\2\u0192\u0194\7"+
+ "K\2\2\u0193\u0195\7(\2\2\u0194\u0193\3\2\2\2\u0194\u0195\3\2\2\2\u0195"+
+ "\u0197\3\2\2\2\u0196\u0192\3\2\2\2\u0196\u0197\3\2\2\2\u0197\u0198\3\2"+
+ "\2\2\u0198\u019a\7\17\2\2\u0199\u017b\3\2\2\2\u0199\u018f\3\2\2\2\u0199"+
+ "\u0196\3\2\2\2\u019aE\3\2\2\2\u019b\u019c\t\r\2\2\u019cG\3\2\2\2\u019d"+
+ "\u019e\t\16\2\2\u019eI\3\2\2\2\u019f\u01a0\5F$\2\u01a0\u01a7\5\f\7\2\u01a1"+
+ "\u01a6\5$\23\2\u01a2\u01a6\5.\30\2\u01a3\u01a6\5\"\22\2\u01a4\u01a6\5"+
+ "\20\t\2\u01a5\u01a1\3\2\2\2\u01a5\u01a2\3\2\2\2\u01a5\u01a3\3\2\2\2\u01a5"+
+ "\u01a4\3\2\2\2\u01a6\u01a9\3\2\2\2\u01a7\u01a5\3\2\2\2\u01a7\u01a8\3\2"+
+ "\2\2\u01a8\u01aa\3\2\2\2\u01a9\u01a7\3\2\2\2\u01aa\u01ab\5\64\33\2\u01ab"+
+ "K\3\2\2\2\u01ac\u01ad\5F$\2\u01ad\u01b7\5\f\7\2\u01ae\u01b6\5\62\32\2"+
+ "\u01af\u01b6\5\"\22\2\u01b0\u01b6\5D#\2\u01b1\u01b6\5$\23\2\u01b2\u01b6"+
+ "\5,\27\2\u01b3\u01b6\5\20\t\2\u01b4\u01b6\5\60\31\2\u01b5\u01ae\3\2\2"+
+ "\2\u01b5\u01af\3\2\2\2\u01b5\u01b0\3\2\2\2\u01b5\u01b1\3\2\2\2\u01b5\u01b2"+
+ "\3\2\2\2\u01b5\u01b3\3\2\2\2\u01b5\u01b4\3\2\2\2\u01b6\u01b9\3\2\2\2\u01b7"+
+ "\u01b5\3\2\2\2\u01b7\u01b8\3\2\2\2\u01b8\u01bf\3\2\2\2\u01b9\u01b7\3\2"+
+ "\2\2\u01ba\u01bc\7\b\2\2\u01bb\u01bd\7O\2\2\u01bc\u01bb\3\2\2\2\u01bc"+
+ "\u01bd\3\2\2\2\u01bd\u01be\3\2\2\2\u01be\u01c0\7P\2\2\u01bf\u01ba\3\2"+
+ "\2\2\u01bf\u01c0\3\2\2\2\u01c0\u01c1\3\2\2\2\u01c1\u01c2\5\64\33\2\u01c2"+
+ "M\3\2\2\2\u01c3\u01c4\7\u0081\2\2\u01c4\u01c5\5\f\7\2\u01c5\u01c6\5&\24"+
+ "\2\u01c6\u01c7\5\64\33\2\u01c7O\3\2\2\2\u01c8\u01c9\7\u0083\2\2\u01c9"+
+ "\u01ca\5\f\7\2\u01ca\u01cb\5\20\t\2\u01cb\u01cc\5\64\33\2\u01ccQ\3\2\2"+
+ "\2\u01cd\u01d5\7]\2\2\u01ce\u01d5\5J&\2\u01cf\u01d5\5L\'\2\u01d0\u01d5"+
+ "\5N(\2\u01d1\u01d5\5P)\2\u01d2\u01d5\5H%\2\u01d3\u01d5\5\64\33\2\u01d4"+
+ "\u01cd\3\2\2\2\u01d4\u01ce\3\2\2\2\u01d4\u01cf\3\2\2\2\u01d4\u01d0\3\2"+
+ "\2\2\u01d4\u01d1\3\2\2\2\u01d4\u01d2\3\2\2\2\u01d4\u01d3\3\2\2\2\u01d5"+
+ "S\3\2\2\28WZbejm\u00c5\u00cb\u00cf\u00d1\u00d5\u00da\u00df\u00f5\u00f9"+
+ "\u00fc\u0105\u010b\u010f\u0114\u011a\u011d\u0120\u0123\u0126\u0130\u0138"+
+ "\u013a\u0140\u0142\u0148\u014c\u014f\u0153\u0159\u0168\u016b\u0171\u0181"+
+ "\u0184\u0187\u0189\u018d\u018f\u0194\u0196\u0199\u01a5\u01a7\u01b5\u01b7"+
+ "\u01bc\u01bf\u01d4";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserBaseVisitor.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserBaseVisitor.java
index 6f9fa230..c57b0f6b 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserBaseVisitor.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserBaseVisitor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from copybookParser.g4 by ANTLR 4.8
+// Generated from copybookParser.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserVisitor.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserVisitor.java
index 93ef1e7e..7d526598 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserVisitor.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParserVisitor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from copybookParser.g4 by ANTLR 4.8
+// Generated from copybookParser.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonBaseVisitor.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonBaseVisitor.java
index cc734738..c102ce93 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonBaseVisitor.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonBaseVisitor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from json.g4 by ANTLR 4.8
+// Generated from json.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonLexer.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonLexer.java
index 38da8c8c..6ccebe94 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonLexer.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonLexer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from json.g4 by ANTLR 4.8
+// Generated from json.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonParser.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonParser.java
index d86c6aa8..e925c94a 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonParser.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonParser.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from json.g4 by ANTLR 4.8
+// Generated from json.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonVisitor.java b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonVisitor.java
index 15fbad29..10f8a931 100644
--- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonVisitor.java
+++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/jsonVisitor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-// Generated from json.g4 by ANTLR 4.8
+// Generated from json.g4 by ANTLR 4.9.3
package za.co.absa.cobrix.cobol.parser.antlr;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/parse/SyntaxErrorsSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/parse/SyntaxErrorsSpec.scala
index cabc80a2..b6940995 100644
--- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/parse/SyntaxErrorsSpec.scala
+++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/parse/SyntaxErrorsSpec.scala
@@ -17,11 +17,15 @@
package za.co.absa.cobrix.cobol.parser.parse
import org.scalatest.funsuite.AnyFunSuite
+import org.slf4j.{Logger, LoggerFactory}
+import za.co.absa.cobrix.cobol.base.SimpleComparisonBase
+import za.co.absa.cobrix.cobol.internal.Logging
import za.co.absa.cobrix.cobol.parser.CopybookParser
import za.co.absa.cobrix.cobol.parser.ast.{Group, Primitive}
import za.co.absa.cobrix.cobol.parser.exceptions.SyntaxErrorException
-class SyntaxErrorsSpec extends AnyFunSuite {
+class SyntaxErrorsSpec extends AnyFunSuite with SimpleComparisonBase {
+ private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass)
test("Test handle group field having a PIC modifier") {
val copyBookContents: String =
@@ -158,7 +162,7 @@ class SyntaxErrorsSpec extends AnyFunSuite {
}
- test ("Test parser tolerance for USAGE clause following PIC without a space"){
+ test("Test parser tolerance for USAGE clause following PIC without a space") {
val copyBookContents: String =
""" 01 GROUP.
| 02 FIELD1 PIC X(2).
@@ -315,6 +319,72 @@ class SyntaxErrorsSpec extends AnyFunSuite {
assert(record.children(2).asInstanceOf[Primitive].dataType.pic == "9(16)V9(16)")
}
+ test("Test field name is a reserved word") {
+ val copyBookContents: String =
+ """ 01 RECORD.
+ | 10 SIGN PIC X(1).
+ | 10 IS PIC X(2).
+ | 10 TRAILING PIC X(3).
+ | 10 FROM PIC 9(1) SIGN IS TRAILING SEPARATE.
+ | 10 TO PIC 9(2).
+ | 10 OF PIC 9(3) REDEFINES TO.
+ | 10 NULL PIC 9(1).
+ | 10 NULLS PIC 9(3) REDEFINES NULL.
+ | 10 PICTURE PIC 9(3).
+ | 10 PIC PICTURE 9(3) REDEFINES PICTURE.
+ | 10 OCCURS PIC X(1) OCCURS 0 TO 2 TIMES.
+ |""".stripMargin
+
+ val expectedLayout =
+ """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH
+ |
+ |1 RECORD 1 1 19 19
+ | 10 SIGN 2 1 1 1
+ | 10 IS 3 2 3 2
+ | 10 TRAILING 4 4 6 3
+ | 10 FROM 5 7 8 2
+ | 10 TO r 6 9 11 3
+ | 10 OF R 7 9 11 3
+ | 10 NULL r 8 12 14 3
+ | 10 NULLS R 9 12 14 3
+ | 10 PICTURE r 10 15 17 3
+ | 10 PIC R 11 15 17 3
+ | 10 OCCURS [] 12 18 19 2
+ |""".stripMargin
+
+ val parsedCopybook = CopybookParser.parseTree(copyBookContents)
+
+ val root = parsedCopybook.ast.children(0).asInstanceOf[Group]
+
+ assert(root.children(0).name == "SIGN")
+ assert(root.children(1).name == "IS")
+ assert(root.children(2).name == "TRAILING")
+ assert(root.children(3).name == "FROM")
+ assert(root.children(4).name == "TO")
+ assert(root.children(5).name == "OF")
+ assert(root.children(6).name == "NULL")
+ assert(root.children(7).name == "NULLS")
+ assert(root.children(8).name == "PICTURE")
+ assert(root.children(9).name == "PIC")
+ assert(root.children(10).name == "OCCURS")
+
+ val layout = parsedCopybook.generateRecordLayoutPositions()
+ assertEqualsMultiline(layout, expectedLayout)
+ }
+
+ test("The reserved word 'REDEFINES' is still not allowed") {
+ val copyBookContents =
+ """ 01 RECORD.
+ | 10 FILED PIC X(1).
+ | 10 REDEFINES PIC X(1).
+ |""".stripMargin
+ val syntaxErrorException = intercept[SyntaxErrorException] {
+ CopybookParser.parseTree(copyBookContents)
+ }
+
+ assert(syntaxErrorException.lineNumber == 3)
+ assert(syntaxErrorException.getMessage.toUpperCase.contains("REDEFINES"))
+ }
}
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index d7585bc1..adb614ef 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -18,7 +18,7 @@ import sbt._
object Dependencies {
private val scodecCoreVersion = "1.11.4"
- private val antlrValue = "4.8"
+ private val antlrValue = "4.9.3"
private val slf4jVersion = "1.7.25"
private val jacksonVersion = "2.15.4"