identifier() {
+ return getRuleContexts(IdentifierContext.class);
+ }
+
+ public IdentifierContext identifier(int i) {
+ return getRuleContext(IdentifierContext.class, i);
+ }
+
+ public TerminalNode ASSIGN() {
+ return getToken(ANTLRv4Parser.ASSIGN, 0);
+ }
+
+ public TerminalNode STRING_LITERAL() {
+ return getToken(ANTLRv4Parser.STRING_LITERAL, 0);
+ }
+
+ public ElementOptionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_elementOption;
+ }
+
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof ANTLRv4ParserListener)
+ ((ANTLRv4ParserListener) listener).enterElementOption(this);
+ }
+
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof ANTLRv4ParserListener)
+ ((ANTLRv4ParserListener) listener).exitElementOption(this);
+ }
+ }
+
+ public final ElementOptionContext elementOption() throws RecognitionException {
+ ElementOptionContext _localctx = new ElementOptionContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_elementOption);
+ try {
+ setState(639);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 84, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(632);
+ identifier();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(633);
+ identifier();
+ setState(634);
+ match(ASSIGN);
+ setState(637);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case TOKEN_REF:
+ case RULE_REF:
+ {
+ setState(635);
+ identifier();
+ }
+ break;
+ case STRING_LITERAL:
+ {
+ setState(636);
+ match(STRING_LITERAL);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IdentifierContext extends ParserRuleContext {
+ public TerminalNode RULE_REF() {
+ return getToken(ANTLRv4Parser.RULE_REF, 0);
+ }
+
+ public TerminalNode TOKEN_REF() {
+ return getToken(ANTLRv4Parser.TOKEN_REF, 0);
+ }
+
+ public IdentifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_identifier;
+ }
+
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if (listener instanceof ANTLRv4ParserListener)
+ ((ANTLRv4ParserListener) listener).enterIdentifier(this);
+ }
+
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if (listener instanceof ANTLRv4ParserListener)
+ ((ANTLRv4ParserListener) listener).exitIdentifier(this);
+ }
+ }
+
+ public final IdentifierContext identifier() throws RecognitionException {
+ IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_identifier);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(641);
+ _la = _input.LA(1);
+ if (!(_la == TOKEN_REF || _la == RULE_REF)) {
+ _errHandler.recoverInline(this);
+ } else {
+ if (_input.LA(1) == Token.EOF) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static final String _serializedATN =
+ "\u0004\u0001>\u0284\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"
+ + "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"
+ + "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"
+ + "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"
+ + "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"
+ + "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"
+ + "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"
+ + "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"
+ + "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"
+ + "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"
+ + "\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"
+ + "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"
+ + "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"
+ + "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"
+ + "2\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u00076\u0002"
+ + "7\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007;\u0002"
+ + "<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0001\u0000\u0005\u0000"
+ + "\u0082\b\u0000\n\u0000\f\u0000\u0085\t\u0000\u0001\u0000\u0001\u0000\u0005"
+ + "\u0000\u0089\b\u0000\n\u0000\f\u0000\u008c\t\u0000\u0001\u0000\u0001\u0000"
+ + "\u0005\u0000\u0090\b\u0000\n\u0000\f\u0000\u0093\t\u0000\u0001\u0000\u0001"
+ + "\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001"
+ + "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u00a0\b\u0002\u0001"
+ + "\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0003\u0003\u00a7"
+ + "\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0005"
+ + "\u0004\u00ae\b\u0004\n\u0004\f\u0004\u00b1\t\u0004\u0001\u0004\u0001\u0004"
+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006"
+ + "\u0001\u0006\u0005\u0006\u00bc\b\u0006\n\u0006\f\u0006\u00bf\t\u0006\u0001"
+ + "\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u00c4\b\u0006\u0001\u0007\u0001"
+ + "\u0007\u0001\u0007\u0001\u0007\u0005\u0007\u00ca\b\u0007\n\u0007\f\u0007"
+ + "\u00cd\t\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b"
+ + "\u0001\b\u0003\b\u00d6\b\b\u0001\t\u0001\t\u0001\t\u0003\t\u00db\b\t\u0001"
+ + "\t\u0001\t\u0001\n\u0001\n\u0001\n\u0003\n\u00e2\b\n\u0001\n\u0001\n\u0001"
+ + "\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u00e9\b\u000b\n\u000b\f\u000b"
+ + "\u00ec\t\u000b\u0001\u000b\u0003\u000b\u00ef\b\u000b\u0001\f\u0001\f\u0001"
+ + "\f\u0001\f\u0003\f\u00f5\b\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001"
+ + "\r\u0003\r\u00fd\b\r\u0001\u000e\u0001\u000e\u0005\u000e\u0101\b\u000e"
+ + "\n\u000e\f\u000e\u0104\t\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"
+ + "\u000f\u0005\u000f\u010a\b\u000f\n\u000f\f\u000f\u010d\t\u000f\u0001\u000f"
+ + "\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0005\u0010"
+ + "\u0115\b\u0010\n\u0010\f\u0010\u0118\t\u0010\u0001\u0011\u0005\u0011\u011b"
+ + "\b\u0011\n\u0011\f\u0011\u011e\t\u0011\u0001\u0012\u0001\u0012\u0003\u0012"
+ + "\u0122\b\u0012\u0001\u0013\u0005\u0013\u0125\b\u0013\n\u0013\f\u0013\u0128"
+ + "\t\u0013\u0001\u0013\u0003\u0013\u012b\b\u0013\u0001\u0013\u0001\u0013"
+ + "\u0003\u0013\u012f\b\u0013\u0001\u0013\u0003\u0013\u0132\b\u0013\u0001"
+ + "\u0013\u0003\u0013\u0135\b\u0013\u0001\u0013\u0003\u0013\u0138\b\u0013"
+ + "\u0001\u0013\u0005\u0013\u013b\b\u0013\n\u0013\f\u0013\u013e\t\u0013\u0001"
+ + "\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0005"
+ + "\u0014\u0146\b\u0014\n\u0014\f\u0014\u0149\t\u0014\u0001\u0014\u0003\u0014"
+ + "\u014c\b\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016"
+ + "\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0003\u0017\u0157\b\u0017"
+ + "\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019"
+ + "\u0001\u0019\u0005\u0019\u0160\b\u0019\n\u0019\f\u0019\u0163\t\u0019\u0001"
+ + "\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001"
+ + "\u001b\u0001\u001c\u0004\u001c\u016d\b\u001c\u000b\u001c\f\u001c\u016e"
+ + "\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f"
+ + "\u0001\u001f\u0005\u001f\u0178\b\u001f\n\u001f\f\u001f\u017b\t\u001f\u0001"
+ + " \u0001 \u0001 \u0003 \u0180\b \u0001!\u0005!\u0183\b!\n!\f!\u0186\t!"
+ + "\u0001!\u0003!\u0189\b!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001\"\u0001"
+ + "\"\u0001#\u0001#\u0001#\u0005#\u0195\b#\n#\f#\u0198\t#\u0001$\u0001$\u0003"
+ + "$\u019c\b$\u0001$\u0003$\u019f\b$\u0001%\u0004%\u01a2\b%\u000b%\f%\u01a3"
+ + "\u0001&\u0001&\u0003&\u01a8\b&\u0001&\u0001&\u0003&\u01ac\b&\u0001&\u0001"
+ + "&\u0003&\u01b0\b&\u0001&\u0001&\u0003&\u01b4\b&\u0003&\u01b6\b&\u0001"
+ + "\'\u0001\'\u0001\'\u0001\'\u0003\'\u01bc\b\'\u0001(\u0001(\u0001(\u0001"
+ + "(\u0001)\u0001)\u0001)\u0001)\u0005)\u01c6\b)\n)\f)\u01c9\t)\u0001*\u0001"
+ + "*\u0001*\u0001*\u0001*\u0001*\u0003*\u01d1\b*\u0001+\u0001+\u0003+\u01d5"
+ + "\b+\u0001,\u0001,\u0003,\u01d9\b,\u0001-\u0001-\u0001-\u0005-\u01de\b"
+ + "-\n-\f-\u01e1\t-\u0001.\u0003.\u01e4\b.\u0001.\u0004.\u01e7\b.\u000b."
+ + "\f.\u01e8\u0001.\u0003.\u01ec\b.\u0001/\u0001/\u0001/\u0003/\u01f1\b/"
+ + "\u0001/\u0001/\u0001/\u0003/\u01f6\b/\u0001/\u0001/\u0001/\u0003/\u01fb"
+ + "\b/\u0003/\u01fd\b/\u00010\u00010\u00010\u00010\u00030\u0203\b0\u0001"
+ + "1\u00011\u00031\u0207\b1\u00012\u00012\u00013\u00013\u00033\u020d\b3\u0001"
+ + "3\u00013\u00033\u0211\b3\u00013\u00013\u00033\u0215\b3\u00033\u0217\b"
+ + "3\u00014\u00014\u00014\u00014\u00014\u00014\u00034\u021f\b4\u00034\u0221"
+ + "\b4\u00015\u00015\u00015\u00015\u00015\u00035\u0228\b5\u00035\u022a\b"
+ + "5\u00016\u00016\u00016\u00016\u00036\u0230\b6\u00017\u00017\u00017\u0001"
+ + "7\u00057\u0236\b7\n7\f7\u0239\t7\u00017\u00017\u00018\u00018\u00038\u023f"
+ + "\b8\u00018\u00018\u00038\u0243\b8\u00018\u00018\u00038\u0247\b8\u0001"
+ + "9\u00019\u00039\u024b\b9\u00019\u00059\u024e\b9\n9\f9\u0251\t9\u00019"
+ + "\u00039\u0254\b9\u00019\u00019\u00019\u0001:\u0001:\u0003:\u025b\b:\u0001"
+ + ":\u0003:\u025e\b:\u0001;\u0001;\u0001;\u0001;\u0001<\u0001<\u0003<\u0266"
+ + "\b<\u0001<\u0001<\u0003<\u026a\b<\u0003<\u026c\b<\u0001=\u0001=\u0001"
+ + "=\u0001=\u0005=\u0272\b=\n=\f=\u0275\t=\u0001=\u0001=\u0001>\u0001>\u0001"
+ + ">\u0001>\u0001>\u0003>\u027e\b>\u0003>\u0280\b>\u0001?\u0001?\u0001?\u0000"
+ + "\u0000@\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018"
+ + "\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0000"
+ + "\u0003\u0002\u0000\u0010\u0010\u0014\u0016\u0002\u0000((++\u0001\u0000"
+ + "\u0001\u0002\u02ab\u0000\u0083\u0001\u0000\u0000\u0000\u0002\u0096\u0001"
+ + "\u0000\u0000\u0000\u0004\u009f\u0001\u0000\u0000\u0000\u0006\u00a6\u0001"
+ + "\u0000\u0000\u0000\b\u00a8\u0001\u0000\u0000\u0000\n\u00b4\u0001\u0000"
+ + "\u0000\u0000\f\u00c3\u0001\u0000\u0000\u0000\u000e\u00c5\u0001\u0000\u0000"
+ + "\u0000\u0010\u00d5\u0001\u0000\u0000\u0000\u0012\u00d7\u0001\u0000\u0000"
+ + "\u0000\u0014\u00de\u0001\u0000\u0000\u0000\u0016\u00e5\u0001\u0000\u0000"
+ + "\u0000\u0018\u00f0\u0001\u0000\u0000\u0000\u001a\u00fc\u0001\u0000\u0000"
+ + "\u0000\u001c\u00fe\u0001\u0000\u0000\u0000\u001e\u0107\u0001\u0000\u0000"
+ + "\u0000 \u0110\u0001\u0000\u0000\u0000\"\u011c\u0001\u0000\u0000\u0000"
+ + "$\u0121\u0001\u0000\u0000\u0000&\u0126\u0001\u0000\u0000\u0000(\u0147"
+ + "\u0001\u0000\u0000\u0000*\u014d\u0001\u0000\u0000\u0000,\u0151\u0001\u0000"
+ + "\u0000\u0000.\u0156\u0001\u0000\u0000\u00000\u0158\u0001\u0000\u0000\u0000"
+ + "2\u015b\u0001\u0000\u0000\u00004\u0164\u0001\u0000\u0000\u00006\u0167"
+ + "\u0001\u0000\u0000\u00008\u016c\u0001\u0000\u0000\u0000:\u0170\u0001\u0000"
+ + "\u0000\u0000<\u0172\u0001\u0000\u0000\u0000>\u0174\u0001\u0000\u0000\u0000"
+ + "@\u017c\u0001\u0000\u0000\u0000B\u0184\u0001\u0000\u0000\u0000D\u018f"
+ + "\u0001\u0000\u0000\u0000F\u0191\u0001\u0000\u0000\u0000H\u019e\u0001\u0000"
+ + "\u0000\u0000J\u01a1\u0001\u0000\u0000\u0000L\u01b5\u0001\u0000\u0000\u0000"
+ + "N\u01b7\u0001\u0000\u0000\u0000P\u01bd\u0001\u0000\u0000\u0000R\u01c1"
+ + "\u0001\u0000\u0000\u0000T\u01d0\u0001\u0000\u0000\u0000V\u01d4\u0001\u0000"
+ + "\u0000\u0000X\u01d8\u0001\u0000\u0000\u0000Z\u01da\u0001\u0000\u0000\u0000"
+ + "\\\u01eb\u0001\u0000\u0000\u0000^\u01fc\u0001\u0000\u0000\u0000`\u01fe"
+ + "\u0001\u0000\u0000\u0000b\u0204\u0001\u0000\u0000\u0000d\u0208\u0001\u0000"
+ + "\u0000\u0000f\u0216\u0001\u0000\u0000\u0000h\u0220\u0001\u0000\u0000\u0000"
+ + "j\u0229\u0001\u0000\u0000\u0000l\u022f\u0001\u0000\u0000\u0000n\u0231"
+ + "\u0001\u0000\u0000\u0000p\u0246\u0001\u0000\u0000\u0000r\u0248\u0001\u0000"
+ + "\u0000\u0000t\u0258\u0001\u0000\u0000\u0000v\u025f\u0001\u0000\u0000\u0000"
+ + "x\u026b\u0001\u0000\u0000\u0000z\u026d\u0001\u0000\u0000\u0000|\u027f"
+ + "\u0001\u0000\u0000\u0000~\u0281\u0001\u0000\u0000\u0000\u0080\u0082\u0005"
+ + "\u0004\u0000\u0000\u0081\u0080\u0001\u0000\u0000\u0000\u0082\u0085\u0001"
+ + "\u0000\u0000\u0000\u0083\u0081\u0001\u0000\u0000\u0000\u0083\u0084\u0001"
+ + "\u0000\u0000\u0000\u0084\u0086\u0001\u0000\u0000\u0000\u0085\u0083\u0001"
+ + "\u0000\u0000\u0000\u0086\u008a\u0003\u0002\u0001\u0000\u0087\u0089\u0003"
+ + "\u0006\u0003\u0000\u0088\u0087\u0001\u0000\u0000\u0000\u0089\u008c\u0001"
+ + "\u0000\u0000\u0000\u008a\u0088\u0001\u0000\u0000\u0000\u008a\u008b\u0001"
+ + "\u0000\u0000\u0000\u008b\u008d\u0001\u0000\u0000\u0000\u008c\u008a\u0001"
+ + "\u0000\u0000\u0000\u008d\u0091\u0003\"\u0011\u0000\u008e\u0090\u0003 "
+ + "\u0010\u0000\u008f\u008e\u0001\u0000\u0000\u0000\u0090\u0093\u0001\u0000"
+ + "\u0000\u0000\u0091\u008f\u0001\u0000\u0000\u0000\u0091\u0092\u0001\u0000"
+ + "\u0000\u0000\u0092\u0094\u0001\u0000\u0000\u0000\u0093\u0091\u0001\u0000"
+ + "\u0000\u0000\u0094\u0095\u0005\u0000\u0000\u0001\u0095\u0001\u0001\u0000"
+ + "\u0000\u0000\u0096\u0097\u0003\u0004\u0002\u0000\u0097\u0098\u0003~?\u0000"
+ + "\u0098\u0099\u0005 \u0000\u0000\u0099\u0003\u0001\u0000\u0000\u0000\u009a"
+ + "\u009b\u0005\u0011\u0000\u0000\u009b\u00a0\u0005\u0013\u0000\u0000\u009c"
+ + "\u009d\u0005\u0012\u0000\u0000\u009d\u00a0\u0005\u0013\u0000\u0000\u009e"
+ + "\u00a0\u0005\u0013\u0000\u0000\u009f\u009a\u0001\u0000\u0000\u0000\u009f"
+ + "\u009c\u0001\u0000\u0000\u0000\u009f\u009e\u0001\u0000\u0000\u0000\u00a0"
+ + "\u0005\u0001\u0000\u0000\u0000\u00a1\u00a7\u0003\b\u0004\u0000\u00a2\u00a7"
+ + "\u0003\u000e\u0007\u0000\u00a3\u00a7\u0003\u0012\t\u0000\u00a4\u00a7\u0003"
+ + "\u0014\n\u0000\u00a5\u00a7\u0003\u0018\f\u0000\u00a6\u00a1\u0001\u0000"
+ + "\u0000\u0000\u00a6\u00a2\u0001\u0000\u0000\u0000\u00a6\u00a3\u0001\u0000"
+ + "\u0000\u0000\u00a6\u00a4\u0001\u0000\u0000\u0000\u00a6\u00a5\u0001\u0000"
+ + "\u0000\u0000\u00a7\u0007\u0001\u0000\u0000\u0000\u00a8\u00a9\u0005\f\u0000"
+ + "\u0000\u00a9\u00af\u0005#\u0000\u0000\u00aa\u00ab\u0003\n\u0005\u0000"
+ + "\u00ab\u00ac\u0005 \u0000\u0000\u00ac\u00ae\u0001\u0000\u0000\u0000\u00ad"
+ + "\u00aa\u0001\u0000\u0000\u0000\u00ae\u00b1\u0001\u0000\u0000\u0000\u00af"
+ + "\u00ad\u0001\u0000\u0000\u0000\u00af\u00b0\u0001\u0000\u0000\u0000\u00b0"
+ + "\u00b2\u0001\u0000\u0000\u0000\u00b1\u00af\u0001\u0000\u0000\u0000\u00b2"
+ + "\u00b3\u0005$\u0000\u0000\u00b3\t\u0001\u0000\u0000\u0000\u00b4\u00b5"
+ + "\u0003~?\u0000\u00b5\u00b6\u0005(\u0000\u0000\u00b6\u00b7\u0003\f\u0006"
+ + "\u0000\u00b7\u000b\u0001\u0000\u0000\u0000\u00b8\u00bd\u0003~?\u0000\u00b9"
+ + "\u00ba\u00050\u0000\u0000\u00ba\u00bc\u0003~?\u0000\u00bb\u00b9\u0001"
+ + "\u0000\u0000\u0000\u00bc\u00bf\u0001\u0000\u0000\u0000\u00bd\u00bb\u0001"
+ + "\u0000\u0000\u0000\u00bd\u00be\u0001\u0000\u0000\u0000\u00be\u00c4\u0001"
+ + "\u0000\u0000\u0000\u00bf\u00bd\u0001\u0000\u0000\u0000\u00c0\u00c4\u0005"
+ + "\b\u0000\u0000\u00c1\u00c4\u0003\u001c\u000e\u0000\u00c2\u00c4\u0005\u0007"
+ + "\u0000\u0000\u00c3\u00b8\u0001\u0000\u0000\u0000\u00c3\u00c0\u0001\u0000"
+ + "\u0000\u0000\u00c3\u00c1\u0001\u0000\u0000\u0000\u00c3\u00c2\u0001\u0000"
+ + "\u0000\u0000\u00c4\r\u0001\u0000\u0000\u0000\u00c5\u00c6\u0005\u000f\u0000"
+ + "\u0000\u00c6\u00cb\u0003\u0010\b\u0000\u00c7\u00c8\u0005\u001f\u0000\u0000"
+ + "\u00c8\u00ca\u0003\u0010\b\u0000\u00c9\u00c7\u0001\u0000\u0000\u0000\u00ca"
+ + "\u00cd\u0001\u0000\u0000\u0000\u00cb\u00c9\u0001\u0000\u0000\u0000\u00cb"
+ + "\u00cc\u0001\u0000\u0000\u0000\u00cc\u00ce\u0001\u0000\u0000\u0000\u00cd"
+ + "\u00cb\u0001\u0000\u0000\u0000\u00ce\u00cf\u0005 \u0000\u0000\u00cf\u000f"
+ + "\u0001\u0000\u0000\u0000\u00d0\u00d1\u0003~?\u0000\u00d1\u00d2\u0005("
+ + "\u0000\u0000\u00d2\u00d3\u0003~?\u0000\u00d3\u00d6\u0001\u0000\u0000\u0000"
+ + "\u00d4\u00d6\u0003~?\u0000\u00d5\u00d0\u0001\u0000\u0000\u0000\u00d5\u00d4"
+ + "\u0001\u0000\u0000\u0000\u00d6\u0011\u0001\u0000\u0000\u0000\u00d7\u00d8"
+ + "\u0005\r\u0000\u0000\u00d8\u00da\u0005#\u0000\u0000\u00d9\u00db\u0003"
+ + "\u0016\u000b\u0000\u00da\u00d9\u0001\u0000\u0000\u0000\u00da\u00db\u0001"
+ + "\u0000\u0000\u0000\u00db\u00dc\u0001\u0000\u0000\u0000\u00dc\u00dd\u0005"
+ + "$\u0000\u0000\u00dd\u0013\u0001\u0000\u0000\u0000\u00de\u00df\u0005\u000e"
+ + "\u0000\u0000\u00df\u00e1\u0005#\u0000\u0000\u00e0\u00e2\u0003\u0016\u000b"
+ + "\u0000\u00e1\u00e0\u0001\u0000\u0000\u0000\u00e1\u00e2\u0001\u0000\u0000"
+ + "\u0000\u00e2\u00e3\u0001\u0000\u0000\u0000\u00e3\u00e4\u0005$\u0000\u0000"
+ + "\u00e4\u0015\u0001\u0000\u0000\u0000\u00e5\u00ea\u0003~?\u0000\u00e6\u00e7"
+ + "\u0005\u001f\u0000\u0000\u00e7\u00e9\u0003~?\u0000\u00e8\u00e6\u0001\u0000"
+ + "\u0000\u0000\u00e9\u00ec\u0001\u0000\u0000\u0000\u00ea\u00e8\u0001\u0000"
+ + "\u0000\u0000\u00ea\u00eb\u0001\u0000\u0000\u0000\u00eb\u00ee\u0001\u0000"
+ + "\u0000\u0000\u00ec\u00ea\u0001\u0000\u0000\u0000\u00ed\u00ef\u0005\u001f"
+ + "\u0000\u0000\u00ee\u00ed\u0001\u0000\u0000\u0000\u00ee\u00ef\u0001\u0000"
+ + "\u0000\u0000\u00ef\u0017\u0001\u0000\u0000\u0000\u00f0\u00f4\u00051\u0000"
+ + "\u0000\u00f1\u00f2\u0003\u001a\r\u0000\u00f2\u00f3\u0005\u001e\u0000\u0000"
+ + "\u00f3\u00f5\u0001\u0000\u0000\u0000\u00f4\u00f1\u0001\u0000\u0000\u0000"
+ + "\u00f4\u00f5\u0001\u0000\u0000\u0000\u00f5\u00f6\u0001\u0000\u0000\u0000"
+ + "\u00f6\u00f7\u0003~?\u0000\u00f7\u00f8\u0003\u001c\u000e\u0000\u00f8\u0019"
+ + "\u0001\u0000\u0000\u0000\u00f9\u00fd\u0003~?\u0000\u00fa\u00fd\u0005\u0011"
+ + "\u0000\u0000\u00fb\u00fd\u0005\u0012\u0000\u0000\u00fc\u00f9\u0001\u0000"
+ + "\u0000\u0000\u00fc\u00fa\u0001\u0000\u0000\u0000\u00fc\u00fb\u0001\u0000"
+ + "\u0000\u0000\u00fd\u001b\u0001\u0000\u0000\u0000\u00fe\u0102\u0005\u000b"
+ + "\u0000\u0000\u00ff\u0101\u0005<\u0000\u0000\u0100\u00ff\u0001\u0000\u0000"
+ + "\u0000\u0101\u0104\u0001\u0000\u0000\u0000\u0102\u0100\u0001\u0000\u0000"
+ + "\u0000\u0102\u0103\u0001\u0000\u0000\u0000\u0103\u0105\u0001\u0000\u0000"
+ + "\u0000\u0104\u0102\u0001\u0000\u0000\u0000\u0105\u0106\u0005:\u0000\u0000"
+ + "\u0106\u001d\u0001\u0000\u0000\u0000\u0107\u010b\u0005\n\u0000\u0000\u0108"
+ + "\u010a\u00059\u0000\u0000\u0109\u0108\u0001\u0000\u0000\u0000\u010a\u010d"
+ + "\u0001\u0000\u0000\u0000\u010b\u0109\u0001\u0000\u0000\u0000\u010b\u010c"
+ + "\u0001\u0000\u0000\u0000\u010c\u010e\u0001\u0000\u0000\u0000\u010d\u010b"
+ + "\u0001\u0000\u0000\u0000\u010e\u010f\u00057\u0000\u0000\u010f\u001f\u0001"
+ + "\u0000\u0000\u0000\u0110\u0111\u0005\u001c\u0000\u0000\u0111\u0112\u0003"
+ + "~?\u0000\u0112\u0116\u0005 \u0000\u0000\u0113\u0115\u0003B!\u0000\u0114"
+ + "\u0113\u0001\u0000\u0000\u0000\u0115\u0118\u0001\u0000\u0000\u0000\u0116"
+ + "\u0114\u0001\u0000\u0000\u0000\u0116\u0117\u0001\u0000\u0000\u0000\u0117"
+ + "!\u0001\u0000\u0000\u0000\u0118\u0116\u0001\u0000\u0000\u0000\u0119\u011b"
+ + "\u0003$\u0012\u0000\u011a\u0119\u0001\u0000\u0000\u0000\u011b\u011e\u0001"
+ + "\u0000\u0000\u0000\u011c\u011a\u0001\u0000\u0000\u0000\u011c\u011d\u0001"
+ + "\u0000\u0000\u0000\u011d#\u0001\u0000\u0000\u0000\u011e\u011c\u0001\u0000"
+ + "\u0000\u0000\u011f\u0122\u0003&\u0013\u0000\u0120\u0122\u0003B!\u0000"
+ + "\u0121\u011f\u0001\u0000\u0000\u0000\u0121\u0120\u0001\u0000\u0000\u0000"
+ + "\u0122%\u0001\u0000\u0000\u0000\u0123\u0125\u0005\u0004\u0000\u0000\u0124"
+ + "\u0123\u0001\u0000\u0000\u0000\u0125\u0128\u0001\u0000\u0000\u0000\u0126"
+ + "\u0124\u0001\u0000\u0000\u0000\u0126\u0127\u0001\u0000\u0000\u0000\u0127"
+ + "\u012a\u0001\u0000\u0000\u0000\u0128\u0126\u0001\u0000\u0000\u0000\u0129"
+ + "\u012b\u00038\u001c\u0000\u012a\u0129\u0001\u0000\u0000\u0000\u012a\u012b"
+ + "\u0001\u0000\u0000\u0000\u012b\u012c\u0001\u0000\u0000\u0000\u012c\u012e"
+ + "\u0005\u0002\u0000\u0000\u012d\u012f\u0003\u001e\u000f\u0000\u012e\u012d"
+ + "\u0001\u0000\u0000\u0000\u012e\u012f\u0001\u0000\u0000\u0000\u012f\u0131"
+ + "\u0001\u0000\u0000\u0000\u0130\u0132\u00030\u0018\u0000\u0131\u0130\u0001"
+ + "\u0000\u0000\u0000\u0131\u0132\u0001\u0000\u0000\u0000\u0132\u0134\u0001"
+ + "\u0000\u0000\u0000\u0133\u0135\u00032\u0019\u0000\u0134\u0133\u0001\u0000"
+ + "\u0000\u0000\u0134\u0135\u0001\u0000\u0000\u0000\u0135\u0137\u0001\u0000"
+ + "\u0000\u0000\u0136\u0138\u00034\u001a\u0000\u0137\u0136\u0001\u0000\u0000"
+ + "\u0000\u0137\u0138\u0001\u0000\u0000\u0000\u0138\u013c\u0001\u0000\u0000"
+ + "\u0000\u0139\u013b\u0003.\u0017\u0000\u013a\u0139\u0001\u0000\u0000\u0000"
+ + "\u013b\u013e\u0001\u0000\u0000\u0000\u013c\u013a\u0001\u0000\u0000\u0000"
+ + "\u013c\u013d\u0001\u0000\u0000\u0000\u013d\u013f\u0001\u0000\u0000\u0000"
+ + "\u013e\u013c\u0001\u0000\u0000\u0000\u013f\u0140\u0005\u001d\u0000\u0000"
+ + "\u0140\u0141\u0003<\u001e\u0000\u0141\u0142\u0005 \u0000\u0000\u0142\u0143"
+ + "\u0003(\u0014\u0000\u0143\'\u0001\u0000\u0000\u0000\u0144\u0146\u0003"
+ + "*\u0015\u0000\u0145\u0144\u0001\u0000\u0000\u0000\u0146\u0149\u0001\u0000"
+ + "\u0000\u0000\u0147\u0145\u0001\u0000\u0000\u0000\u0147\u0148\u0001\u0000"
+ + "\u0000\u0000\u0148\u014b\u0001\u0000\u0000\u0000\u0149\u0147\u0001\u0000"
+ + "\u0000\u0000\u014a\u014c\u0003,\u0016\u0000\u014b\u014a\u0001\u0000\u0000"
+ + "\u0000\u014b\u014c\u0001\u0000\u0000\u0000\u014c)\u0001\u0000\u0000\u0000"
+ + "\u014d\u014e\u0005\u001a\u0000\u0000\u014e\u014f\u0003\u001e\u000f\u0000"
+ + "\u014f\u0150\u0003\u001c\u000e\u0000\u0150+\u0001\u0000\u0000\u0000\u0151"
+ + "\u0152\u0005\u001b\u0000\u0000\u0152\u0153\u0003\u001c\u000e\u0000\u0153"
+ + "-\u0001\u0000\u0000\u0000\u0154\u0157\u0003\b\u0004\u0000\u0155\u0157"
+ + "\u00036\u001b\u0000\u0156\u0154\u0001\u0000\u0000\u0000\u0156\u0155\u0001"
+ + "\u0000\u0000\u0000\u0157/\u0001\u0000\u0000\u0000\u0158\u0159\u0005\u0017"
+ + "\u0000\u0000\u0159\u015a\u0003\u001e\u000f\u0000\u015a1\u0001\u0000\u0000"
+ + "\u0000\u015b\u015c\u0005\u0019\u0000\u0000\u015c\u0161\u0003~?\u0000\u015d"
+ + "\u015e\u0005\u001f\u0000\u0000\u015e\u0160\u0003~?\u0000\u015f\u015d\u0001"
+ + "\u0000\u0000\u0000\u0160\u0163\u0001\u0000\u0000\u0000\u0161\u015f\u0001"
+ + "\u0000\u0000\u0000\u0161\u0162\u0001\u0000\u0000\u0000\u01623\u0001\u0000"
+ + "\u0000\u0000\u0163\u0161\u0001\u0000\u0000\u0000\u0164\u0165\u0005\u0018"
+ + "\u0000\u0000\u0165\u0166\u0003\u001e\u000f\u0000\u01665\u0001\u0000\u0000"
+ + "\u0000\u0167\u0168\u00051\u0000\u0000\u0168\u0169\u0003~?\u0000\u0169"
+ + "\u016a\u0003\u001c\u000e\u0000\u016a7\u0001\u0000\u0000\u0000\u016b\u016d"
+ + "\u0003:\u001d\u0000\u016c\u016b\u0001\u0000\u0000\u0000\u016d\u016e\u0001"
+ + "\u0000\u0000\u0000\u016e\u016c\u0001\u0000\u0000\u0000\u016e\u016f\u0001"
+ + "\u0000\u0000\u0000\u016f9\u0001\u0000\u0000\u0000\u0170\u0171\u0007\u0000"
+ + "\u0000\u0000\u0171;\u0001\u0000\u0000\u0000\u0172\u0173\u0003>\u001f\u0000"
+ + "\u0173=\u0001\u0000\u0000\u0000\u0174\u0179\u0003@ \u0000\u0175\u0176"
+ + "\u0005-\u0000\u0000\u0176\u0178\u0003@ \u0000\u0177\u0175\u0001\u0000"
+ + "\u0000\u0000\u0178\u017b\u0001\u0000\u0000\u0000\u0179\u0177\u0001\u0000"
+ + "\u0000\u0000\u0179\u017a\u0001\u0000\u0000\u0000\u017a?\u0001\u0000\u0000"
+ + "\u0000\u017b\u0179\u0001\u0000\u0000\u0000\u017c\u017f\u0003\\.\u0000"
+ + "\u017d\u017e\u00052\u0000\u0000\u017e\u0180\u0003~?\u0000\u017f\u017d"
+ + "\u0001\u0000\u0000\u0000\u017f\u0180\u0001\u0000\u0000\u0000\u0180A\u0001"
+ + "\u0000\u0000\u0000\u0181\u0183\u0005\u0004\u0000\u0000\u0182\u0181\u0001"
+ + "\u0000\u0000\u0000\u0183\u0186\u0001\u0000\u0000\u0000\u0184\u0182\u0001"
+ + "\u0000\u0000\u0000\u0184\u0185\u0001\u0000\u0000\u0000\u0185\u0188\u0001"
+ + "\u0000\u0000\u0000\u0186\u0184\u0001\u0000\u0000\u0000\u0187\u0189\u0005"
+ + "\u0010\u0000\u0000\u0188\u0187\u0001\u0000\u0000\u0000\u0188\u0189\u0001"
+ + "\u0000\u0000\u0000\u0189\u018a\u0001\u0000\u0000\u0000\u018a\u018b\u0005"
+ + "\u0001\u0000\u0000\u018b\u018c\u0005\u001d\u0000\u0000\u018c\u018d\u0003"
+ + "D\"\u0000\u018d\u018e\u0005 \u0000\u0000\u018eC\u0001\u0000\u0000\u0000"
+ + "\u018f\u0190\u0003F#\u0000\u0190E\u0001\u0000\u0000\u0000\u0191\u0196"
+ + "\u0003H$\u0000\u0192\u0193\u0005-\u0000\u0000\u0193\u0195\u0003H$\u0000"
+ + "\u0194\u0192\u0001\u0000\u0000\u0000\u0195\u0198\u0001\u0000\u0000\u0000"
+ + "\u0196\u0194\u0001\u0000\u0000\u0000\u0196\u0197\u0001\u0000\u0000\u0000"
+ + "\u0197G\u0001\u0000\u0000\u0000\u0198\u0196\u0001\u0000\u0000\u0000\u0199"
+ + "\u019b\u0003J%\u0000\u019a\u019c\u0003R)\u0000\u019b\u019a\u0001\u0000"
+ + "\u0000\u0000\u019b\u019c\u0001\u0000\u0000\u0000\u019c\u019f\u0001\u0000"
+ + "\u0000\u0000\u019d\u019f\u0001\u0000\u0000\u0000\u019e\u0199\u0001\u0000"
+ + "\u0000\u0000\u019e\u019d\u0001\u0000\u0000\u0000\u019fI\u0001\u0000\u0000"
+ + "\u0000\u01a0\u01a2\u0003L&\u0000\u01a1\u01a0\u0001\u0000\u0000\u0000\u01a2"
+ + "\u01a3\u0001\u0000\u0000\u0000\u01a3\u01a1\u0001\u0000\u0000\u0000\u01a3"
+ + "\u01a4\u0001\u0000\u0000\u0000\u01a4K\u0001\u0000\u0000\u0000\u01a5\u01a7"
+ + "\u0003N\'\u0000\u01a6\u01a8\u0003f3\u0000\u01a7\u01a6\u0001\u0000\u0000"
+ + "\u0000\u01a7\u01a8\u0001\u0000\u0000\u0000\u01a8\u01b6\u0001\u0000\u0000"
+ + "\u0000\u01a9\u01ab\u0003h4\u0000\u01aa\u01ac\u0003f3\u0000\u01ab\u01aa"
+ + "\u0001\u0000\u0000\u0000\u01ab\u01ac\u0001\u0000\u0000\u0000\u01ac\u01b6"
+ + "\u0001\u0000\u0000\u0000\u01ad\u01af\u0003P(\u0000\u01ae\u01b0\u0003f"
+ + "3\u0000\u01af\u01ae\u0001\u0000\u0000\u0000\u01af\u01b0\u0001\u0000\u0000"
+ + "\u0000\u01b0\u01b6\u0001\u0000\u0000\u0000\u01b1\u01b3\u0003\u001c\u000e"
+ + "\u0000\u01b2\u01b4\u0005)\u0000\u0000\u01b3\u01b2\u0001\u0000\u0000\u0000"
+ + "\u01b3\u01b4\u0001\u0000\u0000\u0000\u01b4\u01b6\u0001\u0000\u0000\u0000"
+ + "\u01b5\u01a5\u0001\u0000\u0000\u0000\u01b5\u01a9\u0001\u0000\u0000\u0000"
+ + "\u01b5\u01ad\u0001\u0000\u0000\u0000\u01b5\u01b1\u0001\u0000\u0000\u0000"
+ + "\u01b6M\u0001\u0000\u0000\u0000\u01b7\u01b8\u0003~?\u0000\u01b8\u01bb"
+ + "\u0007\u0001\u0000\u0000\u01b9\u01bc\u0003h4\u0000\u01ba\u01bc\u0003P"
+ + "(\u0000\u01bb\u01b9\u0001\u0000\u0000\u0000\u01bb\u01ba\u0001\u0000\u0000"
+ + "\u0000\u01bcO\u0001\u0000\u0000\u0000\u01bd\u01be\u0005!\u0000\u0000\u01be"
+ + "\u01bf\u0003F#\u0000\u01bf\u01c0\u0005\"\u0000\u0000\u01c0Q\u0001\u0000"
+ + "\u0000\u0000\u01c1\u01c2\u0005%\u0000\u0000\u01c2\u01c7\u0003T*\u0000"
+ + "\u01c3\u01c4\u0005\u001f\u0000\u0000\u01c4\u01c6\u0003T*\u0000\u01c5\u01c3"
+ + "\u0001\u0000\u0000\u0000\u01c6\u01c9\u0001\u0000\u0000\u0000\u01c7\u01c5"
+ + "\u0001\u0000\u0000\u0000\u01c7\u01c8\u0001\u0000\u0000\u0000\u01c8S\u0001"
+ + "\u0000\u0000\u0000\u01c9\u01c7\u0001\u0000\u0000\u0000\u01ca\u01cb\u0003"
+ + "V+\u0000\u01cb\u01cc\u0005!\u0000\u0000\u01cc\u01cd\u0003X,\u0000\u01cd"
+ + "\u01ce\u0005\"\u0000\u0000\u01ce\u01d1\u0001\u0000\u0000\u0000\u01cf\u01d1"
+ + "\u0003V+\u0000\u01d0\u01ca\u0001\u0000\u0000\u0000\u01d0\u01cf\u0001\u0000"
+ + "\u0000\u0000\u01d1U\u0001\u0000\u0000\u0000\u01d2\u01d5\u0003~?\u0000"
+ + "\u01d3\u01d5\u0005\u001c\u0000\u0000\u01d4\u01d2\u0001\u0000\u0000\u0000"
+ + "\u01d4\u01d3\u0001\u0000\u0000\u0000\u01d5W\u0001\u0000\u0000\u0000\u01d6"
+ + "\u01d9\u0003~?\u0000\u01d7\u01d9\u0005\u0007\u0000\u0000\u01d8\u01d6\u0001"
+ + "\u0000\u0000\u0000\u01d8\u01d7\u0001\u0000\u0000\u0000\u01d9Y\u0001\u0000"
+ + "\u0000\u0000\u01da\u01df\u0003\\.\u0000\u01db\u01dc\u0005-\u0000\u0000"
+ + "\u01dc\u01de\u0003\\.\u0000\u01dd\u01db\u0001\u0000\u0000\u0000\u01de"
+ + "\u01e1\u0001\u0000\u0000\u0000\u01df\u01dd\u0001\u0000\u0000\u0000\u01df"
+ + "\u01e0\u0001\u0000\u0000\u0000\u01e0[\u0001\u0000\u0000\u0000\u01e1\u01df"
+ + "\u0001\u0000\u0000\u0000\u01e2\u01e4\u0003z=\u0000\u01e3\u01e2\u0001\u0000"
+ + "\u0000\u0000\u01e3\u01e4\u0001\u0000\u0000\u0000\u01e4\u01e6\u0001\u0000"
+ + "\u0000\u0000\u01e5\u01e7\u0003^/\u0000\u01e6\u01e5\u0001\u0000\u0000\u0000"
+ + "\u01e7\u01e8\u0001\u0000\u0000\u0000\u01e8\u01e6\u0001\u0000\u0000\u0000"
+ + "\u01e8\u01e9\u0001\u0000\u0000\u0000\u01e9\u01ec\u0001\u0000\u0000\u0000"
+ + "\u01ea\u01ec\u0001\u0000\u0000\u0000\u01eb\u01e3\u0001\u0000\u0000\u0000"
+ + "\u01eb\u01ea\u0001\u0000\u0000\u0000\u01ec]\u0001\u0000\u0000\u0000\u01ed"
+ + "\u01f0\u0003`0\u0000\u01ee\u01f1\u0003f3\u0000\u01ef\u01f1\u0001\u0000"
+ + "\u0000\u0000\u01f0\u01ee\u0001\u0000\u0000\u0000\u01f0\u01ef\u0001\u0000"
+ + "\u0000\u0000\u01f1\u01fd\u0001\u0000\u0000\u0000\u01f2\u01f5\u0003j5\u0000"
+ + "\u01f3\u01f6\u0003f3\u0000\u01f4\u01f6\u0001\u0000\u0000\u0000\u01f5\u01f3"
+ + "\u0001\u0000\u0000\u0000\u01f5\u01f4\u0001\u0000\u0000\u0000\u01f6\u01fd"
+ + "\u0001\u0000\u0000\u0000\u01f7\u01fd\u0003b1\u0000\u01f8\u01fa\u0003\u001c"
+ + "\u000e\u0000\u01f9\u01fb\u0005)\u0000\u0000\u01fa\u01f9\u0001\u0000\u0000"
+ + "\u0000\u01fa\u01fb\u0001\u0000\u0000\u0000\u01fb\u01fd\u0001\u0000\u0000"
+ + "\u0000\u01fc\u01ed\u0001\u0000\u0000\u0000\u01fc\u01f2\u0001\u0000\u0000"
+ + "\u0000\u01fc\u01f7\u0001\u0000\u0000\u0000\u01fc\u01f8\u0001\u0000\u0000"
+ + "\u0000\u01fd_\u0001\u0000\u0000\u0000\u01fe\u01ff\u0003~?\u0000\u01ff"
+ + "\u0202\u0007\u0001\u0000\u0000\u0200\u0203\u0003j5\u0000\u0201\u0203\u0003"
+ + "r9\u0000\u0202\u0200\u0001\u0000\u0000\u0000\u0202\u0201\u0001\u0000\u0000"
+ + "\u0000\u0203a\u0001\u0000\u0000\u0000\u0204\u0206\u0003r9\u0000\u0205"
+ + "\u0207\u0003d2\u0000\u0206\u0205\u0001\u0000\u0000\u0000\u0206\u0207\u0001"
+ + "\u0000\u0000\u0000\u0207c\u0001\u0000\u0000\u0000\u0208\u0209\u0003f3"
+ + "\u0000\u0209e\u0001\u0000\u0000\u0000\u020a\u020c\u0005)\u0000\u0000\u020b"
+ + "\u020d\u0005)\u0000\u0000\u020c\u020b\u0001\u0000\u0000\u0000\u020c\u020d"
+ + "\u0001\u0000\u0000\u0000\u020d\u0217\u0001\u0000\u0000\u0000\u020e\u0210"
+ + "\u0005*\u0000\u0000\u020f\u0211\u0005)\u0000\u0000\u0210\u020f\u0001\u0000"
+ + "\u0000\u0000\u0210\u0211\u0001\u0000\u0000\u0000\u0211\u0217\u0001\u0000"
+ + "\u0000\u0000\u0212\u0214\u0005,\u0000\u0000\u0213\u0215\u0005)\u0000\u0000"
+ + "\u0214\u0213\u0001\u0000\u0000\u0000\u0214\u0215\u0001\u0000\u0000\u0000"
+ + "\u0215\u0217\u0001\u0000\u0000\u0000\u0216\u020a\u0001\u0000\u0000\u0000"
+ + "\u0216\u020e\u0001\u0000\u0000\u0000\u0216\u0212\u0001\u0000\u0000\u0000"
+ + "\u0217g\u0001\u0000\u0000\u0000\u0218\u0221\u0003v;\u0000\u0219\u0221"
+ + "\u0003x<\u0000\u021a\u0221\u0003l6\u0000\u021b\u0221\u0005\u0003\u0000"
+ + "\u0000\u021c\u021e\u00050\u0000\u0000\u021d\u021f\u0003z=\u0000\u021e"
+ + "\u021d\u0001\u0000\u0000\u0000\u021e\u021f\u0001\u0000\u0000\u0000\u021f"
+ + "\u0221\u0001\u0000\u0000\u0000\u0220\u0218\u0001\u0000\u0000\u0000\u0220"
+ + "\u0219\u0001\u0000\u0000\u0000\u0220\u021a\u0001\u0000\u0000\u0000\u0220"
+ + "\u021b\u0001\u0000\u0000\u0000\u0220\u021c\u0001\u0000\u0000\u0000\u0221"
+ + "i\u0001\u0000\u0000\u0000\u0222\u022a\u0003x<\u0000\u0223\u022a\u0003"
+ + "t:\u0000\u0224\u022a\u0003l6\u0000\u0225\u0227\u00050\u0000\u0000\u0226"
+ + "\u0228\u0003z=\u0000\u0227\u0226\u0001\u0000\u0000\u0000\u0227\u0228\u0001"
+ + "\u0000\u0000\u0000\u0228\u022a\u0001\u0000\u0000\u0000\u0229\u0222\u0001"
+ + "\u0000\u0000\u0000\u0229\u0223\u0001\u0000\u0000\u0000\u0229\u0224\u0001"
+ + "\u0000\u0000\u0000\u0229\u0225\u0001\u0000\u0000\u0000\u022ak\u0001\u0000"
+ + "\u0000\u0000\u022b\u022c\u00053\u0000\u0000\u022c\u0230\u0003p8\u0000"
+ + "\u022d\u022e\u00053\u0000\u0000\u022e\u0230\u0003n7\u0000\u022f\u022b"
+ + "\u0001\u0000\u0000\u0000\u022f\u022d\u0001\u0000\u0000\u0000\u0230m\u0001"
+ + "\u0000\u0000\u0000\u0231\u0232\u0005!\u0000\u0000\u0232\u0237\u0003p8"
+ + "\u0000\u0233\u0234\u0005-\u0000\u0000\u0234\u0236\u0003p8\u0000\u0235"
+ + "\u0233\u0001\u0000\u0000\u0000\u0236\u0239\u0001\u0000\u0000\u0000\u0237"
+ + "\u0235\u0001\u0000\u0000\u0000\u0237\u0238\u0001\u0000\u0000\u0000\u0238"
+ + "\u023a\u0001\u0000\u0000\u0000\u0239\u0237\u0001\u0000\u0000\u0000\u023a"
+ + "\u023b\u0005\"\u0000\u0000\u023bo\u0001\u0000\u0000\u0000\u023c\u023e"
+ + "\u0005\u0001\u0000\u0000\u023d\u023f\u0003z=\u0000\u023e\u023d\u0001\u0000"
+ + "\u0000\u0000\u023e\u023f\u0001\u0000\u0000\u0000\u023f\u0247\u0001\u0000"
+ + "\u0000\u0000\u0240\u0242\u0005\b\u0000\u0000\u0241\u0243\u0003z=\u0000"
+ + "\u0242\u0241\u0001\u0000\u0000\u0000\u0242\u0243\u0001\u0000\u0000\u0000"
+ + "\u0243\u0247\u0001\u0000\u0000\u0000\u0244\u0247\u0003v;\u0000\u0245\u0247"
+ + "\u0005\u0003\u0000\u0000\u0246\u023c\u0001\u0000\u0000\u0000\u0246\u0240"
+ + "\u0001\u0000\u0000\u0000\u0246\u0244\u0001\u0000\u0000\u0000\u0246\u0245"
+ + "\u0001\u0000\u0000\u0000\u0247q\u0001\u0000\u0000\u0000\u0248\u0253\u0005"
+ + "!\u0000\u0000\u0249\u024b\u0003\b\u0004\u0000\u024a\u0249\u0001\u0000"
+ + "\u0000\u0000\u024a\u024b\u0001\u0000\u0000\u0000\u024b\u024f\u0001\u0000"
+ + "\u0000\u0000\u024c\u024e\u00036\u001b\u0000\u024d\u024c\u0001\u0000\u0000"
+ + "\u0000\u024e\u0251\u0001\u0000\u0000\u0000\u024f\u024d\u0001\u0000\u0000"
+ + "\u0000\u024f\u0250\u0001\u0000\u0000\u0000\u0250\u0252\u0001\u0000\u0000"
+ + "\u0000\u0251\u024f\u0001\u0000\u0000\u0000\u0252\u0254\u0005\u001d\u0000"
+ + "\u0000\u0253\u024a\u0001\u0000\u0000\u0000\u0253\u0254\u0001\u0000\u0000"
+ + "\u0000\u0254\u0255\u0001\u0000\u0000\u0000\u0255\u0256\u0003Z-\u0000\u0256"
+ + "\u0257\u0005\"\u0000\u0000\u0257s\u0001\u0000\u0000\u0000\u0258\u025a"
+ + "\u0005\u0002\u0000\u0000\u0259\u025b\u0003\u001e\u000f\u0000\u025a\u0259"
+ + "\u0001\u0000\u0000\u0000\u025a\u025b\u0001\u0000\u0000\u0000\u025b\u025d"
+ + "\u0001\u0000\u0000\u0000\u025c\u025e\u0003z=\u0000\u025d\u025c\u0001\u0000"
+ + "\u0000\u0000\u025d\u025e\u0001\u0000\u0000\u0000\u025eu\u0001\u0000\u0000"
+ + "\u0000\u025f\u0260\u0005\b\u0000\u0000\u0260\u0261\u0005/\u0000\u0000"
+ + "\u0261\u0262\u0005\b\u0000\u0000\u0262w\u0001\u0000\u0000\u0000\u0263"
+ + "\u0265\u0005\u0001\u0000\u0000\u0264\u0266\u0003z=\u0000\u0265\u0264\u0001"
+ + "\u0000\u0000\u0000\u0265\u0266\u0001\u0000\u0000\u0000\u0266\u026c\u0001"
+ + "\u0000\u0000\u0000\u0267\u0269\u0005\b\u0000\u0000\u0268\u026a\u0003z"
+ + "=\u0000\u0269\u0268\u0001\u0000\u0000\u0000\u0269\u026a\u0001\u0000\u0000"
+ + "\u0000\u026a\u026c\u0001\u0000\u0000\u0000\u026b\u0263\u0001\u0000\u0000"
+ + "\u0000\u026b\u0267\u0001\u0000\u0000\u0000\u026cy\u0001\u0000\u0000\u0000"
+ + "\u026d\u026e\u0005&\u0000\u0000\u026e\u0273\u0003|>\u0000\u026f\u0270"
+ + "\u0005\u001f\u0000\u0000\u0270\u0272\u0003|>\u0000\u0271\u026f\u0001\u0000"
+ + "\u0000\u0000\u0272\u0275\u0001\u0000\u0000\u0000\u0273\u0271\u0001\u0000"
+ + "\u0000\u0000\u0273\u0274\u0001\u0000\u0000\u0000\u0274\u0276\u0001\u0000"
+ + "\u0000\u0000\u0275\u0273\u0001\u0000\u0000\u0000\u0276\u0277\u0005\'\u0000"
+ + "\u0000\u0277{\u0001\u0000\u0000\u0000\u0278\u0280\u0003~?\u0000\u0279"
+ + "\u027a\u0003~?\u0000\u027a\u027d\u0005(\u0000\u0000\u027b\u027e\u0003"
+ + "~?\u0000\u027c\u027e\u0005\b\u0000\u0000\u027d\u027b\u0001\u0000\u0000"
+ + "\u0000\u027d\u027c\u0001\u0000\u0000\u0000\u027e\u0280\u0001\u0000\u0000"
+ + "\u0000\u027f\u0278\u0001\u0000\u0000\u0000\u027f\u0279\u0001\u0000\u0000"
+ + "\u0000\u0280}\u0001\u0000\u0000\u0000\u0281\u0282\u0007\u0002\u0000\u0000"
+ + "\u0282\u007f\u0001\u0000\u0000\u0000U\u0083\u008a\u0091\u009f\u00a6\u00af"
+ + "\u00bd\u00c3\u00cb\u00d5\u00da\u00e1\u00ea\u00ee\u00f4\u00fc\u0102\u010b"
+ + "\u0116\u011c\u0121\u0126\u012a\u012e\u0131\u0134\u0137\u013c\u0147\u014b"
+ + "\u0156\u0161\u016e\u0179\u017f\u0184\u0188\u0196\u019b\u019e\u01a3\u01a7"
+ + "\u01ab\u01af\u01b3\u01b5\u01bb\u01c7\u01d0\u01d4\u01d8\u01df\u01e3\u01e8"
+ + "\u01eb\u01f0\u01f5\u01fa\u01fc\u0202\u0206\u020c\u0210\u0214\u0216\u021e"
+ + "\u0220\u0227\u0229\u022f\u0237\u023e\u0242\u0246\u024a\u024f\u0253\u025a"
+ + "\u025d\u0265\u0269\u026b\u0273\u027d\u027f";
+ public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
diff --git a/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/ANTLRv4ParserBaseListener.java b/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/ANTLRv4ParserBaseListener.java
new file mode 100644
index 0000000..8063623
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/ANTLRv4ParserBaseListener.java
@@ -0,0 +1,808 @@
+// Generated from ./ANTLRv4Parser.g4 by ANTLR 4.13.1
+package org.antlr.parser.antlr4;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * This class provides an empty implementation of {@link ANTLRv4ParserListener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+@SuppressWarnings("CheckReturnValue")
+public class ANTLRv4ParserBaseListener implements ANTLRv4ParserListener {
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGrammarSpec(ANTLRv4Parser.GrammarSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGrammarSpec(ANTLRv4Parser.GrammarSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGrammarDecl(ANTLRv4Parser.GrammarDeclContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGrammarDecl(ANTLRv4Parser.GrammarDeclContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGrammarType(ANTLRv4Parser.GrammarTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGrammarType(ANTLRv4Parser.GrammarTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrequelConstruct(ANTLRv4Parser.PrequelConstructContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrequelConstruct(ANTLRv4Parser.PrequelConstructContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOptionsSpec(ANTLRv4Parser.OptionsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOptionsSpec(ANTLRv4Parser.OptionsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOption(ANTLRv4Parser.OptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOption(ANTLRv4Parser.OptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOptionValue(ANTLRv4Parser.OptionValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOptionValue(ANTLRv4Parser.OptionValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDelegateGrammars(ANTLRv4Parser.DelegateGrammarsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDelegateGrammars(ANTLRv4Parser.DelegateGrammarsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDelegateGrammar(ANTLRv4Parser.DelegateGrammarContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDelegateGrammar(ANTLRv4Parser.DelegateGrammarContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTokensSpec(ANTLRv4Parser.TokensSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTokensSpec(ANTLRv4Parser.TokensSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterChannelsSpec(ANTLRv4Parser.ChannelsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitChannelsSpec(ANTLRv4Parser.ChannelsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdList(ANTLRv4Parser.IdListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdList(ANTLRv4Parser.IdListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAction_(ANTLRv4Parser.Action_Context ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAction_(ANTLRv4Parser.Action_Context ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterActionScopeName(ANTLRv4Parser.ActionScopeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitActionScopeName(ANTLRv4Parser.ActionScopeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterActionBlock(ANTLRv4Parser.ActionBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitActionBlock(ANTLRv4Parser.ActionBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArgActionBlock(ANTLRv4Parser.ArgActionBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArgActionBlock(ANTLRv4Parser.ArgActionBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterModeSpec(ANTLRv4Parser.ModeSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitModeSpec(ANTLRv4Parser.ModeSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRules(ANTLRv4Parser.RulesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRules(ANTLRv4Parser.RulesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleSpec(ANTLRv4Parser.RuleSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleSpec(ANTLRv4Parser.RuleSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParserRuleSpec(ANTLRv4Parser.ParserRuleSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParserRuleSpec(ANTLRv4Parser.ParserRuleSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExceptionGroup(ANTLRv4Parser.ExceptionGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExceptionGroup(ANTLRv4Parser.ExceptionGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExceptionHandler(ANTLRv4Parser.ExceptionHandlerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExceptionHandler(ANTLRv4Parser.ExceptionHandlerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFinallyClause(ANTLRv4Parser.FinallyClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFinallyClause(ANTLRv4Parser.FinallyClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRulePrequel(ANTLRv4Parser.RulePrequelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRulePrequel(ANTLRv4Parser.RulePrequelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleReturns(ANTLRv4Parser.RuleReturnsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleReturns(ANTLRv4Parser.RuleReturnsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterThrowsSpec(ANTLRv4Parser.ThrowsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitThrowsSpec(ANTLRv4Parser.ThrowsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLocalsSpec(ANTLRv4Parser.LocalsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLocalsSpec(ANTLRv4Parser.LocalsSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleAction(ANTLRv4Parser.RuleActionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleAction(ANTLRv4Parser.RuleActionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleModifiers(ANTLRv4Parser.RuleModifiersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleModifiers(ANTLRv4Parser.RuleModifiersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleModifier(ANTLRv4Parser.RuleModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleModifier(ANTLRv4Parser.RuleModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleBlock(ANTLRv4Parser.RuleBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleBlock(ANTLRv4Parser.RuleBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleAltList(ANTLRv4Parser.RuleAltListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleAltList(ANTLRv4Parser.RuleAltListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLabeledAlt(ANTLRv4Parser.LabeledAltContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLabeledAlt(ANTLRv4Parser.LabeledAltContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerRuleSpec(ANTLRv4Parser.LexerRuleSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerRuleSpec(ANTLRv4Parser.LexerRuleSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerRuleBlock(ANTLRv4Parser.LexerRuleBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerRuleBlock(ANTLRv4Parser.LexerRuleBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerAltList(ANTLRv4Parser.LexerAltListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerAltList(ANTLRv4Parser.LexerAltListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerAlt(ANTLRv4Parser.LexerAltContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerAlt(ANTLRv4Parser.LexerAltContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerElements(ANTLRv4Parser.LexerElementsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerElements(ANTLRv4Parser.LexerElementsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerElement(ANTLRv4Parser.LexerElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerElement(ANTLRv4Parser.LexerElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLabeledLexerElement(ANTLRv4Parser.LabeledLexerElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLabeledLexerElement(ANTLRv4Parser.LabeledLexerElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerBlock(ANTLRv4Parser.LexerBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerBlock(ANTLRv4Parser.LexerBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerCommands(ANTLRv4Parser.LexerCommandsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerCommands(ANTLRv4Parser.LexerCommandsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerCommand(ANTLRv4Parser.LexerCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerCommand(ANTLRv4Parser.LexerCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerCommandName(ANTLRv4Parser.LexerCommandNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerCommandName(ANTLRv4Parser.LexerCommandNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerCommandExpr(ANTLRv4Parser.LexerCommandExprContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerCommandExpr(ANTLRv4Parser.LexerCommandExprContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAltList(ANTLRv4Parser.AltListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAltList(ANTLRv4Parser.AltListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAlternative(ANTLRv4Parser.AlternativeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAlternative(ANTLRv4Parser.AlternativeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElement(ANTLRv4Parser.ElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElement(ANTLRv4Parser.ElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLabeledElement(ANTLRv4Parser.LabeledElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLabeledElement(ANTLRv4Parser.LabeledElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEbnf(ANTLRv4Parser.EbnfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEbnf(ANTLRv4Parser.EbnfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlockSuffix(ANTLRv4Parser.BlockSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlockSuffix(ANTLRv4Parser.BlockSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEbnfSuffix(ANTLRv4Parser.EbnfSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEbnfSuffix(ANTLRv4Parser.EbnfSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLexerAtom(ANTLRv4Parser.LexerAtomContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLexerAtom(ANTLRv4Parser.LexerAtomContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAtom(ANTLRv4Parser.AtomContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAtom(ANTLRv4Parser.AtomContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNotSet(ANTLRv4Parser.NotSetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNotSet(ANTLRv4Parser.NotSetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlockSet(ANTLRv4Parser.BlockSetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlockSet(ANTLRv4Parser.BlockSetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSetElement(ANTLRv4Parser.SetElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSetElement(ANTLRv4Parser.SetElementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlock(ANTLRv4Parser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlock(ANTLRv4Parser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRuleref(ANTLRv4Parser.RulerefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRuleref(ANTLRv4Parser.RulerefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCharacterRange(ANTLRv4Parser.CharacterRangeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCharacterRange(ANTLRv4Parser.CharacterRangeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTerminal(ANTLRv4Parser.TerminalContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTerminal(ANTLRv4Parser.TerminalContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementOptions(ANTLRv4Parser.ElementOptionsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementOptions(ANTLRv4Parser.ElementOptionsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementOption(ANTLRv4Parser.ElementOptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementOption(ANTLRv4Parser.ElementOptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdentifier(ANTLRv4Parser.IdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdentifier(ANTLRv4Parser.IdentifierContext ctx) { }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitTerminal(TerminalNode node) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitErrorNode(ErrorNode node) { }
+}
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/ANTLRv4ParserListener.java b/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/ANTLRv4ParserListener.java
new file mode 100644
index 0000000..097b4fe
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/ANTLRv4ParserListener.java
@@ -0,0 +1,650 @@
+// Generated from ./ANTLRv4Parser.g4 by ANTLR 4.13.1
+package org.antlr.parser.antlr4;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link ANTLRv4Parser}.
+ */
+public interface ANTLRv4ParserListener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#grammarSpec}.
+ * @param ctx the parse tree
+ */
+ void enterGrammarSpec(ANTLRv4Parser.GrammarSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#grammarSpec}.
+ * @param ctx the parse tree
+ */
+ void exitGrammarSpec(ANTLRv4Parser.GrammarSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#grammarDecl}.
+ * @param ctx the parse tree
+ */
+ void enterGrammarDecl(ANTLRv4Parser.GrammarDeclContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#grammarDecl}.
+ * @param ctx the parse tree
+ */
+ void exitGrammarDecl(ANTLRv4Parser.GrammarDeclContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#grammarType}.
+ * @param ctx the parse tree
+ */
+ void enterGrammarType(ANTLRv4Parser.GrammarTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#grammarType}.
+ * @param ctx the parse tree
+ */
+ void exitGrammarType(ANTLRv4Parser.GrammarTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#prequelConstruct}.
+ * @param ctx the parse tree
+ */
+ void enterPrequelConstruct(ANTLRv4Parser.PrequelConstructContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#prequelConstruct}.
+ * @param ctx the parse tree
+ */
+ void exitPrequelConstruct(ANTLRv4Parser.PrequelConstructContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#optionsSpec}.
+ * @param ctx the parse tree
+ */
+ void enterOptionsSpec(ANTLRv4Parser.OptionsSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#optionsSpec}.
+ * @param ctx the parse tree
+ */
+ void exitOptionsSpec(ANTLRv4Parser.OptionsSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#option}.
+ * @param ctx the parse tree
+ */
+ void enterOption(ANTLRv4Parser.OptionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#option}.
+ * @param ctx the parse tree
+ */
+ void exitOption(ANTLRv4Parser.OptionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#optionValue}.
+ * @param ctx the parse tree
+ */
+ void enterOptionValue(ANTLRv4Parser.OptionValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#optionValue}.
+ * @param ctx the parse tree
+ */
+ void exitOptionValue(ANTLRv4Parser.OptionValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#delegateGrammars}.
+ * @param ctx the parse tree
+ */
+ void enterDelegateGrammars(ANTLRv4Parser.DelegateGrammarsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#delegateGrammars}.
+ * @param ctx the parse tree
+ */
+ void exitDelegateGrammars(ANTLRv4Parser.DelegateGrammarsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#delegateGrammar}.
+ * @param ctx the parse tree
+ */
+ void enterDelegateGrammar(ANTLRv4Parser.DelegateGrammarContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#delegateGrammar}.
+ * @param ctx the parse tree
+ */
+ void exitDelegateGrammar(ANTLRv4Parser.DelegateGrammarContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#tokensSpec}.
+ * @param ctx the parse tree
+ */
+ void enterTokensSpec(ANTLRv4Parser.TokensSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#tokensSpec}.
+ * @param ctx the parse tree
+ */
+ void exitTokensSpec(ANTLRv4Parser.TokensSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#channelsSpec}.
+ * @param ctx the parse tree
+ */
+ void enterChannelsSpec(ANTLRv4Parser.ChannelsSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#channelsSpec}.
+ * @param ctx the parse tree
+ */
+ void exitChannelsSpec(ANTLRv4Parser.ChannelsSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#idList}.
+ * @param ctx the parse tree
+ */
+ void enterIdList(ANTLRv4Parser.IdListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#idList}.
+ * @param ctx the parse tree
+ */
+ void exitIdList(ANTLRv4Parser.IdListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#action_}.
+ * @param ctx the parse tree
+ */
+ void enterAction_(ANTLRv4Parser.Action_Context ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#action_}.
+ * @param ctx the parse tree
+ */
+ void exitAction_(ANTLRv4Parser.Action_Context ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#actionScopeName}.
+ * @param ctx the parse tree
+ */
+ void enterActionScopeName(ANTLRv4Parser.ActionScopeNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#actionScopeName}.
+ * @param ctx the parse tree
+ */
+ void exitActionScopeName(ANTLRv4Parser.ActionScopeNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#actionBlock}.
+ * @param ctx the parse tree
+ */
+ void enterActionBlock(ANTLRv4Parser.ActionBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#actionBlock}.
+ * @param ctx the parse tree
+ */
+ void exitActionBlock(ANTLRv4Parser.ActionBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#argActionBlock}.
+ * @param ctx the parse tree
+ */
+ void enterArgActionBlock(ANTLRv4Parser.ArgActionBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#argActionBlock}.
+ * @param ctx the parse tree
+ */
+ void exitArgActionBlock(ANTLRv4Parser.ArgActionBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#modeSpec}.
+ * @param ctx the parse tree
+ */
+ void enterModeSpec(ANTLRv4Parser.ModeSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#modeSpec}.
+ * @param ctx the parse tree
+ */
+ void exitModeSpec(ANTLRv4Parser.ModeSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#rules}.
+ * @param ctx the parse tree
+ */
+ void enterRules(ANTLRv4Parser.RulesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#rules}.
+ * @param ctx the parse tree
+ */
+ void exitRules(ANTLRv4Parser.RulesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleSpec}.
+ * @param ctx the parse tree
+ */
+ void enterRuleSpec(ANTLRv4Parser.RuleSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleSpec}.
+ * @param ctx the parse tree
+ */
+ void exitRuleSpec(ANTLRv4Parser.RuleSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#parserRuleSpec}.
+ * @param ctx the parse tree
+ */
+ void enterParserRuleSpec(ANTLRv4Parser.ParserRuleSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#parserRuleSpec}.
+ * @param ctx the parse tree
+ */
+ void exitParserRuleSpec(ANTLRv4Parser.ParserRuleSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#exceptionGroup}.
+ * @param ctx the parse tree
+ */
+ void enterExceptionGroup(ANTLRv4Parser.ExceptionGroupContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#exceptionGroup}.
+ * @param ctx the parse tree
+ */
+ void exitExceptionGroup(ANTLRv4Parser.ExceptionGroupContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#exceptionHandler}.
+ * @param ctx the parse tree
+ */
+ void enterExceptionHandler(ANTLRv4Parser.ExceptionHandlerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#exceptionHandler}.
+ * @param ctx the parse tree
+ */
+ void exitExceptionHandler(ANTLRv4Parser.ExceptionHandlerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#finallyClause}.
+ * @param ctx the parse tree
+ */
+ void enterFinallyClause(ANTLRv4Parser.FinallyClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#finallyClause}.
+ * @param ctx the parse tree
+ */
+ void exitFinallyClause(ANTLRv4Parser.FinallyClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#rulePrequel}.
+ * @param ctx the parse tree
+ */
+ void enterRulePrequel(ANTLRv4Parser.RulePrequelContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#rulePrequel}.
+ * @param ctx the parse tree
+ */
+ void exitRulePrequel(ANTLRv4Parser.RulePrequelContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleReturns}.
+ * @param ctx the parse tree
+ */
+ void enterRuleReturns(ANTLRv4Parser.RuleReturnsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleReturns}.
+ * @param ctx the parse tree
+ */
+ void exitRuleReturns(ANTLRv4Parser.RuleReturnsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#throwsSpec}.
+ * @param ctx the parse tree
+ */
+ void enterThrowsSpec(ANTLRv4Parser.ThrowsSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#throwsSpec}.
+ * @param ctx the parse tree
+ */
+ void exitThrowsSpec(ANTLRv4Parser.ThrowsSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#localsSpec}.
+ * @param ctx the parse tree
+ */
+ void enterLocalsSpec(ANTLRv4Parser.LocalsSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#localsSpec}.
+ * @param ctx the parse tree
+ */
+ void exitLocalsSpec(ANTLRv4Parser.LocalsSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleAction}.
+ * @param ctx the parse tree
+ */
+ void enterRuleAction(ANTLRv4Parser.RuleActionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleAction}.
+ * @param ctx the parse tree
+ */
+ void exitRuleAction(ANTLRv4Parser.RuleActionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleModifiers}.
+ * @param ctx the parse tree
+ */
+ void enterRuleModifiers(ANTLRv4Parser.RuleModifiersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleModifiers}.
+ * @param ctx the parse tree
+ */
+ void exitRuleModifiers(ANTLRv4Parser.RuleModifiersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleModifier}.
+ * @param ctx the parse tree
+ */
+ void enterRuleModifier(ANTLRv4Parser.RuleModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleModifier}.
+ * @param ctx the parse tree
+ */
+ void exitRuleModifier(ANTLRv4Parser.RuleModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleBlock}.
+ * @param ctx the parse tree
+ */
+ void enterRuleBlock(ANTLRv4Parser.RuleBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleBlock}.
+ * @param ctx the parse tree
+ */
+ void exitRuleBlock(ANTLRv4Parser.RuleBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleAltList}.
+ * @param ctx the parse tree
+ */
+ void enterRuleAltList(ANTLRv4Parser.RuleAltListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleAltList}.
+ * @param ctx the parse tree
+ */
+ void exitRuleAltList(ANTLRv4Parser.RuleAltListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#labeledAlt}.
+ * @param ctx the parse tree
+ */
+ void enterLabeledAlt(ANTLRv4Parser.LabeledAltContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#labeledAlt}.
+ * @param ctx the parse tree
+ */
+ void exitLabeledAlt(ANTLRv4Parser.LabeledAltContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerRuleSpec}.
+ * @param ctx the parse tree
+ */
+ void enterLexerRuleSpec(ANTLRv4Parser.LexerRuleSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerRuleSpec}.
+ * @param ctx the parse tree
+ */
+ void exitLexerRuleSpec(ANTLRv4Parser.LexerRuleSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerRuleBlock}.
+ * @param ctx the parse tree
+ */
+ void enterLexerRuleBlock(ANTLRv4Parser.LexerRuleBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerRuleBlock}.
+ * @param ctx the parse tree
+ */
+ void exitLexerRuleBlock(ANTLRv4Parser.LexerRuleBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerAltList}.
+ * @param ctx the parse tree
+ */
+ void enterLexerAltList(ANTLRv4Parser.LexerAltListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerAltList}.
+ * @param ctx the parse tree
+ */
+ void exitLexerAltList(ANTLRv4Parser.LexerAltListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerAlt}.
+ * @param ctx the parse tree
+ */
+ void enterLexerAlt(ANTLRv4Parser.LexerAltContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerAlt}.
+ * @param ctx the parse tree
+ */
+ void exitLexerAlt(ANTLRv4Parser.LexerAltContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerElements}.
+ * @param ctx the parse tree
+ */
+ void enterLexerElements(ANTLRv4Parser.LexerElementsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerElements}.
+ * @param ctx the parse tree
+ */
+ void exitLexerElements(ANTLRv4Parser.LexerElementsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerElement}.
+ * @param ctx the parse tree
+ */
+ void enterLexerElement(ANTLRv4Parser.LexerElementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerElement}.
+ * @param ctx the parse tree
+ */
+ void exitLexerElement(ANTLRv4Parser.LexerElementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#labeledLexerElement}.
+ * @param ctx the parse tree
+ */
+ void enterLabeledLexerElement(ANTLRv4Parser.LabeledLexerElementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#labeledLexerElement}.
+ * @param ctx the parse tree
+ */
+ void exitLabeledLexerElement(ANTLRv4Parser.LabeledLexerElementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerBlock}.
+ * @param ctx the parse tree
+ */
+ void enterLexerBlock(ANTLRv4Parser.LexerBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerBlock}.
+ * @param ctx the parse tree
+ */
+ void exitLexerBlock(ANTLRv4Parser.LexerBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerCommands}.
+ * @param ctx the parse tree
+ */
+ void enterLexerCommands(ANTLRv4Parser.LexerCommandsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerCommands}.
+ * @param ctx the parse tree
+ */
+ void exitLexerCommands(ANTLRv4Parser.LexerCommandsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerCommand}.
+ * @param ctx the parse tree
+ */
+ void enterLexerCommand(ANTLRv4Parser.LexerCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerCommand}.
+ * @param ctx the parse tree
+ */
+ void exitLexerCommand(ANTLRv4Parser.LexerCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerCommandName}.
+ * @param ctx the parse tree
+ */
+ void enterLexerCommandName(ANTLRv4Parser.LexerCommandNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerCommandName}.
+ * @param ctx the parse tree
+ */
+ void exitLexerCommandName(ANTLRv4Parser.LexerCommandNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerCommandExpr}.
+ * @param ctx the parse tree
+ */
+ void enterLexerCommandExpr(ANTLRv4Parser.LexerCommandExprContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerCommandExpr}.
+ * @param ctx the parse tree
+ */
+ void exitLexerCommandExpr(ANTLRv4Parser.LexerCommandExprContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#altList}.
+ * @param ctx the parse tree
+ */
+ void enterAltList(ANTLRv4Parser.AltListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#altList}.
+ * @param ctx the parse tree
+ */
+ void exitAltList(ANTLRv4Parser.AltListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#alternative}.
+ * @param ctx the parse tree
+ */
+ void enterAlternative(ANTLRv4Parser.AlternativeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#alternative}.
+ * @param ctx the parse tree
+ */
+ void exitAlternative(ANTLRv4Parser.AlternativeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#element}.
+ * @param ctx the parse tree
+ */
+ void enterElement(ANTLRv4Parser.ElementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#element}.
+ * @param ctx the parse tree
+ */
+ void exitElement(ANTLRv4Parser.ElementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#labeledElement}.
+ * @param ctx the parse tree
+ */
+ void enterLabeledElement(ANTLRv4Parser.LabeledElementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#labeledElement}.
+ * @param ctx the parse tree
+ */
+ void exitLabeledElement(ANTLRv4Parser.LabeledElementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ebnf}.
+ * @param ctx the parse tree
+ */
+ void enterEbnf(ANTLRv4Parser.EbnfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ebnf}.
+ * @param ctx the parse tree
+ */
+ void exitEbnf(ANTLRv4Parser.EbnfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#blockSuffix}.
+ * @param ctx the parse tree
+ */
+ void enterBlockSuffix(ANTLRv4Parser.BlockSuffixContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#blockSuffix}.
+ * @param ctx the parse tree
+ */
+ void exitBlockSuffix(ANTLRv4Parser.BlockSuffixContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ebnfSuffix}.
+ * @param ctx the parse tree
+ */
+ void enterEbnfSuffix(ANTLRv4Parser.EbnfSuffixContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ebnfSuffix}.
+ * @param ctx the parse tree
+ */
+ void exitEbnfSuffix(ANTLRv4Parser.EbnfSuffixContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#lexerAtom}.
+ * @param ctx the parse tree
+ */
+ void enterLexerAtom(ANTLRv4Parser.LexerAtomContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#lexerAtom}.
+ * @param ctx the parse tree
+ */
+ void exitLexerAtom(ANTLRv4Parser.LexerAtomContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#atom}.
+ * @param ctx the parse tree
+ */
+ void enterAtom(ANTLRv4Parser.AtomContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#atom}.
+ * @param ctx the parse tree
+ */
+ void exitAtom(ANTLRv4Parser.AtomContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#notSet}.
+ * @param ctx the parse tree
+ */
+ void enterNotSet(ANTLRv4Parser.NotSetContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#notSet}.
+ * @param ctx the parse tree
+ */
+ void exitNotSet(ANTLRv4Parser.NotSetContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#blockSet}.
+ * @param ctx the parse tree
+ */
+ void enterBlockSet(ANTLRv4Parser.BlockSetContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#blockSet}.
+ * @param ctx the parse tree
+ */
+ void exitBlockSet(ANTLRv4Parser.BlockSetContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#setElement}.
+ * @param ctx the parse tree
+ */
+ void enterSetElement(ANTLRv4Parser.SetElementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#setElement}.
+ * @param ctx the parse tree
+ */
+ void exitSetElement(ANTLRv4Parser.SetElementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#block}.
+ * @param ctx the parse tree
+ */
+ void enterBlock(ANTLRv4Parser.BlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#block}.
+ * @param ctx the parse tree
+ */
+ void exitBlock(ANTLRv4Parser.BlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#ruleref}.
+ * @param ctx the parse tree
+ */
+ void enterRuleref(ANTLRv4Parser.RulerefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#ruleref}.
+ * @param ctx the parse tree
+ */
+ void exitRuleref(ANTLRv4Parser.RulerefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#characterRange}.
+ * @param ctx the parse tree
+ */
+ void enterCharacterRange(ANTLRv4Parser.CharacterRangeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#characterRange}.
+ * @param ctx the parse tree
+ */
+ void exitCharacterRange(ANTLRv4Parser.CharacterRangeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#terminal}.
+ * @param ctx the parse tree
+ */
+ void enterTerminal(ANTLRv4Parser.TerminalContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#terminal}.
+ * @param ctx the parse tree
+ */
+ void exitTerminal(ANTLRv4Parser.TerminalContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#elementOptions}.
+ * @param ctx the parse tree
+ */
+ void enterElementOptions(ANTLRv4Parser.ElementOptionsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#elementOptions}.
+ * @param ctx the parse tree
+ */
+ void exitElementOptions(ANTLRv4Parser.ElementOptionsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#elementOption}.
+ * @param ctx the parse tree
+ */
+ void enterElementOption(ANTLRv4Parser.ElementOptionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#elementOption}.
+ * @param ctx the parse tree
+ */
+ void exitElementOption(ANTLRv4Parser.ElementOptionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link ANTLRv4Parser#identifier}.
+ * @param ctx the parse tree
+ */
+ void enterIdentifier(ANTLRv4Parser.IdentifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link ANTLRv4Parser#identifier}.
+ * @param ctx the parse tree
+ */
+ void exitIdentifier(ANTLRv4Parser.IdentifierContext ctx);
+}
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/LexerAdaptor.java b/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/LexerAdaptor.java
new file mode 100644
index 0000000..c6492ae
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/java/org/antlr/parser/antlr4/LexerAdaptor.java
@@ -0,0 +1,144 @@
+/*
+ [The "BSD licence"]
+ Copyright (c) 2005-2007 Terence Parr
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+package org.antlr.parser.antlr4;
+
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+
+public abstract class LexerAdaptor extends Lexer {
+ /** Generic type for OPTIONS, TOKENS and CHANNELS */
+ private static final int PREQUEL_CONSTRUCT = -10;
+
+ /**
+ * Track whether we are inside of a rule and whether it is lexical parser.
+ * _currentRuleType==Token.INVALID_TYPE means that we are outside of a rule. At the first sign of
+ * a rule name reference and _currentRuleType==invalid, we can assume that we are starting a
+ * parser rule. Similarly, seeing a token reference when not already in rule means starting a
+ * token rule. The terminating ';' of a rule, flips this back to invalid type. This is not perfect
+ * logic but works. For example, "grammar T;" means that we start and stop a lexical rule for the
+ * "T;". Dangerous but works. The whole point of this state information is to distinguish between
+ * [..arg actions..] and [charsets]. Char sets can only occur in lexical rules and arg actions
+ * cannot occur.
+ */
+ private int _currentRuleType = Token.INVALID_TYPE;
+
+ private boolean insideOptionsBlock = false;
+
+ public LexerAdaptor(CharStream input) {
+ super(input);
+ }
+
+ @Override
+ public Token emit() {
+ if (((_type == ANTLRv4Lexer.OPTIONS)
+ || (_type == ANTLRv4Lexer.TOKENS)
+ || (_type == ANTLRv4Lexer.CHANNELS))
+ && (_currentRuleType == Token.INVALID_TYPE)) { // enter
+ // prequel
+ // construct
+ // ending
+ // with
+ // an
+ // RBRACE
+ _currentRuleType = PREQUEL_CONSTRUCT;
+ } else if ((_type == ANTLRv4Lexer.RBRACE) && (_currentRuleType == PREQUEL_CONSTRUCT)) { // exit
+ // prequel
+ // construct
+ _currentRuleType = Token.INVALID_TYPE;
+ } else if ((_type == ANTLRv4Lexer.AT) && (_currentRuleType == Token.INVALID_TYPE)) { // enter
+ // action
+ _currentRuleType = ANTLRv4Lexer.AT;
+ } else if ((_type == ANTLRv4Lexer.END_ACTION)
+ && (_currentRuleType == ANTLRv4Lexer.AT)) { // exit
+ // action
+ _currentRuleType = Token.INVALID_TYPE;
+ } else if (_type == ANTLRv4Lexer.ID) {
+ final String firstChar =
+ _input.getText(Interval.of(_tokenStartCharIndex, _tokenStartCharIndex));
+ if (Character.isUpperCase(firstChar.charAt(0))) {
+ _type = ANTLRv4Lexer.TOKEN_REF;
+ } else {
+ _type = ANTLRv4Lexer.RULE_REF;
+ }
+ if (_currentRuleType == Token.INVALID_TYPE) { // if outside of rule def
+ _currentRuleType = _type; // set to inside lexer or parser rule
+ }
+ } else if (_type == ANTLRv4Lexer.SEMI) { // exit rule def
+ _currentRuleType = Token.INVALID_TYPE;
+ }
+ return super.emit();
+ }
+
+ public int getCurrentRuleType() {
+ return _currentRuleType;
+ }
+
+ protected void handleBeginArgument() {
+ if (inLexerRule()) {
+ pushMode(ANTLRv4Lexer.LexerCharSet);
+ more();
+ } else {
+ pushMode(ANTLRv4Lexer.Argument);
+ }
+ }
+
+ protected void handleEndAction() {
+ final int oldMode = _mode;
+ final int newMode = popMode();
+ final boolean isActionWithinAction =
+ (_modeStack.size() > 0) && (newMode == ANTLRv4Lexer.Action) && (oldMode == newMode);
+ if (isActionWithinAction) {
+ setType(ANTLRv4Lexer.ACTION_CONTENT);
+ }
+ }
+
+ protected void handleEndArgument() {
+ popMode();
+ if (_modeStack.size() > 0) {
+ setType(ANTLRv4Lexer.ARGUMENT_CONTENT);
+ }
+ }
+
+ protected void handleOptionsLBrace() {
+ if (insideOptionsBlock) {
+ setType(ANTLRv4Lexer.BEGIN_ACTION);
+ pushMode(ANTLRv4Lexer.Action);
+ } else {
+ setType(ANTLRv4Lexer.LBRACE);
+ insideOptionsBlock = true;
+ }
+ }
+
+ private boolean inLexerRule() {
+ return _currentRuleType == ANTLRv4Lexer.TOKEN_REF;
+ }
+
+ public void setCurrentRuleType(int ruleType) {
+ _currentRuleType = ruleType;
+ }
+}
diff --git a/android-app/anter4codeformat/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android-app/anter4codeformat/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/drawable/ic_launcher_background.xml b/android-app/anter4codeformat/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android-app/anter4codeformat/app/src/main/res/layout/activity_main.xml b/android-app/anter4codeformat/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..5521e64
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android-app/anter4codeformat/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android-app/anter4codeformat/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000..c209e78
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..b2dfe3d
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000..4f0f1d6
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..62b611d
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000..948a307
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..1b9a695
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..28d4b77
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9287f50
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..aa7d642
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android-app/anter4codeformat/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9126ae3
Binary files /dev/null and b/android-app/anter4codeformat/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/android-app/anter4codeformat/app/src/main/res/values-night/colors.xml b/android-app/anter4codeformat/app/src/main/res/values-night/colors.xml
new file mode 100644
index 0000000..a6b3dae
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/values-night/colors.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/values-night/themes.xml b/android-app/anter4codeformat/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..e8f677b
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/values/colors.xml b/android-app/anter4codeformat/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..a6b3dae
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/values/colors.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/values/strings.xml b/android-app/anter4codeformat/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..18bdf36
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+
+
+ anter4codeformat
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/values/themes.xml b/android-app/anter4codeformat/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..e8f677b
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/values/themes.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/xml/backup_rules.xml b/android-app/anter4codeformat/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..9b42d90
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/app/src/main/res/xml/data_extraction_rules.xml b/android-app/anter4codeformat/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..c6c3bb0
--- /dev/null
+++ b/android-app/anter4codeformat/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/anter4codeformat/build.gradle b/android-app/anter4codeformat/build.gradle
new file mode 100644
index 0000000..e580861
--- /dev/null
+++ b/android-app/anter4codeformat/build.gradle
@@ -0,0 +1,10 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id 'com.android.application' version '8.2.1' apply false
+ id 'com.android.library' version '8.2.1' apply false
+
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/android-app/anter4codeformat/gradle.properties b/android-app/anter4codeformat/gradle.properties
new file mode 100644
index 0000000..2d12095
--- /dev/null
+++ b/android-app/anter4codeformat/gradle.properties
@@ -0,0 +1,23 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx512m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/android-app/anter4codeformat/gradle/wrapper/gradle-wrapper.jar b/android-app/anter4codeformat/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..d64cd49
Binary files /dev/null and b/android-app/anter4codeformat/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/android-app/anter4codeformat/gradle/wrapper/gradle-wrapper.properties b/android-app/anter4codeformat/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..c898b7a
--- /dev/null
+++ b/android-app/anter4codeformat/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
+networkTimeout=10000
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
\ No newline at end of file
diff --git a/android-app/anter4codeformat/gradlew b/android-app/anter4codeformat/gradlew
new file mode 100644
index 0000000..1aa94a4
--- /dev/null
+++ b/android-app/anter4codeformat/gradlew
@@ -0,0 +1,249 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/android-app/anter4codeformat/gradlew.bat b/android-app/anter4codeformat/gradlew.bat
new file mode 100644
index 0000000..6689b85
--- /dev/null
+++ b/android-app/anter4codeformat/gradlew.bat
@@ -0,0 +1,92 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/android-app/anter4codeformat/settings.gradle b/android-app/anter4codeformat/settings.gradle
new file mode 100644
index 0000000..05c1e39
--- /dev/null
+++ b/android-app/anter4codeformat/settings.gradle
@@ -0,0 +1,19 @@
+pluginManagement {
+ repositories {
+ gradlePluginPortal()
+ google()
+ mavenCentral()
+ }
+}
+
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.name = "anter4codeformat"
+
+include(":app")
\ No newline at end of file