#727 Fix parsing of '88 VALUE1 VALUE +999.9999.' statement that threw 'SytnaxErrorException'. - #866
Conversation
… 'SytnaxErrorException'.
JaCoCo code coverage report - 'cobol-parser'
|
JaCoCo code coverage report - 'spark-cobol'
|
WalkthroughThe ANTLR grammar now accepts optionally signed ChangesExplicit decimal parsing
Estimated code review effort: 2 (Simple) | ~10 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.java`:
- Around line 3866-4067: Configure the ANTLR4 Maven generation task in pom.xml,
adding the ANTLR plugin and grammar source setup so copybookParser.g4 generates
copybookParser.java during the build before compilation. Keep the generated
parser synchronized with the grammar and retain antlr4-runtime for runtime
usage.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: b25ae6e1-aa7a-45ba-b16c-7c866a52326b
📒 Files selected for processing (3)
cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.g4cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.javacobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/parse/SyntaxErrorsSpec.scala
| public static final String _serializedATN = | ||
| "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u008a\u01d7\4\2\t"+ | ||
| "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u008a\u01db\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"+ | ||
| "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ | ||
| "\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\3\7\3\7\3\7\3\7\3\7\3\7"+ | ||
| "f\n\4\3\4\3\4\3\4\5\4k\n\4\3\4\3\4\5\4o\n\4\3\4\5\4r\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\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"; | ||
| "\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\u00ca\n\7\3\b\3"+ | ||
| "\b\3\t\3\t\5\t\u00d0\n\t\3\t\3\t\5\t\u00d4\n\t\5\t\u00d6\n\t\3\t\3\t\5"+ | ||
| "\t\u00da\n\t\3\t\7\t\u00dd\n\t\f\t\16\t\u00e0\13\t\3\n\3\n\5\n\u00e4\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\u00fa\n\r\3\16\3\16\5\16\u00fe\n\16\3\16\5\16\u0101"+ | ||
| "\n\16\3\16\3\16\3\17\3\17\3\17\3\20\3\20\5\20\u010a\n\20\3\20\3\20\3\21"+ | ||
| "\3\21\5\21\u0110\n\21\3\21\3\21\5\21\u0114\n\21\3\21\7\21\u0117\n\21\f"+ | ||
| "\21\16\21\u011a\13\21\3\22\3\22\3\22\5\22\u011f\n\22\3\22\5\22\u0122\n"+ | ||
| "\22\3\22\5\22\u0125\n\22\3\22\5\22\u0128\n\22\3\22\5\22\u012b\n\22\3\23"+ | ||
| "\3\23\3\23\3\24\3\24\3\24\3\24\3\24\5\24\u0135\n\24\3\25\3\25\3\26\3\26"+ | ||
| "\3\27\3\27\5\27\u013d\n\27\5\27\u013f\n\27\3\27\3\27\3\30\3\30\5\30\u0145"+ | ||
| "\n\30\5\30\u0147\n\30\3\30\3\30\3\31\3\31\5\31\u014d\n\31\3\31\3\31\5"+ | ||
| "\31\u0151\n\31\3\31\5\31\u0154\n\31\3\32\3\32\5\32\u0158\n\32\3\33\3\33"+ | ||
| "\3\34\3\34\5\34\u015e\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\u016d\n\35\3\36\5\36\u0170\n\36\3\36\3\36\3"+ | ||
| "\36\3\36\5\36\u0176\n\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3#\3#\3#"+ | ||
| "\3#\5#\u0186\n#\3#\5#\u0189\n#\3#\5#\u018c\n#\5#\u018e\n#\3#\3#\5#\u0192"+ | ||
| "\n#\5#\u0194\n#\3#\3#\3#\5#\u0199\n#\5#\u019b\n#\3#\5#\u019e\n#\3$\3$"+ | ||
| "\3%\3%\3&\3&\3&\3&\3&\3&\7&\u01aa\n&\f&\16&\u01ad\13&\3&\3&\3\'\3\'\3"+ | ||
| "\'\3\'\3\'\3\'\3\'\3\'\3\'\7\'\u01ba\n\'\f\'\16\'\u01bd\13\'\3\'\3\'\5"+ | ||
| "\'\u01c1\n\'\3\'\5\'\u01c4\n\'\3\'\3\'\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3"+ | ||
| "*\3*\3*\3*\3*\3*\3*\5*\u01d9\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\u0262"+ | ||
| "\2U\3\2\2\2\4b\3\2\2\2\6q\3\2\2\2\bs\3\2\2\2\nu\3\2\2\2\f\u00c9\3\2\2"+ | ||
| "\2\16\u00cb\3\2\2\2\20\u00d5\3\2\2\2\22\u00e1\3\2\2\2\24\u00e5\3\2\2\2"+ | ||
| "\26\u00e7\3\2\2\2\30\u00f9\3\2\2\2\32\u00fb\3\2\2\2\34\u0104\3\2\2\2\36"+ | ||
| "\u0107\3\2\2\2 \u010d\3\2\2\2\"\u011b\3\2\2\2$\u012c\3\2\2\2&\u012f\3"+ | ||
| "\2\2\2(\u0136\3\2\2\2*\u0138\3\2\2\2,\u013e\3\2\2\2.\u0146\3\2\2\2\60"+ | ||
| "\u014a\3\2\2\2\62\u0155\3\2\2\2\64\u0159\3\2\2\2\66\u015d\3\2\2\28\u016c"+ | ||
| "\3\2\2\2:\u0175\3\2\2\2<\u0177\3\2\2\2>\u0179\3\2\2\2@\u017b\3\2\2\2B"+ | ||
| "\u017d\3\2\2\2D\u019d\3\2\2\2F\u019f\3\2\2\2H\u01a1\3\2\2\2J\u01a3\3\2"+ | ||
| "\2\2L\u01b0\3\2\2\2N\u01c7\3\2\2\2P\u01cc\3\2\2\2R\u01d8\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\2gr\7\u0086\2\2hr\7P\2\2ik"+ | ||
| "\5\66\34\2ji\3\2\2\2jk\3\2\2\2kl\3\2\2\2lr\5\b\5\2mo\5\66\34\2nm\3\2\2"+ | ||
| "\2no\3\2\2\2op\3\2\2\2pr\7j\2\2qe\3\2\2\2qh\3\2\2\2qj\3\2\2\2qn\3\2\2"+ | ||
| "\2r\7\3\2\2\2st\t\2\2\2t\t\3\2\2\2uv\t\3\2\2v\13\3\2\2\2w\u00ca\7\u0088"+ | ||
| "\2\2x\u00ca\7\3\2\2y\u00ca\7_\2\2z\u00ca\7`\2\2{\u00ca\7f\2\2|\u00ca\7"+ | ||
| "a\2\2}\u00ca\3\2\2\2~\u00ca\7b\2\2\177\u00ca\7c\2\2\u0080\u00ca\7g\2\2"+ | ||
| "\u0081\u00ca\7d\2\2\u0082\u00ca\7h\2\2\u0083\u00ca\7e\2\2\u0084\u00ca"+ | ||
| "\7i\2\2\u0085\u00ca\7\u0087\2\2\u0086\u00ca\7B\2\2\u0087\u00ca\7,\2\2"+ | ||
| "\u0088\u00ca\7I\2\2\u0089\u00ca\7>\2\2\u008a\u00ca\7\n\2\2\u008b\u00ca"+ | ||
| "\7\6\2\2\u008c\u00ca\7 \2\2\u008d\u00ca\7+\2\2\u008e\u00ca\7\7\2\2\u008f"+ | ||
| "\u00ca\7!\2\2\u0090\u00ca\7\66\2\2\u0091\u00ca\7\25\2\2\u0092\u00ca\7"+ | ||
| "\26\2\2\u0093\u00ca\7\27\2\2\u0094\u00ca\7\30\2\2\u0095\u00ca\7\31\2\2"+ | ||
| "\u0096\u00ca\7\32\2\2\u0097\u00ca\7\33\2\2\u0098\u00ca\7\34\2\2\u0099"+ | ||
| "\u00ca\7\35\2\2\u009a\u00ca\7\f\2\2\u009b\u00ca\7\r\2\2\u009c\u00ca\7"+ | ||
| "\16\2\2\u009d\u00ca\7\17\2\2\u009e\u00ca\7\20\2\2\u009f\u00ca\7\21\2\2"+ | ||
| "\u00a0\u00ca\7\22\2\2\u00a1\u00ca\7\23\2\2\u00a2\u00ca\7\24\2\2\u00a3"+ | ||
| "\u00ca\7;\2\2\u00a4\u00ca\7<\2\2\u00a5\u00ca\7M\2\2\u00a6\u00ca\7N\2\2"+ | ||
| "\u00a7\u00ca\7\64\2\2\u00a8\u00ca\7G\2\2\u00a9\u00ca\7\37\2\2\u00aa\u00ca"+ | ||
| "\7\'\2\2\u00ab\u00ca\7\b\2\2\u00ac\u00ca\7P\2\2\u00ad\u00ca\7Q\2\2\u00ae"+ | ||
| "\u00ca\7R\2\2\u00af\u00ca\7C\2\2\u00b0\u00ca\7D\2\2\u00b1\u00ca\7%\2\2"+ | ||
| "\u00b2\u00ca\7&\2\2\u00b3\u00ca\7.\2\2\u00b4\u00ca\7/\2\2\u00b5\u00ca"+ | ||
| "\7\60\2\2\u00b6\u00ca\7\61\2\2\u00b7\u00ca\79\2\2\u00b8\u00ca\7:\2\2\u00b9"+ | ||
| "\u00ca\7*\2\2\u00ba\u00ca\7)\2\2\u00bb\u00ca\7=\2\2\u00bc\u00ca\78\2\2"+ | ||
| "\u00bd\u00ca\7\67\2\2\u00be\u00ca\7J\2\2\u00bf\u00ca\7#\2\2\u00c0\u00ca"+ | ||
| "\7\5\2\2\u00c1\u00ca\7(\2\2\u00c2\u00ca\7\65\2\2\u00c3\u00ca\7\t\2\2\u00c4"+ | ||
| "\u00ca\7O\2\2\u00c5\u00ca\7H\2\2\u00c6\u00ca\7\4\2\2\u00c7\u00ca\7K\2"+ | ||
| "\2\u00c8\u00ca\7$\2\2\u00c9w\3\2\2\2\u00c9x\3\2\2\2\u00c9y\3\2\2\2\u00c9"+ | ||
| "z\3\2\2\2\u00c9{\3\2\2\2\u00c9|\3\2\2\2\u00c9}\3\2\2\2\u00c9~\3\2\2\2"+ | ||
| "\u00c9\177\3\2\2\2\u00c9\u0080\3\2\2\2\u00c9\u0081\3\2\2\2\u00c9\u0082"+ | ||
| "\3\2\2\2\u00c9\u0083\3\2\2\2\u00c9\u0084\3\2\2\2\u00c9\u0085\3\2\2\2\u00c9"+ | ||
| "\u0086\3\2\2\2\u00c9\u0087\3\2\2\2\u00c9\u0088\3\2\2\2\u00c9\u0089\3\2"+ | ||
| "\2\2\u00c9\u008a\3\2\2\2\u00c9\u008b\3\2\2\2\u00c9\u008c\3\2\2\2\u00c9"+ | ||
| "\u008d\3\2\2\2\u00c9\u008e\3\2\2\2\u00c9\u008f\3\2\2\2\u00c9\u0090\3\2"+ | ||
| "\2\2\u00c9\u0091\3\2\2\2\u00c9\u0092\3\2\2\2\u00c9\u0093\3\2\2\2\u00c9"+ | ||
| "\u0094\3\2\2\2\u00c9\u0095\3\2\2\2\u00c9\u0096\3\2\2\2\u00c9\u0097\3\2"+ | ||
| "\2\2\u00c9\u0098\3\2\2\2\u00c9\u0099\3\2\2\2\u00c9\u009a\3\2\2\2\u00c9"+ | ||
| "\u009b\3\2\2\2\u00c9\u009c\3\2\2\2\u00c9\u009d\3\2\2\2\u00c9\u009e\3\2"+ | ||
| "\2\2\u00c9\u009f\3\2\2\2\u00c9\u00a0\3\2\2\2\u00c9\u00a1\3\2\2\2\u00c9"+ | ||
| "\u00a2\3\2\2\2\u00c9\u00a3\3\2\2\2\u00c9\u00a4\3\2\2\2\u00c9\u00a5\3\2"+ | ||
| "\2\2\u00c9\u00a6\3\2\2\2\u00c9\u00a7\3\2\2\2\u00c9\u00a8\3\2\2\2\u00c9"+ | ||
| "\u00a9\3\2\2\2\u00c9\u00aa\3\2\2\2\u00c9\u00ab\3\2\2\2\u00c9\u00ac\3\2"+ | ||
| "\2\2\u00c9\u00ad\3\2\2\2\u00c9\u00ae\3\2\2\2\u00c9\u00af\3\2\2\2\u00c9"+ | ||
| "\u00b0\3\2\2\2\u00c9\u00b1\3\2\2\2\u00c9\u00b2\3\2\2\2\u00c9\u00b3\3\2"+ | ||
| "\2\2\u00c9\u00b4\3\2\2\2\u00c9\u00b5\3\2\2\2\u00c9\u00b6\3\2\2\2\u00c9"+ | ||
| "\u00b7\3\2\2\2\u00c9\u00b8\3\2\2\2\u00c9\u00b9\3\2\2\2\u00c9\u00ba\3\2"+ | ||
| "\2\2\u00c9\u00bb\3\2\2\2\u00c9\u00bc\3\2\2\2\u00c9\u00bd\3\2\2\2\u00c9"+ | ||
| "\u00be\3\2\2\2\u00c9\u00bf\3\2\2\2\u00c9\u00c0\3\2\2\2\u00c9\u00c1\3\2"+ | ||
| "\2\2\u00c9\u00c2\3\2\2\2\u00c9\u00c3\3\2\2\2\u00c9\u00c4\3\2\2\2\u00c9"+ | ||
| "\u00c5\3\2\2\2\u00c9\u00c6\3\2\2\2\u00c9\u00c7\3\2\2\2\u00c9\u00c8\3\2"+ | ||
| "\2\2\u00ca\r\3\2\2\2\u00cb\u00cc\7\3\2\2\u00cc\17\3\2\2\2\u00cd\u00cf"+ | ||
| "\7M\2\2\u00ce\u00d0\7(\2\2\u00cf\u00ce\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0"+ | ||
| "\u00d6\3\2\2\2\u00d1\u00d3\7N\2\2\u00d2\u00d4\7\5\2\2\u00d3\u00d2\3\2"+ | ||
| "\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d6\3\2\2\2\u00d5\u00cd\3\2\2\2\u00d5"+ | ||
| "\u00d1\3\2\2\2\u00d6\u00d7\3\2\2\2\u00d7\u00de\5\22\n\2\u00d8\u00da\7"+ | ||
| "T\2\2\u00d9\u00d8\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\u00db\3\2\2\2\u00db"+ | ||
| "\u00dd\5\22\n\2\u00dc\u00d9\3\2\2\2\u00dd\u00e0\3\2\2\2\u00de\u00dc\3"+ | ||
| "\2\2\2\u00de\u00df\3\2\2\2\u00df\21\3\2\2\2\u00e0\u00de\3\2\2\2\u00e1"+ | ||
| "\u00e3\5\24\13\2\u00e2\u00e4\5\26\f\2\u00e3\u00e2\3\2\2\2\u00e3\u00e4"+ | ||
| "\3\2\2\2\u00e4\23\3\2\2\2\u00e5\u00e6\5\4\3\2\u00e6\25\3\2\2\2\u00e7\u00e8"+ | ||
| "\5\16\b\2\u00e8\u00e9\5\4\3\2\u00e9\27\3\2\2\2\u00ea\u00eb\7\4\2\2\u00eb"+ | ||
| "\u00fa\5\4\3\2\u00ec\u00fa\7%\2\2\u00ed\u00fa\7&\2\2\u00ee\u00fa\7.\2"+ | ||
| "\2\u00ef\u00fa\7/\2\2\u00f0\u00fa\7\60\2\2\u00f1\u00fa\7\61\2\2\u00f2"+ | ||
| "\u00fa\79\2\2\u00f3\u00fa\7:\2\2\u00f4\u00fa\7C\2\2\u00f5\u00fa\7D\2\2"+ | ||
| "\u00f6\u00fa\7P\2\2\u00f7\u00fa\7Q\2\2\u00f8\u00fa\7R\2\2\u00f9\u00ea"+ | ||
| "\3\2\2\2\u00f9\u00ec\3\2\2\2\u00f9\u00ed\3\2\2\2\u00f9\u00ee\3\2\2\2\u00f9"+ | ||
| "\u00ef\3\2\2\2\u00f9\u00f0\3\2\2\2\u00f9\u00f1\3\2\2\2\u00f9\u00f2\3\2"+ | ||
| "\2\2\u00f9\u00f3\3\2\2\2\u00f9\u00f4\3\2\2\2\u00f9\u00f5\3\2\2\2\u00f9"+ | ||
| "\u00f6\3\2\2\2\u00f9\u00f7\3\2\2\2\u00f9\u00f8\3\2\2\2\u00fa\31\3\2\2"+ | ||
| "\2\u00fb\u00fd\t\4\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\u0101\7(\2\2\u0100\u00ff\3\2\2\2\u0100"+ | ||
| "\u0101\3\2\2\2\u0101\u0102\3\2\2\2\u0102\u0103\5\f\7\2\u0103\33\3\2\2"+ | ||
| "\2\u0104\u0105\7H\2\2\u0105\u0106\5\b\5\2\u0106\35\3\2\2\2\u0107\u0109"+ | ||
| "\7\37\2\2\u0108\u010a\7\65\2\2\u0109\u0108\3\2\2\2\u0109\u010a\3\2\2\2"+ | ||
| "\u010a\u010b\3\2\2\2\u010b\u010c\5\f\7\2\u010c\37\3\2\2\2\u010d\u010f"+ | ||
| "\7\'\2\2\u010e\u0110\7\t\2\2\u010f\u010e\3\2\2\2\u010f\u0110\3\2\2\2\u0110"+ | ||
| "\u0111\3\2\2\2\u0111\u0118\5\f\7\2\u0112\u0114\7T\2\2\u0113\u0112\3\2"+ | ||
| "\2\2\u0113\u0114\3\2\2\2\u0114\u0115\3\2\2\2\u0115\u0117\7\u0088\2\2\u0116"+ | ||
| "\u0113\3\2\2\2\u0117\u011a\3\2\2\2\u0118\u0116\3\2\2\2\u0118\u0119\3\2"+ | ||
| "\2\2\u0119!\3\2\2\2\u011a\u0118\3\2\2\2\u011b\u011c\7\64\2\2\u011c\u011e"+ | ||
| "\5\b\5\2\u011d\u011f\5\34\17\2\u011e\u011d\3\2\2\2\u011e\u011f\3\2\2\2"+ | ||
| "\u011f\u0121\3\2\2\2\u0120\u0122\7G\2\2\u0121\u0120\3\2\2\2\u0121\u0122"+ | ||
| "\3\2\2\2\u0122\u0124\3\2\2\2\u0123\u0125\5\36\20\2\u0124\u0123\3\2\2\2"+ | ||
| "\u0124\u0125\3\2\2\2\u0125\u0127\3\2\2\2\u0126\u0128\5\32\16\2\u0127\u0126"+ | ||
| "\3\2\2\2\u0127\u0128\3\2\2\2\u0128\u012a\3\2\2\2\u0129\u012b\5 \21\2\u012a"+ | ||
| "\u0129\3\2\2\2\u012a\u012b\3\2\2\2\u012b#\3\2\2\2\u012c\u012d\7;\2\2\u012d"+ | ||
| "\u012e\5\f\7\2\u012e%\3\2\2\2\u012f\u0130\7<\2\2\u0130\u0134\5\f\7\2\u0131"+ | ||
| "\u0132\5\16\b\2\u0132\u0133\5\f\7\2\u0133\u0135\3\2\2\2\u0134\u0131\3"+ | ||
| "\2\2\2\u0134\u0135\3\2\2\2\u0135\'\3\2\2\2\u0136\u0137\t\5\2\2\u0137)"+ | ||
| "\3\2\2\2\u0138\u0139\t\6\2\2\u0139+\3\2\2\2\u013a\u013c\7K\2\2\u013b\u013d"+ | ||
| "\7(\2\2\u013c\u013b\3\2\2\2\u013c\u013d\3\2\2\2\u013d\u013f\3\2\2\2\u013e"+ | ||
| "\u013a\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0140\3\2\2\2\u0140\u0141\5("+ | ||
| "\25\2\u0141-\3\2\2\2\u0142\u0144\7K\2\2\u0143\u0145\7(\2\2\u0144\u0143"+ | ||
| "\3\2\2\2\u0144\u0145\3\2\2\2\u0145\u0147\3\2\2\2\u0146\u0142\3\2\2\2\u0146"+ | ||
| "\u0147\3\2\2\2\u0147\u0148\3\2\2\2\u0148\u0149\5*\26\2\u0149/\3\2\2\2"+ | ||
| "\u014a\u014c\7B\2\2\u014b\u014d\7(\2\2\u014c\u014b\3\2\2\2\u014c\u014d"+ | ||
| "\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u0150\t\7\2\2\u014f\u0151\7>\2\2\u0150"+ | ||
| "\u014f\3\2\2\2\u0150\u0151\3\2\2\2\u0151\u0153\3\2\2\2\u0152\u0154\7\n"+ | ||
| "\2\2\u0153\u0152\3\2\2\2\u0153\u0154\3\2\2\2\u0154\61\3\2\2\2\u0155\u0157"+ | ||
| "\t\b\2\2\u0156\u0158\7=\2\2\u0157\u0156\3\2\2\2\u0157\u0158\3\2\2\2\u0158"+ | ||
| "\63\3\2\2\2\u0159\u015a\7\\\2\2\u015a\65\3\2\2\2\u015b\u015e\7X\2\2\u015c"+ | ||
| "\u015e\7W\2\2\u015d\u015b\3\2\2\2\u015d\u015c\3\2\2\2\u015e\67\3\2\2\2"+ | ||
| "\u015f\u016d\7^\2\2\u0160\u016d\7c\2\2\u0161\u016d\7`\2\2\u0162\u016d"+ | ||
| "\7d\2\2\u0163\u016d\7e\2\2\u0164\u016d\7j\2\2\u0165\u016d\7k\2\2\u0166"+ | ||
| "\u016d\7l\2\2\u0167\u016d\7m\2\2\u0168\u016d\7n\2\2\u0169\u016d\7o\2\2"+ | ||
| "\u016a\u016d\7p\2\2\u016b\u016d\7q\2\2\u016c\u015f\3\2\2\2\u016c\u0160"+ | ||
| "\3\2\2\2\u016c\u0161\3\2\2\2\u016c\u0162\3\2\2\2\u016c\u0163\3\2\2\2\u016c"+ | ||
| "\u0164\3\2\2\2\u016c\u0165\3\2\2\2\u016c\u0166\3\2\2\2\u016c\u0167\3\2"+ | ||
| "\2\2\u016c\u0168\3\2\2\2\u016c\u0169\3\2\2\2\u016c\u016a\3\2\2\2\u016c"+ | ||
| "\u016b\3\2\2\2\u016d9\3\2\2\2\u016e\u0170\5\66\34\2\u016f\u016e\3\2\2"+ | ||
| "\2\u016f\u0170\3\2\2\2\u0170\u0171\3\2\2\2\u0171\u0176\58\35\2\u0172\u0173"+ | ||
| "\58\35\2\u0173\u0174\5\66\34\2\u0174\u0176\3\2\2\2\u0175\u016f\3\2\2\2"+ | ||
| "\u0175\u0172\3\2\2\2\u0176;\3\2\2\2\u0177\u0178\t\t\2\2\u0178=\3\2\2\2"+ | ||
| "\u0179\u017a\t\n\2\2\u017a?\3\2\2\2\u017b\u017c\t\13\2\2\u017cA\3\2\2"+ | ||
| "\2\u017d\u017e\t\f\2\2\u017eC\3\2\2\2\u017f\u018d\5B\"\2\u0180\u018e\5"+ | ||
| "<\37\2\u0181\u018e\5@!\2\u0182\u018e\5> \2\u0183\u0185\5:\36\2\u0184\u0186"+ | ||
| "\5,\27\2\u0185\u0184\3\2\2\2\u0185\u0186\3\2\2\2\u0186\u018c\3\2\2\2\u0187"+ | ||
| "\u0189\5,\27\2\u0188\u0187\3\2\2\2\u0188\u0189\3\2\2\2\u0189\u018a\3\2"+ | ||
| "\2\2\u018a\u018c\5:\36\2\u018b\u0183\3\2\2\2\u018b\u0188\3\2\2\2\u018c"+ | ||
| "\u018e\3\2\2\2\u018d\u0180\3\2\2\2\u018d\u0181\3\2\2\2\u018d\u0182\3\2"+ | ||
| "\2\2\u018d\u018b\3\2\2\2\u018e\u019e\3\2\2\2\u018f\u0191\7K\2\2\u0190"+ | ||
| "\u0192\7(\2\2\u0191\u0190\3\2\2\2\u0191\u0192\3\2\2\2\u0192\u0194\3\2"+ | ||
| "\2\2\u0193\u018f\3\2\2\2\u0193\u0194\3\2\2\2\u0194\u0195\3\2\2\2\u0195"+ | ||
| "\u019e\7\16\2\2\u0196\u0198\7K\2\2\u0197\u0199\7(\2\2\u0198\u0197\3\2"+ | ||
| "\2\2\u0198\u0199\3\2\2\2\u0199\u019b\3\2\2\2\u019a\u0196\3\2\2\2\u019a"+ | ||
| "\u019b\3\2\2\2\u019b\u019c\3\2\2\2\u019c\u019e\7\17\2\2\u019d\u017f\3"+ | ||
| "\2\2\2\u019d\u0193\3\2\2\2\u019d\u019a\3\2\2\2\u019eE\3\2\2\2\u019f\u01a0"+ | ||
| "\t\r\2\2\u01a0G\3\2\2\2\u01a1\u01a2\t\16\2\2\u01a2I\3\2\2\2\u01a3\u01a4"+ | ||
| "\5F$\2\u01a4\u01ab\5\f\7\2\u01a5\u01aa\5$\23\2\u01a6\u01aa\5.\30\2\u01a7"+ | ||
| "\u01aa\5\"\22\2\u01a8\u01aa\5\20\t\2\u01a9\u01a5\3\2\2\2\u01a9\u01a6\3"+ | ||
| "\2\2\2\u01a9\u01a7\3\2\2\2\u01a9\u01a8\3\2\2\2\u01aa\u01ad\3\2\2\2\u01ab"+ | ||
| "\u01a9\3\2\2\2\u01ab\u01ac\3\2\2\2\u01ac\u01ae\3\2\2\2\u01ad\u01ab\3\2"+ | ||
| "\2\2\u01ae\u01af\5\64\33\2\u01afK\3\2\2\2\u01b0\u01b1\5F$\2\u01b1\u01bb"+ | ||
| "\5\f\7\2\u01b2\u01ba\5\62\32\2\u01b3\u01ba\5\"\22\2\u01b4\u01ba\5D#\2"+ | ||
| "\u01b5\u01ba\5$\23\2\u01b6\u01ba\5,\27\2\u01b7\u01ba\5\20\t\2\u01b8\u01ba"+ | ||
| "\5\60\31\2\u01b9\u01b2\3\2\2\2\u01b9\u01b3\3\2\2\2\u01b9\u01b4\3\2\2\2"+ | ||
| "\u01b9\u01b5\3\2\2\2\u01b9\u01b6\3\2\2\2\u01b9\u01b7\3\2\2\2\u01b9\u01b8"+ | ||
| "\3\2\2\2\u01ba\u01bd\3\2\2\2\u01bb\u01b9\3\2\2\2\u01bb\u01bc\3\2\2\2\u01bc"+ | ||
| "\u01c3\3\2\2\2\u01bd\u01bb\3\2\2\2\u01be\u01c0\7\b\2\2\u01bf\u01c1\7O"+ | ||
| "\2\2\u01c0\u01bf\3\2\2\2\u01c0\u01c1\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2"+ | ||
| "\u01c4\7P\2\2\u01c3\u01be\3\2\2\2\u01c3\u01c4\3\2\2\2\u01c4\u01c5\3\2"+ | ||
| "\2\2\u01c5\u01c6\5\64\33\2\u01c6M\3\2\2\2\u01c7\u01c8\7\u0081\2\2\u01c8"+ | ||
| "\u01c9\5\f\7\2\u01c9\u01ca\5&\24\2\u01ca\u01cb\5\64\33\2\u01cbO\3\2\2"+ | ||
| "\2\u01cc\u01cd\7\u0083\2\2\u01cd\u01ce\5\f\7\2\u01ce\u01cf\5\20\t\2\u01cf"+ | ||
| "\u01d0\5\64\33\2\u01d0Q\3\2\2\2\u01d1\u01d9\7]\2\2\u01d2\u01d9\5J&\2\u01d3"+ | ||
| "\u01d9\5L\'\2\u01d4\u01d9\5N(\2\u01d5\u01d9\5P)\2\u01d6\u01d9\5H%\2\u01d7"+ | ||
| "\u01d9\5\64\33\2\u01d8\u01d1\3\2\2\2\u01d8\u01d2\3\2\2\2\u01d8\u01d3\3"+ | ||
| "\2\2\2\u01d8\u01d4\3\2\2\2\u01d8\u01d5\3\2\2\2\u01d8\u01d6\3\2\2\2\u01d8"+ | ||
| "\u01d7\3\2\2\2\u01d9S\3\2\2\29WZbejnq\u00c9\u00cf\u00d3\u00d5\u00d9\u00de"+ | ||
| "\u00e3\u00f9\u00fd\u0100\u0109\u010f\u0113\u0118\u011e\u0121\u0124\u0127"+ | ||
| "\u012a\u0134\u013c\u013e\u0144\u0146\u014c\u0150\u0153\u0157\u015d\u016c"+ | ||
| "\u016f\u0175\u0185\u0188\u018b\u018d\u0191\u0193\u0198\u019a\u019d\u01a9"+ | ||
| "\u01ab\u01b9\u01bb\u01c0\u01c3\u01d8"; |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check whether ANTLR4 code generation is wired into the build,
# so this generated parser file is produced automatically rather than hand-edited.
set -euo pipefail
echo "== Search build files for antlr4 plugin configuration =="
rg -n -i 'antlr' --glob 'build.sbt' --glob '*.sbt' --glob 'pom.xml' --glob 'plugins.sbt' . 2>/dev/null || true
echo "== Locate the grammar file and generated parser to compare timestamps/paths =="
fd -a 'copybookParser.g4'
fd -a 'copybookParser.java'Repository: AbsaOSS/cobrix
Length of output: 1002
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== cobol-parser/pom.xml relevant sections =="
wc -l cobol-parser/pom.xml build.sbt
sed -n '1,220p' cobol-parser/pom.xml
echo
echo "== build.sbt ANTLR references with context =="
sed -n '55,170p' build.sbt
echo
echo "== ANTLR plugin references in repository =="
rg -n -i 'antlr4-maven-plugin|org.antlr.apache|antlr4|antlr' --glob 'pom.xml' --glob '*.xml' --glob '*.sbt' --glob 'build.groovy' --glob '*.gradle' .Repository: AbsaOSS/cobrix
Length of output: 7324
Wire the generated parser into ANTLR4 code generation.
cobol-parser/pom.xml only declares antlr4-runtime, and the ANTLR plugin is not configured. Add an ANTLR4 build task that generates copybookParser.java from copybookParser.g4 before committing the regenerated parser file.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/antlr/copybookParser.java`
around lines 3866 - 4067, Configure the ANTLR4 Maven generation task in pom.xml,
adding the ANTLR plugin and grammar source setup so copybookParser.g4 generates
copybookParser.java during the build before compilation. Keep the generated
parser synchronized with the grammar and retain antlr4-runtime for runtime
usage.
Closes #727
Summary by CodeRabbit
New Features
Bug Fixes