diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java index 67fccaa5c..df17932b4 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java @@ -91,7 +91,7 @@ public class AsmFragmentInstance { String constantValueAsm = AsmFormat.getAsmConstant(program, constantVar.getRef(), 99, codeScopeRef); boolean constantValueZp = SymbolType.BYTE.equals(constantVar.getType()); if(!constantValueZp) { - constantValueZp = isConstantValueZp(constantVar.getValue()); + constantValueZp = isConstantValueZp(constantVar.getConstantValue()); } return new AsmParameter(constantValueAsm, constantValueZp); } else if(boundValue instanceof ConstantValue) { @@ -128,7 +128,7 @@ public class AsmFragmentInstance { } if(boundConst instanceof ConstantRef) { ConstantVar reffedConstant = program.getScope().getConstant((ConstantRef) boundConst); - return isConstantValueZp(reffedConstant.getValue()); + return isConstantValueZp(reffedConstant.getConstantValue()); } if(boundConst instanceof ConstantCastValue) { SymbolType toType = ((ConstantCastValue) boundConst).getToType(); diff --git a/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValue.java b/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValue.java index 1def77e6b..d7d410ccb 100644 --- a/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValue.java +++ b/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValue.java @@ -638,12 +638,12 @@ public interface ProgramValue { @Override public Value get() { - return constantVar.getValue(); + return constantVar.getConstantValue(); } @Override public void set(Value val) { - constantVar.setValue((ConstantValue) val); + constantVar.setConstantValue((ConstantValue) val); } } diff --git a/src/main/java/dk/camelot64/kickc/model/symbols/ConstantVar.java b/src/main/java/dk/camelot64/kickc/model/symbols/ConstantVar.java index c7d3d38b5..2dafafb21 100644 --- a/src/main/java/dk/camelot64/kickc/model/symbols/ConstantVar.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/ConstantVar.java @@ -10,7 +10,7 @@ public class ConstantVar extends SymbolVariable { public ConstantVar(String name, Scope scope, SymbolType type, ConstantValue value, String dataSegment) { super(name, scope, type, StorageStrategy.CONSTANT, MemoryArea.MAIN_MEMORY, dataSegment); - setValue(value); + setConstantValue(value); } @Override diff --git a/src/main/java/dk/camelot64/kickc/model/symbols/Scope.java b/src/main/java/dk/camelot64/kickc/model/symbols/Scope.java index 75ca85105..614a41a96 100644 --- a/src/main/java/dk/camelot64/kickc/model/symbols/Scope.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/Scope.java @@ -368,7 +368,7 @@ public abstract class Scope implements Symbol, Serializable { } if(symbol instanceof ConstantVar) { ConstantVar constVar = (ConstantVar) symbol; - res.append(" = " + constVar.getValue().toString(program)); + res.append(" = " + constVar.getConstantValue().toString(program)); } } res.append("\n"); diff --git a/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java b/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java index 1177c99a3..a52deca8b 100644 --- a/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java @@ -85,7 +85,7 @@ public abstract class SymbolVariable implements Symbol { private String dataSegment; /** The constant value if the variable is a constant. Null otherwise. */ - private ConstantValue value; + private ConstantValue constantValue; public SymbolVariable(String name, Scope scope, SymbolType type, StorageStrategy storageStrategy, MemoryArea memoryArea, String dataSegment) { this.name = name; @@ -105,12 +105,12 @@ public abstract class SymbolVariable implements Symbol { fullName = (scopeName.length() > 0) ? scopeName + "::" + name : name; } - public ConstantValue getValue() { - return value; + public ConstantValue getConstantValue() { + return constantValue; } - public void setValue(ConstantValue value) { - this.value = value; + public void setConstantValue(ConstantValue value) { + this.constantValue = value; } public String getDataSegment() { diff --git a/src/main/java/dk/camelot64/kickc/model/values/ConstantRef.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantRef.java index ebf311fb9..22a770142 100644 --- a/src/main/java/dk/camelot64/kickc/model/values/ConstantRef.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantRef.java @@ -20,7 +20,7 @@ public class ConstantRef extends SymbolVariableRef implements ConstantValue { @Override public ConstantLiteral calculateLiteral(ProgramScope scope) { ConstantVar constantVar = scope.getConstant(this); - ConstantValue constantVarValue = constantVar.getValue(); + ConstantValue constantVarValue = constantVar.getConstantValue(); return constantVarValue.calculateLiteral(scope); } } diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java index c09bafb4d..5532e0554 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java @@ -1811,23 +1811,6 @@ public class KickCParser extends Parser { else return visitor.visitChildren(this); } } - public static class DirectiveExportContext extends DirectiveContext { - public TerminalNode EXPORT() { return getToken(KickCParser.EXPORT, 0); } - public DirectiveExportContext(DirectiveContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof KickCParserListener ) ((KickCParserListener)listener).enterDirectiveExport(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof KickCParserListener ) ((KickCParserListener)listener).exitDirectiveExport(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof KickCParserVisitor ) return ((KickCParserVisitor)visitor).visitDirectiveExport(this); - else return visitor.visitChildren(this); - } - } public static class DirectiveNotVolatileContext extends DirectiveContext { public TerminalNode NOTVOLATILE() { return getToken(KickCParser.NOTVOLATILE, 0); } public DirectiveNotVolatileContext(DirectiveContext ctx) { copyFrom(ctx); } @@ -1845,6 +1828,23 @@ public class KickCParser extends Parser { else return visitor.visitChildren(this); } } + public static class DirectiveExportContext extends DirectiveContext { + public TerminalNode EXPORT() { return getToken(KickCParser.EXPORT, 0); } + public DirectiveExportContext(DirectiveContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof KickCParserListener ) ((KickCParserListener)listener).enterDirectiveExport(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof KickCParserListener ) ((KickCParserListener)listener).exitDirectiveExport(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof KickCParserVisitor ) return ((KickCParserVisitor)visitor).visitDirectiveExport(this); + else return visitor.visitChildren(this); + } + } public static class DirectiveExternContext extends DirectiveContext { public TerminalNode EXTERN() { return getToken(KickCParser.EXTERN, 0); } public DirectiveExternContext(DirectiveContext ctx) { copyFrom(ctx); } @@ -1935,10 +1935,10 @@ public class KickCParser extends Parser { enterRule(_localctx, 30, RULE_directive); int _la; try { - setState(302); + setState(298); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { - case 1: + switch (_input.LA(1)) { + case CONST: _localctx = new DirectiveConstContext(_localctx); enterOuterAlt(_localctx, 1); { @@ -1946,7 +1946,7 @@ public class KickCParser extends Parser { match(CONST); } break; - case 2: + case NOTCONST: _localctx = new DirectiveNotConstContext(_localctx); enterOuterAlt(_localctx, 2); { @@ -1954,7 +1954,7 @@ public class KickCParser extends Parser { match(NOTCONST); } break; - case 3: + case MAYBECONST: _localctx = new DirectiveMaybeConstContext(_localctx); enterOuterAlt(_localctx, 3); { @@ -1962,93 +1962,93 @@ public class KickCParser extends Parser { match(MAYBECONST); } break; - case 4: - _localctx = new DirectiveExternContext(_localctx); + case ALIGN: + _localctx = new DirectiveAlignContext(_localctx); enterOuterAlt(_localctx, 4); { setState(257); - match(EXTERN); - } - break; - case 5: - _localctx = new DirectiveExportContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(258); - match(EXPORT); - } - break; - case 6: - _localctx = new DirectiveAlignContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(259); match(ALIGN); - setState(260); + setState(258); match(PAR_BEGIN); - setState(261); + setState(259); match(NUMBER); - setState(262); + setState(260); match(PAR_END); } break; - case 7: + case REGISTER: _localctx = new DirectiveRegisterContext(_localctx); - enterOuterAlt(_localctx, 7); + enterOuterAlt(_localctx, 5); { - setState(263); + setState(261); match(REGISTER); - setState(267); + setState(265); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { case 1: { - setState(264); + setState(262); match(PAR_BEGIN); { - setState(265); + setState(263); match(NAME); } - setState(266); + setState(264); match(PAR_END); } break; } } break; - case 8: + case ADDRESS_ZEROPAGE: _localctx = new DirectiveMemoryAreaZpContext(_localctx); - enterOuterAlt(_localctx, 8); + enterOuterAlt(_localctx, 6); { - setState(269); + setState(267); match(ADDRESS_ZEROPAGE); } break; - case 9: + case ADDRESS_MAINMEM: _localctx = new DirectiveMemoryAreaMainContext(_localctx); - enterOuterAlt(_localctx, 9); + enterOuterAlt(_localctx, 7); { - setState(270); + setState(268); match(ADDRESS_MAINMEM); } break; - case 10: + case ADDRESS: _localctx = new DirectiveMemoryAreaAddressContext(_localctx); - enterOuterAlt(_localctx, 10); + enterOuterAlt(_localctx, 8); { - setState(271); + setState(269); match(ADDRESS); - setState(272); + setState(270); match(PAR_BEGIN); { - setState(273); + setState(271); match(NUMBER); } - setState(274); + setState(272); match(PAR_END); } break; - case 11: + case VOLATILE: + _localctx = new DirectiveVolatileContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(273); + match(VOLATILE); + } + break; + case NOTVOLATILE: + _localctx = new DirectiveNotVolatileContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(274); + match(NOTVOLATILE); + } + break; + case FORM_SSA: _localctx = new DirectiveFormSsaContext(_localctx); enterOuterAlt(_localctx, 11); { @@ -2056,7 +2056,7 @@ public class KickCParser extends Parser { match(FORM_SSA); } break; - case 12: + case FORM_NOTSSA: _localctx = new DirectiveFormNotSsaContext(_localctx); enterOuterAlt(_localctx, 12); { @@ -2064,106 +2064,92 @@ public class KickCParser extends Parser { match(FORM_NOTSSA); } break; - case 13: - _localctx = new DirectiveMemoryAreaAddressContext(_localctx); + case EXTERN: + _localctx = new DirectiveExternContext(_localctx); enterOuterAlt(_localctx, 13); { setState(277); - match(ADDRESS); - setState(278); - match(PAR_BEGIN); - { - setState(279); - match(NUMBER); - } - setState(280); - match(PAR_END); + match(EXTERN); } break; - case 14: - _localctx = new DirectiveInlineContext(_localctx); + case EXPORT: + _localctx = new DirectiveExportContext(_localctx); enterOuterAlt(_localctx, 14); { - setState(281); + setState(278); + match(EXPORT); + } + break; + case INLINE: + _localctx = new DirectiveInlineContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(279); match(INLINE); } break; - case 15: - _localctx = new DirectiveVolatileContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(282); - match(VOLATILE); - } - break; - case 16: - _localctx = new DirectiveNotVolatileContext(_localctx); + case INTERRUPT: + _localctx = new DirectiveInterruptContext(_localctx); enterOuterAlt(_localctx, 16); { - setState(283); - match(NOTVOLATILE); - } - break; - case 17: - _localctx = new DirectiveInterruptContext(_localctx); - enterOuterAlt(_localctx, 17); - { - setState(284); + setState(280); match(INTERRUPT); - setState(288); + setState(284); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { case 1: { - setState(285); + setState(281); match(PAR_BEGIN); - setState(286); + setState(282); match(NAME); - setState(287); + setState(283); match(PAR_END); } break; } } break; - case 18: + case RESERVE: _localctx = new DirectiveReserveZpContext(_localctx); - enterOuterAlt(_localctx, 18); + enterOuterAlt(_localctx, 17); { - setState(290); + setState(286); match(RESERVE); - setState(291); + setState(287); match(PAR_BEGIN); - setState(292); + setState(288); match(NUMBER); - setState(297); + setState(293); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(293); + setState(289); match(COMMA); - setState(294); + setState(290); match(NUMBER); } } - setState(299); + setState(295); _errHandler.sync(this); _la = _input.LA(1); } - setState(300); + setState(296); match(PAR_END); } break; - case 19: + case CALLINGCONVENTION: _localctx = new DirectiveCallingConventionContext(_localctx); - enterOuterAlt(_localctx, 19); + enterOuterAlt(_localctx, 18); { - setState(301); + setState(297); match(CALLINGCONVENTION); } break; + default: + throw new NoViableAltException(this); } } catch (RecognitionException re) { @@ -2210,17 +2196,17 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(305); + setState(301); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(304); + setState(300); stmt(); } } - setState(307); + setState(303); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << NOTCONST) | (1L << MAYBECONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_NOTSSA) | (1L << INLINE) | (1L << VOLATILE) | (1L << NOTVOLATILE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (INTERRUPT - 64)) | (1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0) ); @@ -2561,16 +2547,16 @@ public class KickCParser extends Parser { enterRule(_localctx, 34, RULE_stmt); int _la; try { - setState(393); + setState(389); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { case 1: _localctx = new StmtDeclVarContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(309); + setState(305); declVariables(); - setState(310); + setState(306); match(SEMICOLON); } break; @@ -2578,19 +2564,19 @@ public class KickCParser extends Parser { _localctx = new StmtBlockContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(312); + setState(308); match(CURLY_BEGIN); - setState(314); + setState(310); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << NOTCONST) | (1L << MAYBECONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_NOTSSA) | (1L << INLINE) | (1L << VOLATILE) | (1L << NOTVOLATILE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (INTERRUPT - 64)) | (1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) { { - setState(313); + setState(309); stmtSeq(); } } - setState(316); + setState(312); match(CURLY_END); } break; @@ -2598,9 +2584,9 @@ public class KickCParser extends Parser { _localctx = new StmtExprContext(_localctx); enterOuterAlt(_localctx, 3); { - setState(317); + setState(313); commaExpr(0); - setState(318); + setState(314); match(SEMICOLON); } break; @@ -2608,24 +2594,24 @@ public class KickCParser extends Parser { _localctx = new StmtIfElseContext(_localctx); enterOuterAlt(_localctx, 4); { - setState(320); + setState(316); match(IF); - setState(321); + setState(317); match(PAR_BEGIN); - setState(322); + setState(318); commaExpr(0); - setState(323); + setState(319); match(PAR_END); - setState(324); + setState(320); stmt(); - setState(327); + setState(323); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { case 1: { - setState(325); + setState(321); match(ELSE); - setState(326); + setState(322); stmt(); } break; @@ -2636,29 +2622,29 @@ public class KickCParser extends Parser { _localctx = new StmtWhileContext(_localctx); enterOuterAlt(_localctx, 5); { - setState(332); + setState(328); _errHandler.sync(this); _la = _input.LA(1); while (((((_la - 41)) & ~0x3f) == 0 && ((1L << (_la - 41)) & ((1L << (RESERVE - 41)) | (1L << (CONST - 41)) | (1L << (NOTCONST - 41)) | (1L << (MAYBECONST - 41)) | (1L << (EXTERN - 41)) | (1L << (EXPORT - 41)) | (1L << (ALIGN - 41)) | (1L << (REGISTER - 41)) | (1L << (ADDRESS - 41)) | (1L << (ADDRESS_ZEROPAGE - 41)) | (1L << (ADDRESS_MAINMEM - 41)) | (1L << (FORM_SSA - 41)) | (1L << (FORM_NOTSSA - 41)) | (1L << (INLINE - 41)) | (1L << (VOLATILE - 41)) | (1L << (NOTVOLATILE - 41)) | (1L << (INTERRUPT - 41)) | (1L << (CALLINGCONVENTION - 41)))) != 0)) { { { - setState(329); + setState(325); directive(); } } - setState(334); + setState(330); _errHandler.sync(this); _la = _input.LA(1); } - setState(335); + setState(331); match(WHILE); - setState(336); + setState(332); match(PAR_BEGIN); - setState(337); + setState(333); commaExpr(0); - setState(338); + setState(334); match(PAR_END); - setState(339); + setState(335); stmt(); } break; @@ -2666,33 +2652,33 @@ public class KickCParser extends Parser { _localctx = new StmtDoWhileContext(_localctx); enterOuterAlt(_localctx, 6); { - setState(344); + setState(340); _errHandler.sync(this); _la = _input.LA(1); while (((((_la - 41)) & ~0x3f) == 0 && ((1L << (_la - 41)) & ((1L << (RESERVE - 41)) | (1L << (CONST - 41)) | (1L << (NOTCONST - 41)) | (1L << (MAYBECONST - 41)) | (1L << (EXTERN - 41)) | (1L << (EXPORT - 41)) | (1L << (ALIGN - 41)) | (1L << (REGISTER - 41)) | (1L << (ADDRESS - 41)) | (1L << (ADDRESS_ZEROPAGE - 41)) | (1L << (ADDRESS_MAINMEM - 41)) | (1L << (FORM_SSA - 41)) | (1L << (FORM_NOTSSA - 41)) | (1L << (INLINE - 41)) | (1L << (VOLATILE - 41)) | (1L << (NOTVOLATILE - 41)) | (1L << (INTERRUPT - 41)) | (1L << (CALLINGCONVENTION - 41)))) != 0)) { { { - setState(341); + setState(337); directive(); } } - setState(346); + setState(342); _errHandler.sync(this); _la = _input.LA(1); } - setState(347); + setState(343); match(DO); - setState(348); + setState(344); stmt(); - setState(349); + setState(345); match(WHILE); - setState(350); + setState(346); match(PAR_BEGIN); - setState(351); + setState(347); commaExpr(0); - setState(352); + setState(348); match(PAR_END); - setState(353); + setState(349); match(SEMICOLON); } break; @@ -2700,29 +2686,29 @@ public class KickCParser extends Parser { _localctx = new StmtForContext(_localctx); enterOuterAlt(_localctx, 7); { - setState(358); + setState(354); _errHandler.sync(this); _la = _input.LA(1); while (((((_la - 41)) & ~0x3f) == 0 && ((1L << (_la - 41)) & ((1L << (RESERVE - 41)) | (1L << (CONST - 41)) | (1L << (NOTCONST - 41)) | (1L << (MAYBECONST - 41)) | (1L << (EXTERN - 41)) | (1L << (EXPORT - 41)) | (1L << (ALIGN - 41)) | (1L << (REGISTER - 41)) | (1L << (ADDRESS - 41)) | (1L << (ADDRESS_ZEROPAGE - 41)) | (1L << (ADDRESS_MAINMEM - 41)) | (1L << (FORM_SSA - 41)) | (1L << (FORM_NOTSSA - 41)) | (1L << (INLINE - 41)) | (1L << (VOLATILE - 41)) | (1L << (NOTVOLATILE - 41)) | (1L << (INTERRUPT - 41)) | (1L << (CALLINGCONVENTION - 41)))) != 0)) { { { - setState(355); + setState(351); directive(); } } - setState(360); + setState(356); _errHandler.sync(this); _la = _input.LA(1); } - setState(361); + setState(357); match(FOR); - setState(362); + setState(358); match(PAR_BEGIN); - setState(363); + setState(359); forLoop(); - setState(364); + setState(360); match(PAR_END); - setState(365); + setState(361); stmt(); } break; @@ -2730,19 +2716,19 @@ public class KickCParser extends Parser { _localctx = new StmtSwitchContext(_localctx); enterOuterAlt(_localctx, 8); { - setState(367); + setState(363); match(SWITCH); - setState(368); + setState(364); match(PAR_BEGIN); - setState(369); + setState(365); commaExpr(0); - setState(370); + setState(366); match(PAR_END); - setState(371); + setState(367); match(CURLY_BEGIN); - setState(372); + setState(368); switchCases(); - setState(373); + setState(369); match(CURLY_END); } break; @@ -2750,19 +2736,19 @@ public class KickCParser extends Parser { _localctx = new StmtReturnContext(_localctx); enterOuterAlt(_localctx, 9); { - setState(375); + setState(371); match(RETURN); - setState(377); + setState(373); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)))) != 0)) { { - setState(376); + setState(372); commaExpr(0); } } - setState(379); + setState(375); match(SEMICOLON); } break; @@ -2770,9 +2756,9 @@ public class KickCParser extends Parser { _localctx = new StmtBreakContext(_localctx); enterOuterAlt(_localctx, 10); { - setState(380); + setState(376); match(BREAK); - setState(381); + setState(377); match(SEMICOLON); } break; @@ -2780,9 +2766,9 @@ public class KickCParser extends Parser { _localctx = new StmtContinueContext(_localctx); enterOuterAlt(_localctx, 11); { - setState(382); + setState(378); match(CONTINUE); - setState(383); + setState(379); match(SEMICOLON); } break; @@ -2790,23 +2776,23 @@ public class KickCParser extends Parser { _localctx = new StmtAsmContext(_localctx); enterOuterAlt(_localctx, 12); { - setState(384); + setState(380); match(ASM); - setState(386); + setState(382); _errHandler.sync(this); _la = _input.LA(1); if (_la==PAR_BEGIN) { { - setState(385); + setState(381); asmDirectives(); } } - setState(388); + setState(384); match(CURLY_BEGIN); - setState(389); + setState(385); asmLines(); - setState(390); + setState(386); match(ASM_CURLY_END); } break; @@ -2814,7 +2800,7 @@ public class KickCParser extends Parser { _localctx = new StmtDeclKasmContext(_localctx); enterOuterAlt(_localctx, 13); { - setState(392); + setState(388); declKasm(); } break; @@ -2869,35 +2855,35 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(396); + setState(392); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(395); + setState(391); switchCase(); } } - setState(398); + setState(394); _errHandler.sync(this); _la = _input.LA(1); } while ( _la==CASE ); - setState(405); + setState(401); _errHandler.sync(this); _la = _input.LA(1); if (_la==DEFAULT) { { - setState(400); + setState(396); match(DEFAULT); - setState(401); + setState(397); match(COLON); - setState(403); + setState(399); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << NOTCONST) | (1L << MAYBECONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_NOTSSA) | (1L << INLINE) | (1L << VOLATILE) | (1L << NOTVOLATILE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (INTERRUPT - 64)) | (1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) { { - setState(402); + setState(398); stmtSeq(); } } @@ -2953,18 +2939,18 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(407); + setState(403); match(CASE); - setState(408); + setState(404); expr(0); - setState(409); + setState(405); match(COLON); - setState(411); + setState(407); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << NOTCONST) | (1L << MAYBECONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_NOTSSA) | (1L << INLINE) | (1L << VOLATILE) | (1L << NOTVOLATILE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (INTERRUPT - 64)) | (1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) { { - setState(410); + setState(406); stmtSeq(); } } @@ -3051,27 +3037,27 @@ public class KickCParser extends Parser { enterRule(_localctx, 40, RULE_forLoop); int _la; try { - setState(429); + setState(425); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { case 1: _localctx = new ForClassicContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(413); + setState(409); forClassicInit(); - setState(414); + setState(410); match(SEMICOLON); - setState(415); + setState(411); commaExpr(0); - setState(416); + setState(412); match(SEMICOLON); - setState(418); + setState(414); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)))) != 0)) { { - setState(417); + setState(413); commaExpr(0); } } @@ -3082,25 +3068,25 @@ public class KickCParser extends Parser { _localctx = new ForRangeContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(421); + setState(417); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << NOTCONST) | (1L << MAYBECONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_NOTSSA) | (1L << INLINE) | (1L << VOLATILE) | (1L << NOTVOLATILE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (INTERRUPT - 64)) | (1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)))) != 0)) { { - setState(420); + setState(416); declTypes(); } } - setState(423); + setState(419); match(NAME); - setState(424); + setState(420); match(COLON); - setState(425); + setState(421); expr(0); - setState(426); + setState(422); match(RANGE); - setState(427); + setState(423); expr(0); } break; @@ -3172,19 +3158,19 @@ public class KickCParser extends Parser { enterRule(_localctx, 42, RULE_forClassicInit); int _la; try { - setState(435); + setState(431); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { case 1: _localctx = new ForClassicInitDeclContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(432); + setState(428); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << NOTCONST) | (1L << MAYBECONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_NOTSSA) | (1L << INLINE) | (1L << VOLATILE) | (1L << NOTVOLATILE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (INTERRUPT - 64)) | (1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)))) != 0)) { { - setState(431); + setState(427); declVariables(); } } @@ -3195,7 +3181,7 @@ public class KickCParser extends Parser { _localctx = new ForClassicInitExprContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(434); + setState(430); commaExpr(0); } break; @@ -3454,7 +3440,7 @@ public class KickCParser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(452); + setState(448); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { case 1: @@ -3463,11 +3449,11 @@ public class KickCParser extends Parser { _ctx = _localctx; _prevctx = _localctx; - setState(438); + setState(434); match(PAR_BEGIN); - setState(439); + setState(435); typeDecl(0); - setState(440); + setState(436); match(PAR_END); } break; @@ -3476,7 +3462,7 @@ public class KickCParser extends Parser { _localctx = new TypeSimpleContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(442); + setState(438); match(SIMPLETYPE); } break; @@ -3485,14 +3471,14 @@ public class KickCParser extends Parser { _localctx = new TypeSignedSimpleContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(443); + setState(439); match(SIGNEDNESS); - setState(445); + setState(441); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { case 1: { - setState(444); + setState(440); match(SIMPLETYPE); } break; @@ -3504,7 +3490,7 @@ public class KickCParser extends Parser { _localctx = new TypeStructDefContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(447); + setState(443); structDef(); } break; @@ -3513,7 +3499,7 @@ public class KickCParser extends Parser { _localctx = new TypeStructRefContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(448); + setState(444); structRef(); } break; @@ -3522,7 +3508,7 @@ public class KickCParser extends Parser { _localctx = new TypeEnumDefContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(449); + setState(445); enumDef(); } break; @@ -3531,7 +3517,7 @@ public class KickCParser extends Parser { _localctx = new TypeEnumRefContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(450); + setState(446); enumRef(); } break; @@ -3540,13 +3526,13 @@ public class KickCParser extends Parser { _localctx = new TypeNamedRefContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(451); + setState(447); match(TYPEDEFNAME); } break; } _ctx.stop = _input.LT(-1); - setState(467); + setState(463); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,40,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -3554,16 +3540,16 @@ public class KickCParser extends Parser { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(465); + setState(461); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) { case 1: { _localctx = new TypePtrContext(new TypeDeclContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_typeDecl); - setState(454); + setState(450); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); - setState(455); + setState(451); match(ASTERISK); } break; @@ -3571,21 +3557,21 @@ public class KickCParser extends Parser { { _localctx = new TypeArrayContext(new TypeDeclContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_typeDecl); - setState(456); + setState(452); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); - setState(457); + setState(453); match(BRACKET_BEGIN); - setState(459); + setState(455); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)))) != 0)) { { - setState(458); + setState(454); expr(0); } } - setState(461); + setState(457); match(BRACKET_END); } break; @@ -3593,18 +3579,18 @@ public class KickCParser extends Parser { { _localctx = new TypeProcedureContext(new TypeDeclContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_typeDecl); - setState(462); + setState(458); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(463); + setState(459); match(PAR_BEGIN); - setState(464); + setState(460); match(PAR_END); } break; } } } - setState(469); + setState(465); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,40,_ctx); } @@ -3649,9 +3635,9 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(470); + setState(466); match(STRUCT); - setState(471); + setState(467); match(NAME); } } @@ -3703,35 +3689,35 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(473); + setState(469); match(STRUCT); - setState(475); + setState(471); _errHandler.sync(this); _la = _input.LA(1); if (_la==NAME) { { - setState(474); + setState(470); match(NAME); } } - setState(477); + setState(473); match(CURLY_BEGIN); - setState(479); + setState(475); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(478); + setState(474); structMembers(); } } - setState(481); + setState(477); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << NOTCONST) | (1L << MAYBECONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_NOTSSA) | (1L << INLINE) | (1L << VOLATILE) | (1L << NOTVOLATILE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (INTERRUPT - 64)) | (1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)))) != 0) ); - setState(483); + setState(479); match(CURLY_END); } } @@ -3775,9 +3761,9 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(485); + setState(481); declVariables(); - setState(486); + setState(482); match(SEMICOLON); } } @@ -3820,9 +3806,9 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(488); + setState(484); match(ENUM); - setState(489); + setState(485); match(NAME); } } @@ -3871,23 +3857,23 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(491); + setState(487); match(ENUM); - setState(493); + setState(489); _errHandler.sync(this); _la = _input.LA(1); if (_la==NAME) { { - setState(492); + setState(488); match(NAME); } } - setState(495); + setState(491); match(CURLY_BEGIN); - setState(496); + setState(492); enumMemberList(0); - setState(497); + setState(493); match(CURLY_END); } } @@ -3945,11 +3931,11 @@ public class KickCParser extends Parser { enterOuterAlt(_localctx, 1); { { - setState(500); + setState(496); enumMember(); } _ctx.stop = _input.LT(-1); - setState(507); + setState(503); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,44,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -3960,16 +3946,16 @@ public class KickCParser extends Parser { { _localctx = new EnumMemberListContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_enumMemberList); - setState(502); + setState(498); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(503); + setState(499); match(COMMA); - setState(504); + setState(500); enumMember(); } } } - setState(509); + setState(505); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,44,_ctx); } @@ -4016,16 +4002,16 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(510); + setState(506); match(NAME); - setState(513); + setState(509); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) { case 1: { - setState(511); + setState(507); match(ASSIGN); - setState(512); + setState(508); expr(0); } break; @@ -4117,11 +4103,11 @@ public class KickCParser extends Parser { _ctx = _localctx; _prevctx = _localctx; - setState(516); + setState(512); expr(0); } _ctx.stop = _input.LT(-1); - setState(523); + setState(519); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,46,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -4132,16 +4118,16 @@ public class KickCParser extends Parser { { _localctx = new CommaSimpleContext(new CommaExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_commaExpr); - setState(518); + setState(514); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(519); + setState(515); match(COMMA); - setState(520); + setState(516); expr(0); } } } - setState(525); + setState(521); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,46,_ctx); } @@ -4666,7 +4652,7 @@ public class KickCParser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(580); + setState(576); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) { case 1: @@ -4675,11 +4661,11 @@ public class KickCParser extends Parser { _ctx = _localctx; _prevctx = _localctx; - setState(527); + setState(523); match(PAR_BEGIN); - setState(528); + setState(524); commaExpr(0); - setState(529); + setState(525); match(PAR_END); } break; @@ -4688,27 +4674,27 @@ public class KickCParser extends Parser { _localctx = new ExprSizeOfContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(531); + setState(527); match(SIZEOF); - setState(532); + setState(528); match(PAR_BEGIN); - setState(535); + setState(531); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) { case 1: { - setState(533); + setState(529); expr(0); } break; case 2: { - setState(534); + setState(530); typeDecl(0); } break; } - setState(537); + setState(533); match(PAR_END); } break; @@ -4717,27 +4703,27 @@ public class KickCParser extends Parser { _localctx = new ExprTypeIdContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(539); + setState(535); match(TYPEID); - setState(540); + setState(536); match(PAR_BEGIN); - setState(543); + setState(539); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) { case 1: { - setState(541); + setState(537); expr(0); } break; case 2: { - setState(542); + setState(538); typeDecl(0); } break; } - setState(545); + setState(541); match(PAR_END); } break; @@ -4746,13 +4732,13 @@ public class KickCParser extends Parser { _localctx = new ExprCastContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(547); + setState(543); match(PAR_BEGIN); - setState(548); + setState(544); typeDecl(0); - setState(549); + setState(545); match(PAR_END); - setState(550); + setState(546); expr(24); } break; @@ -4761,7 +4747,7 @@ public class KickCParser extends Parser { _localctx = new ExprPreModContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(552); + setState(548); _la = _input.LA(1); if ( !(_la==INC || _la==DEC) ) { _errHandler.recoverInline(this); @@ -4771,7 +4757,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(553); + setState(549); expr(23); } break; @@ -4780,9 +4766,9 @@ public class KickCParser extends Parser { _localctx = new ExprPtrContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(554); + setState(550); match(ASTERISK); - setState(555); + setState(551); expr(21); } break; @@ -4791,7 +4777,7 @@ public class KickCParser extends Parser { _localctx = new ExprUnaryContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(556); + setState(552); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS) | (1L << MINUS) | (1L << AND) | (1L << BIT_NOT))) != 0) || _la==LOGIC_NOT) ) { _errHandler.recoverInline(this); @@ -4801,7 +4787,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(557); + setState(553); expr(20); } break; @@ -4810,7 +4796,7 @@ public class KickCParser extends Parser { _localctx = new ExprUnaryContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(558); + setState(554); _la = _input.LA(1); if ( !(_la==LESS_THAN || _la==GREATER_THAN) ) { _errHandler.recoverInline(this); @@ -4820,7 +4806,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(559); + setState(555); expr(16); } break; @@ -4829,27 +4815,27 @@ public class KickCParser extends Parser { _localctx = new InitListContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(560); + setState(556); match(CURLY_BEGIN); - setState(561); + setState(557); expr(0); - setState(566); + setState(562); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(562); + setState(558); match(COMMA); - setState(563); + setState(559); expr(0); } } - setState(568); + setState(564); _errHandler.sync(this); _la = _input.LA(1); } - setState(569); + setState(565); match(CURLY_END); } break; @@ -4858,7 +4844,7 @@ public class KickCParser extends Parser { _localctx = new ExprIdContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(571); + setState(567); match(NAME); } break; @@ -4867,7 +4853,7 @@ public class KickCParser extends Parser { _localctx = new ExprNumberContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(572); + setState(568); match(NUMBER); } break; @@ -4876,7 +4862,7 @@ public class KickCParser extends Parser { _localctx = new ExprStringContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(574); + setState(570); _errHandler.sync(this); _alt = 1; do { @@ -4884,7 +4870,7 @@ public class KickCParser extends Parser { case 1: { { - setState(573); + setState(569); match(STRING); } } @@ -4892,7 +4878,7 @@ public class KickCParser extends Parser { default: throw new NoViableAltException(this); } - setState(576); + setState(572); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,50,_ctx); } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); @@ -4903,7 +4889,7 @@ public class KickCParser extends Parser { _localctx = new ExprCharContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(578); + setState(574); match(CHAR); } break; @@ -4912,13 +4898,13 @@ public class KickCParser extends Parser { _localctx = new ExprBoolContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(579); + setState(575); match(BOOLEAN); } break; } _ctx.stop = _input.LT(-1); - setState(642); + setState(638); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,54,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -4926,16 +4912,16 @@ public class KickCParser extends Parser { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(640); + setState(636); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) { case 1: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(582); + setState(578); if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)"); - setState(583); + setState(579); _la = _input.LA(1); if ( !(_la==SHIFT_LEFT || _la==SHIFT_RIGHT) ) { _errHandler.recoverInline(this); @@ -4945,7 +4931,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(584); + setState(580); expr(20); } break; @@ -4953,9 +4939,9 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(585); + setState(581); if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)"); - setState(586); + setState(582); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ASTERISK) | (1L << DIVIDE) | (1L << MODULO))) != 0)) ) { _errHandler.recoverInline(this); @@ -4965,7 +4951,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(587); + setState(583); expr(19); } break; @@ -4973,9 +4959,9 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(588); + setState(584); if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)"); - setState(589); + setState(585); _la = _input.LA(1); if ( !(_la==PLUS || _la==MINUS) ) { _errHandler.recoverInline(this); @@ -4985,7 +4971,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(590); + setState(586); expr(18); } break; @@ -4993,9 +4979,9 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(591); + setState(587); if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); - setState(592); + setState(588); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQUAL) | (1L << NOT_EQUAL) | (1L << LESS_THAN) | (1L << LESS_THAN_EQUAL) | (1L << GREATER_THAN_EQUAL) | (1L << GREATER_THAN))) != 0)) ) { _errHandler.recoverInline(this); @@ -5005,7 +4991,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(593); + setState(589); expr(16); } break; @@ -5013,13 +4999,13 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(594); + setState(590); if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); { - setState(595); + setState(591); match(AND); } - setState(596); + setState(592); expr(15); } break; @@ -5027,13 +5013,13 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(597); + setState(593); if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); { - setState(598); + setState(594); match(BIT_XOR); } - setState(599); + setState(595); expr(14); } break; @@ -5041,13 +5027,13 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(600); + setState(596); if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); { - setState(601); + setState(597); match(BIT_OR); } - setState(602); + setState(598); expr(13); } break; @@ -5055,13 +5041,13 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(603); + setState(599); if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); { - setState(604); + setState(600); match(LOGIC_AND); } - setState(605); + setState(601); expr(12); } break; @@ -5069,13 +5055,13 @@ public class KickCParser extends Parser { { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(606); + setState(602); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); { - setState(607); + setState(603); match(LOGIC_OR); } - setState(608); + setState(604); expr(11); } break; @@ -5083,15 +5069,15 @@ public class KickCParser extends Parser { { _localctx = new ExprTernaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(609); + setState(605); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(610); + setState(606); match(CONDITION); - setState(611); + setState(607); expr(0); - setState(612); + setState(608); match(COLON); - setState(613); + setState(609); expr(10); } break; @@ -5099,11 +5085,11 @@ public class KickCParser extends Parser { { _localctx = new ExprAssignmentContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(615); + setState(611); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); - setState(616); + setState(612); match(ASSIGN); - setState(617); + setState(613); expr(8); } break; @@ -5111,11 +5097,11 @@ public class KickCParser extends Parser { { _localctx = new ExprAssignmentCompoundContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(618); + setState(614); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); - setState(619); + setState(615); match(ASSIGN_COMPOUND); - setState(620); + setState(616); expr(7); } break; @@ -5123,11 +5109,11 @@ public class KickCParser extends Parser { { _localctx = new ExprDotContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(621); + setState(617); if (!(precpred(_ctx, 30))) throw new FailedPredicateException(this, "precpred(_ctx, 30)"); - setState(622); + setState(618); match(DOT); - setState(623); + setState(619); match(NAME); } break; @@ -5135,11 +5121,11 @@ public class KickCParser extends Parser { { _localctx = new ExprArrowContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(624); + setState(620); if (!(precpred(_ctx, 29))) throw new FailedPredicateException(this, "precpred(_ctx, 29)"); - setState(625); + setState(621); match(ARROW); - setState(626); + setState(622); match(NAME); } break; @@ -5147,21 +5133,21 @@ public class KickCParser extends Parser { { _localctx = new ExprCallContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(627); + setState(623); if (!(precpred(_ctx, 28))) throw new FailedPredicateException(this, "precpred(_ctx, 28)"); - setState(628); + setState(624); match(PAR_BEGIN); - setState(630); + setState(626); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)))) != 0)) { { - setState(629); + setState(625); parameterList(); } } - setState(632); + setState(628); match(PAR_END); } break; @@ -5169,13 +5155,13 @@ public class KickCParser extends Parser { { _localctx = new ExprArrayContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(633); + setState(629); if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)"); - setState(634); + setState(630); match(BRACKET_BEGIN); - setState(635); + setState(631); commaExpr(0); - setState(636); + setState(632); match(BRACKET_END); } break; @@ -5183,9 +5169,9 @@ public class KickCParser extends Parser { { _localctx = new ExprPostModContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(638); + setState(634); if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)"); - setState(639); + setState(635); _la = _input.LA(1); if ( !(_la==INC || _la==DEC) ) { _errHandler.recoverInline(this); @@ -5200,7 +5186,7 @@ public class KickCParser extends Parser { } } } - setState(644); + setState(640); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,54,_ctx); } @@ -5254,21 +5240,21 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(645); + setState(641); expr(0); - setState(650); + setState(646); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(646); + setState(642); match(COMMA); - setState(647); + setState(643); expr(0); } } - setState(652); + setState(648); _errHandler.sync(this); _la = _input.LA(1); } @@ -5317,19 +5303,19 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(653); + setState(649); match(KICKASM); - setState(655); + setState(651); _errHandler.sync(this); _la = _input.LA(1); if (_la==PAR_BEGIN) { { - setState(654); + setState(650); asmDirectives(); } } - setState(657); + setState(653); match(KICKASM_BODY); } } @@ -5383,27 +5369,27 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(659); + setState(655); match(PAR_BEGIN); - setState(660); + setState(656); asmDirective(); - setState(665); + setState(661); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(661); + setState(657); match(COMMA); - setState(662); + setState(658); asmDirective(); } } - setState(667); + setState(663); _errHandler.sync(this); _la = _input.LA(1); } - setState(668); + setState(664); match(PAR_END); } } @@ -5549,16 +5535,16 @@ public class KickCParser extends Parser { AsmDirectiveContext _localctx = new AsmDirectiveContext(_ctx, getState()); enterRule(_localctx, 70, RULE_asmDirective); try { - setState(685); + setState(681); _errHandler.sync(this); switch (_input.LA(1)) { case RESOURCE: _localctx = new AsmDirectiveResourceContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(670); + setState(666); match(RESOURCE); - setState(671); + setState(667); match(STRING); } break; @@ -5566,9 +5552,9 @@ public class KickCParser extends Parser { _localctx = new AsmDirectiveUsesContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(672); + setState(668); match(USES); - setState(673); + setState(669); match(NAME); } break; @@ -5576,9 +5562,9 @@ public class KickCParser extends Parser { _localctx = new AsmDirectiveClobberContext(_localctx); enterOuterAlt(_localctx, 3); { - setState(674); + setState(670); match(CLOBBERS); - setState(675); + setState(671); match(STRING); } break; @@ -5586,9 +5572,9 @@ public class KickCParser extends Parser { _localctx = new AsmDirectiveBytesContext(_localctx); enterOuterAlt(_localctx, 4); { - setState(676); + setState(672); match(BYTES); - setState(677); + setState(673); expr(0); } break; @@ -5596,9 +5582,9 @@ public class KickCParser extends Parser { _localctx = new AsmDirectiveCyclesContext(_localctx); enterOuterAlt(_localctx, 5); { - setState(678); + setState(674); match(CYCLES); - setState(679); + setState(675); expr(0); } break; @@ -5606,14 +5592,14 @@ public class KickCParser extends Parser { _localctx = new AsmDirectiveAddressContext(_localctx); enterOuterAlt(_localctx, 6); { - setState(680); + setState(676); match(PC); - setState(683); + setState(679); _errHandler.sync(this); switch (_input.LA(1)) { case INLINE: { - setState(681); + setState(677); match(INLINE); } break; @@ -5637,7 +5623,7 @@ public class KickCParser extends Parser { case NUMBER: case NAME: { - setState(682); + setState(678); expr(0); } break; @@ -5694,17 +5680,17 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(690); + setState(686); _errHandler.sync(this); _la = _input.LA(1); while (((((_la - 109)) & ~0x3f) == 0 && ((1L << (_la - 109)) & ((1L << (ASM_BYTE - 109)) | (1L << (ASM_MNEMONIC - 109)) | (1L << (ASM_MULTI_NAME - 109)) | (1L << (ASM_NAME - 109)))) != 0)) { { { - setState(687); + setState(683); asmLine(); } } - setState(692); + setState(688); _errHandler.sync(this); _la = _input.LA(1); } @@ -5754,28 +5740,28 @@ public class KickCParser extends Parser { AsmLineContext _localctx = new AsmLineContext(_ctx, getState()); enterRule(_localctx, 74, RULE_asmLine); try { - setState(696); + setState(692); _errHandler.sync(this); switch (_input.LA(1)) { case ASM_MULTI_NAME: case ASM_NAME: enterOuterAlt(_localctx, 1); { - setState(693); + setState(689); asmLabel(); } break; case ASM_MNEMONIC: enterOuterAlt(_localctx, 2); { - setState(694); + setState(690); asmInstruction(); } break; case ASM_BYTE: enterOuterAlt(_localctx, 3); { - setState(695); + setState(691); asmBytes(); } break; @@ -5846,16 +5832,16 @@ public class KickCParser extends Parser { AsmLabelContext _localctx = new AsmLabelContext(_ctx, getState()); enterRule(_localctx, 76, RULE_asmLabel); try { - setState(702); + setState(698); _errHandler.sync(this); switch (_input.LA(1)) { case ASM_NAME: _localctx = new AsmLabelNameContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(698); + setState(694); match(ASM_NAME); - setState(699); + setState(695); match(ASM_COLON); } break; @@ -5863,9 +5849,9 @@ public class KickCParser extends Parser { _localctx = new AsmLabelMultiContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(700); + setState(696); match(ASM_MULTI_NAME); - setState(701); + setState(697); match(ASM_COLON); } break; @@ -5914,14 +5900,14 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(704); + setState(700); match(ASM_MNEMONIC); - setState(706); + setState(702); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { case 1: { - setState(705); + setState(701); asmParamMode(); } break; @@ -5977,23 +5963,23 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(708); + setState(704); match(ASM_BYTE); - setState(709); + setState(705); asmExpr(0); - setState(714); + setState(710); _errHandler.sync(this); _la = _input.LA(1); while (_la==ASM_COMMA) { { { - setState(710); + setState(706); match(ASM_COMMA); - setState(711); + setState(707); asmExpr(0); } } - setState(716); + setState(712); _errHandler.sync(this); _la = _input.LA(1); } @@ -6153,14 +6139,14 @@ public class KickCParser extends Parser { AsmParamModeContext _localctx = new AsmParamModeContext(_ctx, getState()); enterRule(_localctx, 82, RULE_asmParamMode); try { - setState(740); + setState(736); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { case 1: _localctx = new AsmModeAbsContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(717); + setState(713); asmExpr(0); } break; @@ -6168,9 +6154,9 @@ public class KickCParser extends Parser { _localctx = new AsmModeImmContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(718); + setState(714); match(ASM_IMM); - setState(719); + setState(715); asmExpr(0); } break; @@ -6178,11 +6164,11 @@ public class KickCParser extends Parser { _localctx = new AsmModeAbsXYContext(_localctx); enterOuterAlt(_localctx, 3); { - setState(720); + setState(716); asmExpr(0); - setState(721); + setState(717); match(ASM_COMMA); - setState(722); + setState(718); match(ASM_NAME); } break; @@ -6190,15 +6176,15 @@ public class KickCParser extends Parser { _localctx = new AsmModeIndIdxXYContext(_localctx); enterOuterAlt(_localctx, 4); { - setState(724); + setState(720); match(ASM_PAR_BEGIN); - setState(725); + setState(721); asmExpr(0); - setState(726); + setState(722); match(ASM_PAR_END); - setState(727); + setState(723); match(ASM_COMMA); - setState(728); + setState(724); match(ASM_NAME); } break; @@ -6206,15 +6192,15 @@ public class KickCParser extends Parser { _localctx = new AsmModeIdxIndXYContext(_localctx); enterOuterAlt(_localctx, 5); { - setState(730); + setState(726); match(ASM_PAR_BEGIN); - setState(731); + setState(727); asmExpr(0); - setState(732); + setState(728); match(ASM_COMMA); - setState(733); + setState(729); match(ASM_NAME); - setState(734); + setState(730); match(ASM_PAR_END); } break; @@ -6222,11 +6208,11 @@ public class KickCParser extends Parser { _localctx = new AsmModeIndContext(_localctx); enterOuterAlt(_localctx, 6); { - setState(736); + setState(732); match(ASM_PAR_BEGIN); - setState(737); + setState(733); asmExpr(0); - setState(738); + setState(734); match(ASM_PAR_END); } break; @@ -6431,7 +6417,7 @@ public class KickCParser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(756); + setState(752); _errHandler.sync(this); switch (_input.LA(1)) { case ASM_BRACKET_BEGIN: @@ -6440,11 +6426,11 @@ public class KickCParser extends Parser { _ctx = _localctx; _prevctx = _localctx; - setState(743); + setState(739); match(ASM_BRACKET_BEGIN); - setState(744); + setState(740); asmExpr(0); - setState(745); + setState(741); match(ASM_BRACKET_END); } break; @@ -6456,7 +6442,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprUnaryContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(747); + setState(743); _la = _input.LA(1); if ( !(((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (ASM_PLUS - 121)) | (1L << (ASM_MINUS - 121)) | (1L << (ASM_LESS_THAN - 121)) | (1L << (ASM_GREATER_THAN - 121)))) != 0)) ) { _errHandler.recoverInline(this); @@ -6466,7 +6452,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(748); + setState(744); asmExpr(8); } break; @@ -6475,7 +6461,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprLabelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(749); + setState(745); match(ASM_NAME); } break; @@ -6484,7 +6470,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprLabelRelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(750); + setState(746); match(ASM_MULTI_REL); } break; @@ -6493,11 +6479,11 @@ public class KickCParser extends Parser { _localctx = new AsmExprReplaceContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(751); + setState(747); match(ASM_CURLY_BEGIN); - setState(752); + setState(748); match(ASM_NAME); - setState(753); + setState(749); match(ASM_CURLY_END); } break; @@ -6506,7 +6492,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprIntContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(754); + setState(750); match(ASM_NUMBER); } break; @@ -6515,7 +6501,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprCharContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(755); + setState(751); match(ASM_CHAR); } break; @@ -6523,7 +6509,7 @@ public class KickCParser extends Parser { throw new NoViableAltException(this); } _ctx.stop = _input.LT(-1); - setState(772); + setState(768); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,68,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -6531,20 +6517,20 @@ public class KickCParser extends Parser { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(770); + setState(766); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) { case 1: { _localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_asmExpr); - setState(758); + setState(754); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); { - setState(759); + setState(755); match(ASM_DOT); } - setState(760); + setState(756); asmExpr(11); } break; @@ -6552,9 +6538,9 @@ public class KickCParser extends Parser { { _localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_asmExpr); - setState(761); + setState(757); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(762); + setState(758); _la = _input.LA(1); if ( !(_la==ASM_SHIFT_LEFT || _la==ASM_SHIFT_RIGHT) ) { _errHandler.recoverInline(this); @@ -6564,7 +6550,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(763); + setState(759); asmExpr(10); } break; @@ -6572,9 +6558,9 @@ public class KickCParser extends Parser { { _localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_asmExpr); - setState(764); + setState(760); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); - setState(765); + setState(761); _la = _input.LA(1); if ( !(_la==ASM_MULTIPLY || _la==ASM_DIVIDE) ) { _errHandler.recoverInline(this); @@ -6584,7 +6570,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(766); + setState(762); asmExpr(8); } break; @@ -6592,9 +6578,9 @@ public class KickCParser extends Parser { { _localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_asmExpr); - setState(767); + setState(763); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(768); + setState(764); _la = _input.LA(1); if ( !(_la==ASM_PLUS || _la==ASM_MINUS) ) { _errHandler.recoverInline(this); @@ -6604,14 +6590,14 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(769); + setState(765); asmExpr(7); } break; } } } - setState(774); + setState(770); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,68,_ctx); } @@ -6731,7 +6717,7 @@ public class KickCParser extends Parser { } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0092\u030a\4\2\t"+ + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0092\u0306\4\2\t"+ "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ @@ -6750,288 +6736,287 @@ public class KickCParser extends Parser { "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ "\3\20\3\20\3\20\3\20\5\20\u00ff\n\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ - "\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u010e\n\21\3\21\3\21\3\21\3\21\3\21"+ - "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ - "\5\21\u0123\n\21\3\21\3\21\3\21\3\21\3\21\7\21\u012a\n\21\f\21\16\21\u012d"+ - "\13\21\3\21\3\21\5\21\u0131\n\21\3\22\6\22\u0134\n\22\r\22\16\22\u0135"+ - "\3\23\3\23\3\23\3\23\3\23\5\23\u013d\n\23\3\23\3\23\3\23\3\23\3\23\3\23"+ - "\3\23\3\23\3\23\3\23\3\23\5\23\u014a\n\23\3\23\7\23\u014d\n\23\f\23\16"+ - "\23\u0150\13\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u0159\n\23\f\23"+ - "\16\23\u015c\13\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u0167"+ - "\n\23\f\23\16\23\u016a\13\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3"+ - "\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u017c\n\23\3\23\3\23\3\23"+ - "\3\23\3\23\3\23\3\23\5\23\u0185\n\23\3\23\3\23\3\23\3\23\3\23\5\23\u018c"+ - "\n\23\3\24\6\24\u018f\n\24\r\24\16\24\u0190\3\24\3\24\3\24\5\24\u0196"+ - "\n\24\5\24\u0198\n\24\3\25\3\25\3\25\3\25\5\25\u019e\n\25\3\26\3\26\3"+ - "\26\3\26\3\26\5\26\u01a5\n\26\3\26\5\26\u01a8\n\26\3\26\3\26\3\26\3\26"+ - "\3\26\3\26\5\26\u01b0\n\26\3\27\5\27\u01b3\n\27\3\27\5\27\u01b6\n\27\3"+ - "\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u01c0\n\30\3\30\3\30\3\30"+ - "\3\30\3\30\5\30\u01c7\n\30\3\30\3\30\3\30\3\30\3\30\5\30\u01ce\n\30\3"+ - "\30\3\30\3\30\3\30\7\30\u01d4\n\30\f\30\16\30\u01d7\13\30\3\31\3\31\3"+ - "\31\3\32\3\32\5\32\u01de\n\32\3\32\3\32\6\32\u01e2\n\32\r\32\16\32\u01e3"+ - "\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\5\35\u01f0\n\35\3\35"+ - "\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u01fc\n\36\f\36\16"+ - "\36\u01ff\13\36\3\37\3\37\3\37\5\37\u0204\n\37\3 \3 \3 \3 \3 \3 \7 \u020c"+ - "\n \f \16 \u020f\13 \3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u021a\n!\3!\3!\3!\3"+ - "!\3!\3!\5!\u0222\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3"+ - "!\3!\3!\7!\u0237\n!\f!\16!\u023a\13!\3!\3!\3!\3!\3!\6!\u0241\n!\r!\16"+ - "!\u0242\3!\3!\5!\u0247\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3"+ - "!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3"+ - "!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u0279\n!\3!\3!\3!\3!\3!\3!\3!\3!\7"+ - "!\u0283\n!\f!\16!\u0286\13!\3\"\3\"\3\"\7\"\u028b\n\"\f\"\16\"\u028e\13"+ - "\"\3#\3#\5#\u0292\n#\3#\3#\3$\3$\3$\3$\7$\u029a\n$\f$\16$\u029d\13$\3"+ - "$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\5%\u02ae\n%\5%\u02b0\n%\3"+ - "&\7&\u02b3\n&\f&\16&\u02b6\13&\3\'\3\'\3\'\5\'\u02bb\n\'\3(\3(\3(\3(\5"+ - "(\u02c1\n(\3)\3)\5)\u02c5\n)\3*\3*\3*\3*\7*\u02cb\n*\f*\16*\u02ce\13*"+ - "\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+"+ - "\5+\u02e7\n+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\5,\u02f7\n,\3,"+ - "\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\7,\u0305\n,\f,\16,\u0308\13,\3,\2\b"+ - "\24.:>@V-\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\66"+ - "8:<>@BDFHJLNPRTV\2\r\3\2\26\27\5\2\21\22\30\31[[\4\2 ##\3\2\34\35\3\2"+ - "\23\25\3\2\21\22\3\2\36#\3\2{~\3\2yz\3\2\177\u0080\3\2{|\2\u037d\2X\3"+ - "\2\2\2\4[\3\2\2\2\6a\3\2\2\2\bf\3\2\2\2\nh\3\2\2\2\fz\3\2\2\2\16|\3\2"+ - "\2\2\20\u0084\3\2\2\2\22\u008e\3\2\2\2\24\u0091\3\2\2\2\26\u00a4\3\2\2"+ - "\2\30\u00a6\3\2\2\2\32\u00b3\3\2\2\2\34\u00bf\3\2\2\2\36\u00fe\3\2\2\2"+ - " \u0130\3\2\2\2\"\u0133\3\2\2\2$\u018b\3\2\2\2&\u018e\3\2\2\2(\u0199\3"+ - "\2\2\2*\u01af\3\2\2\2,\u01b5\3\2\2\2.\u01c6\3\2\2\2\60\u01d8\3\2\2\2\62"+ - "\u01db\3\2\2\2\64\u01e7\3\2\2\2\66\u01ea\3\2\2\28\u01ed\3\2\2\2:\u01f5"+ - "\3\2\2\2<\u0200\3\2\2\2>\u0205\3\2\2\2@\u0246\3\2\2\2B\u0287\3\2\2\2D"+ - "\u028f\3\2\2\2F\u0295\3\2\2\2H\u02af\3\2\2\2J\u02b4\3\2\2\2L\u02ba\3\2"+ - "\2\2N\u02c0\3\2\2\2P\u02c2\3\2\2\2R\u02c6\3\2\2\2T\u02e6\3\2\2\2V\u02f6"+ - "\3\2\2\2XY\5\6\4\2YZ\7\2\2\3Z\3\3\2\2\2[\\\5J&\2\\]\7\2\2\3]\5\3\2\2\2"+ - "^`\5\b\5\2_^\3\2\2\2`c\3\2\2\2a_\3\2\2\2ab\3\2\2\2b\7\3\2\2\2ca\3\2\2"+ - "\2dg\5\f\7\2eg\5\n\6\2fd\3\2\2\2fe\3\2\2\2g\t\3\2\2\2hi\7(\2\2ij\7`\2"+ - "\2j\13\3\2\2\2kl\5\22\n\2lm\7\n\2\2m{\3\2\2\2no\5\62\32\2op\7\n\2\2p{"+ - "\3\2\2\2qr\58\35\2rs\7\n\2\2s{\3\2\2\2t{\5\30\r\2u{\5D#\2v{\5\36\20\2"+ - "wx\5\16\b\2xy\7\n\2\2y{\3\2\2\2zk\3\2\2\2zn\3\2\2\2zq\3\2\2\2zt\3\2\2"+ - "\2zu\3\2\2\2zv\3\2\2\2zw\3\2\2\2{\r\3\2\2\2|}\7)\2\2}~\5.\30\2~\177\7"+ - "k\2\2\177\u0080\b\b\1\2\u0080\17\3\2\2\2\u0081\u0083\5 \21\2\u0082\u0081"+ - "\3\2\2\2\u0083\u0086\3\2\2\2\u0084\u0082\3\2\2\2\u0084\u0085\3\2\2\2\u0085"+ - "\u0087\3\2\2\2\u0086\u0084\3\2\2\2\u0087\u008b\5.\30\2\u0088\u008a\5 "+ - "\21\2\u0089\u0088\3\2\2\2\u008a\u008d\3\2\2\2\u008b\u0089\3\2\2\2\u008b"+ - "\u008c\3\2\2\2\u008c\21\3\2\2\2\u008d\u008b\3\2\2\2\u008e\u008f\5\20\t"+ - "\2\u008f\u0090\5\24\13\2\u0090\23\3\2\2\2\u0091\u0092\b\13\1\2\u0092\u0093"+ - "\5\26\f\2\u0093\u0099\3\2\2\2\u0094\u0095\f\3\2\2\u0095\u0096\7\f\2\2"+ - "\u0096\u0098\5\26\f\2\u0097\u0094\3\2\2\2\u0098\u009b\3\2\2\2\u0099\u0097"+ - "\3\2\2\2\u0099\u009a\3\2\2\2\u009a\25\3\2\2\2\u009b\u0099\3\2\2\2\u009c"+ - "\u009f\7k\2\2\u009d\u009e\7&\2\2\u009e\u00a0\5@!\2\u009f\u009d\3\2\2\2"+ - "\u009f\u00a0\3\2\2\2\u00a0\u00a5\3\2\2\2\u00a1\u00a2\7k\2\2\u00a2\u00a3"+ - "\7&\2\2\u00a3\u00a5\5D#\2\u00a4\u009c\3\2\2\2\u00a4\u00a1\3\2\2\2\u00a5"+ - "\27\3\2\2\2\u00a6\u00a7\5\20\t\2\u00a7\u00a8\7k\2\2\u00a8\u00aa\7\b\2"+ - "\2\u00a9\u00ab\5\32\16\2\u00aa\u00a9\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab"+ - "\u00ac\3\2\2\2\u00ac\u00ad\7\t\2\2\u00ad\u00af\7\4\2\2\u00ae\u00b0\5\""+ - "\22\2\u00af\u00ae\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1"+ - "\u00b2\7\5\2\2\u00b2\31\3\2\2\2\u00b3\u00b8\5\34\17\2\u00b4\u00b5\7\f"+ - "\2\2\u00b5\u00b7\5\34\17\2\u00b6\u00b4\3\2\2\2\u00b7\u00ba\3\2\2\2\u00b8"+ - "\u00b6\3\2\2\2\u00b8\u00b9\3\2\2\2\u00b9\33\3\2\2\2\u00ba\u00b8\3\2\2"+ - "\2\u00bb\u00bc\5\20\t\2\u00bc\u00bd\7k\2\2\u00bd\u00c0\3\2\2\2\u00be\u00c0"+ - "\7]\2\2\u00bf\u00bb\3\2\2\2\u00bf\u00be\3\2\2\2\u00c0\35\3\2\2\2\u00c1"+ - "\u00c2\7*\2\2\u00c2\u00c3\7+\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c5\7\b\2"+ - "\2\u00c5\u00ca\7b\2\2\u00c6\u00c7\7\f\2\2\u00c7\u00c9\7b\2\2\u00c8\u00c6"+ - "\3\2\2\2\u00c9\u00cc\3\2\2\2\u00ca\u00c8\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb"+ - "\u00cd\3\2\2\2\u00cc\u00ca\3\2\2\2\u00cd\u00ff\7\t\2\2\u00ce\u00cf\7*"+ - "\2\2\u00cf\u00d0\7,\2\2\u00d0\u00d1\3\2\2\2\u00d1\u00d2\7\b\2\2\u00d2"+ - "\u00d3\7b\2\2\u00d3\u00ff\7\t\2\2\u00d4\u00d5\7*\2\2\u00d5\u00d6\7-\2"+ - "\2\u00d6\u00d7\3\2\2\2\u00d7\u00d8\7\b\2\2\u00d8\u00d9\7k\2\2\u00d9\u00ff"+ - "\7\t\2\2\u00da\u00db\7*\2\2\u00db\u00dc\7/\2\2\u00dc\u00dd\3\2\2\2\u00dd"+ - "\u00de\7\b\2\2\u00de\u00df\7k\2\2\u00df\u00ff\7\t\2\2\u00e0\u00e1\7*\2"+ - "\2\u00e1\u00e2\7.\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e4\7\b\2\2\u00e4\u00e5"+ - "\7`\2\2\u00e5\u00ff\7\t\2\2\u00e6\u00e7\7*\2\2\u00e7\u00e8\7\60\2\2\u00e8"+ - "\u00e9\3\2\2\2\u00e9\u00ea\7\b\2\2\u00ea\u00eb\7k\2\2\u00eb\u00ff\7\t"+ - "\2\2\u00ec\u00ed\7*\2\2\u00ed\u00ee\7\61\2\2\u00ee\u00ef\3\2\2\2\u00ef"+ - "\u00f0\7\b\2\2\u00f0\u00f1\7k\2\2\u00f1\u00ff\7\t\2\2\u00f2\u00f3\7*\2"+ - "\2\u00f3\u00f4\7\62\2\2\u00f4\u00f5\3\2\2\2\u00f5\u00f6\7\b\2\2\u00f6"+ - "\u00f7\7k\2\2\u00f7\u00ff\7\t\2\2\u00f8\u00f9\7*\2\2\u00f9\u00fa\7C\2"+ - "\2\u00fa\u00fb\3\2\2\2\u00fb\u00fc\7\b\2\2\u00fc\u00fd\7D\2\2\u00fd\u00ff"+ - "\7\t\2\2\u00fe\u00c1\3\2\2\2\u00fe\u00ce\3\2\2\2\u00fe\u00d4\3\2\2\2\u00fe"+ - "\u00da\3\2\2\2\u00fe\u00e0\3\2\2\2\u00fe\u00e6\3\2\2\2\u00fe\u00ec\3\2"+ - "\2\2\u00fe\u00f2\3\2\2\2\u00fe\u00f8\3\2\2\2\u00ff\37\3\2\2\2\u0100\u0131"+ - "\7\63\2\2\u0101\u0131\7\64\2\2\u0102\u0131\7\65\2\2\u0103\u0131\7\66\2"+ - "\2\u0104\u0131\7\67\2\2\u0105\u0106\78\2\2\u0106\u0107\7\b\2\2\u0107\u0108"+ - "\7b\2\2\u0108\u0131\7\t\2\2\u0109\u010d\79\2\2\u010a\u010b\7\b\2\2\u010b"+ - "\u010c\7k\2\2\u010c\u010e\7\t\2\2\u010d\u010a\3\2\2\2\u010d\u010e\3\2"+ - "\2\2\u010e\u0131\3\2\2\2\u010f\u0131\7;\2\2\u0110\u0131\7<\2\2\u0111\u0112"+ - "\7:\2\2\u0112\u0113\7\b\2\2\u0113\u0114\7b\2\2\u0114\u0131\7\t\2\2\u0115"+ - "\u0131\7=\2\2\u0116\u0131\7>\2\2\u0117\u0118\7:\2\2\u0118\u0119\7\b\2"+ - "\2\u0119\u011a\7b\2\2\u011a\u0131\7\t\2\2\u011b\u0131\7?\2\2\u011c\u0131"+ - "\7@\2\2\u011d\u0131\7A\2\2\u011e\u0122\7B\2\2\u011f\u0120\7\b\2\2\u0120"+ - "\u0121\7k\2\2\u0121\u0123\7\t\2\2\u0122\u011f\3\2\2\2\u0122\u0123\3\2"+ - "\2\2\u0123\u0131\3\2\2\2\u0124\u0125\7+\2\2\u0125\u0126\7\b\2\2\u0126"+ - "\u012b\7b\2\2\u0127\u0128\7\f\2\2\u0128\u012a\7b\2\2\u0129\u0127\3\2\2"+ - "\2\u012a\u012d\3\2\2\2\u012b\u0129\3\2\2\2\u012b\u012c\3\2\2\2\u012c\u012e"+ - "\3\2\2\2\u012d\u012b\3\2\2\2\u012e\u0131\7\t\2\2\u012f\u0131\7D\2\2\u0130"+ - "\u0100\3\2\2\2\u0130\u0101\3\2\2\2\u0130\u0102\3\2\2\2\u0130\u0103\3\2"+ - "\2\2\u0130\u0104\3\2\2\2\u0130\u0105\3\2\2\2\u0130\u0109\3\2\2\2\u0130"+ - "\u010f\3\2\2\2\u0130\u0110\3\2\2\2\u0130\u0111\3\2\2\2\u0130\u0115\3\2"+ - "\2\2\u0130\u0116\3\2\2\2\u0130\u0117\3\2\2\2\u0130\u011b\3\2\2\2\u0130"+ - "\u011c\3\2\2\2\u0130\u011d\3\2\2\2\u0130\u011e\3\2\2\2\u0130\u0124\3\2"+ - "\2\2\u0130\u012f\3\2\2\2\u0131!\3\2\2\2\u0132\u0134\5$\23\2\u0133\u0132"+ - "\3\2\2\2\u0134\u0135\3\2\2\2\u0135\u0133\3\2\2\2\u0135\u0136\3\2\2\2\u0136"+ - "#\3\2\2\2\u0137\u0138\5\22\n\2\u0138\u0139\7\n\2\2\u0139\u018c\3\2\2\2"+ - "\u013a\u013c\7\4\2\2\u013b\u013d\5\"\22\2\u013c\u013b\3\2\2\2\u013c\u013d"+ - "\3\2\2\2\u013d\u013e\3\2\2\2\u013e\u018c\7\5\2\2\u013f\u0140\5> \2\u0140"+ - "\u0141\7\n\2\2\u0141\u018c\3\2\2\2\u0142\u0143\7E\2\2\u0143\u0144\7\b"+ - "\2\2\u0144\u0145\5> \2\u0145\u0146\7\t\2\2\u0146\u0149\5$\23\2\u0147\u0148"+ - "\7F\2\2\u0148\u014a\5$\23\2\u0149\u0147\3\2\2\2\u0149\u014a\3\2\2\2\u014a"+ - "\u018c\3\2\2\2\u014b\u014d\5 \21\2\u014c\u014b\3\2\2\2\u014d\u0150\3\2"+ - "\2\2\u014e\u014c\3\2\2\2\u014e\u014f\3\2\2\2\u014f\u0151\3\2\2\2\u0150"+ - "\u014e\3\2\2\2\u0151\u0152\7G\2\2\u0152\u0153\7\b\2\2\u0153\u0154\5> "+ - "\2\u0154\u0155\7\t\2\2\u0155\u0156\5$\23\2\u0156\u018c\3\2\2\2\u0157\u0159"+ - "\5 \21\2\u0158\u0157\3\2\2\2\u0159\u015c\3\2\2\2\u015a\u0158\3\2\2\2\u015a"+ - "\u015b\3\2\2\2\u015b\u015d\3\2\2\2\u015c\u015a\3\2\2\2\u015d\u015e\7H"+ - "\2\2\u015e\u015f\5$\23\2\u015f\u0160\7G\2\2\u0160\u0161\7\b\2\2\u0161"+ - "\u0162\5> \2\u0162\u0163\7\t\2\2\u0163\u0164\7\n\2\2\u0164\u018c\3\2\2"+ - "\2\u0165\u0167\5 \21\2\u0166\u0165\3\2\2\2\u0167\u016a\3\2\2\2\u0168\u0166"+ - "\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u016b\3\2\2\2\u016a\u0168\3\2\2\2\u016b"+ - "\u016c\7I\2\2\u016c\u016d\7\b\2\2\u016d\u016e\5*\26\2\u016e\u016f\7\t"+ - "\2\2\u016f\u0170\5$\23\2\u0170\u018c\3\2\2\2\u0171\u0172\7J\2\2\u0172"+ - "\u0173\7\b\2\2\u0173\u0174\5> \2\u0174\u0175\7\t\2\2\u0175\u0176\7\4\2"+ - "\2\u0176\u0177\5&\24\2\u0177\u0178\7\5\2\2\u0178\u018c\3\2\2\2\u0179\u017b"+ - "\7K\2\2\u017a\u017c\5> \2\u017b\u017a\3\2\2\2\u017b\u017c\3\2\2\2\u017c"+ - "\u017d\3\2\2\2\u017d\u018c\7\n\2\2\u017e\u017f\7L\2\2\u017f\u018c\7\n"+ - "\2\2\u0180\u0181\7M\2\2\u0181\u018c\7\n\2\2\u0182\u0184\7N\2\2\u0183\u0185"+ - "\5F$\2\u0184\u0183\3\2\2\2\u0184\u0185\3\2\2\2\u0185\u0186\3\2\2\2\u0186"+ - "\u0187\7\4\2\2\u0187\u0188\5J&\2\u0188\u0189\7\u0082\2\2\u0189\u018c\3"+ - "\2\2\2\u018a\u018c\5D#\2\u018b\u0137\3\2\2\2\u018b\u013a\3\2\2\2\u018b"+ - "\u013f\3\2\2\2\u018b\u0142\3\2\2\2\u018b\u014e\3\2\2\2\u018b\u015a\3\2"+ - "\2\2\u018b\u0168\3\2\2\2\u018b\u0171\3\2\2\2\u018b\u0179\3\2\2\2\u018b"+ - "\u017e\3\2\2\2\u018b\u0180\3\2\2\2\u018b\u0182\3\2\2\2\u018b\u018a\3\2"+ - "\2\2\u018c%\3\2\2\2\u018d\u018f\5(\25\2\u018e\u018d\3\2\2\2\u018f\u0190"+ - "\3\2\2\2\u0190\u018e\3\2\2\2\u0190\u0191\3\2\2\2\u0191\u0197\3\2\2\2\u0192"+ - "\u0193\7O\2\2\u0193\u0195\7\13\2\2\u0194\u0196\5\"\22\2\u0195\u0194\3"+ - "\2\2\2\u0195\u0196\3\2\2\2\u0196\u0198\3\2\2\2\u0197\u0192\3\2\2\2\u0197"+ - "\u0198\3\2\2\2\u0198\'\3\2\2\2\u0199\u019a\7P\2\2\u019a\u019b\5@!\2\u019b"+ - "\u019d\7\13\2\2\u019c\u019e\5\"\22\2\u019d\u019c\3\2\2\2\u019d\u019e\3"+ - "\2\2\2\u019e)\3\2\2\2\u019f\u01a0\5,\27\2\u01a0\u01a1\7\n\2\2\u01a1\u01a2"+ - "\5> \2\u01a2\u01a4\7\n\2\2\u01a3\u01a5\5> \2\u01a4\u01a3\3\2\2\2\u01a4"+ - "\u01a5\3\2\2\2\u01a5\u01b0\3\2\2\2\u01a6\u01a8\5\20\t\2\u01a7\u01a6\3"+ - "\2\2\2\u01a7\u01a8\3\2\2\2\u01a8\u01a9\3\2\2\2\u01a9\u01aa\7k\2\2\u01aa"+ - "\u01ab\7\13\2\2\u01ab\u01ac\5@!\2\u01ac\u01ad\7\r\2\2\u01ad\u01ae\5@!"+ - "\2\u01ae\u01b0\3\2\2\2\u01af\u019f\3\2\2\2\u01af\u01a7\3\2\2\2\u01b0+"+ - "\3\2\2\2\u01b1\u01b3\5\22\n\2\u01b2\u01b1\3\2\2\2\u01b2\u01b3\3\2\2\2"+ - "\u01b3\u01b6\3\2\2\2\u01b4\u01b6\5> \2\u01b5\u01b2\3\2\2\2\u01b5\u01b4"+ - "\3\2\2\2\u01b6-\3\2\2\2\u01b7\u01b8\b\30\1\2\u01b8\u01b9\7\b\2\2\u01b9"+ - "\u01ba\5.\30\2\u01ba\u01bb\7\t\2\2\u01bb\u01c7\3\2\2\2\u01bc\u01c7\7]"+ - "\2\2\u01bd\u01bf\7\\\2\2\u01be\u01c0\7]\2\2\u01bf\u01be\3\2\2\2\u01bf"+ - "\u01c0\3\2\2\2\u01c0\u01c7\3\2\2\2\u01c1\u01c7\5\62\32\2\u01c2\u01c7\5"+ - "\60\31\2\u01c3\u01c7\58\35\2\u01c4\u01c7\5\66\34\2\u01c5\u01c7\7\3\2\2"+ - "\u01c6\u01b7\3\2\2\2\u01c6\u01bc\3\2\2\2\u01c6\u01bd\3\2\2\2\u01c6\u01c1"+ - "\3\2\2\2\u01c6\u01c2\3\2\2\2\u01c6\u01c3\3\2\2\2\u01c6\u01c4\3\2\2\2\u01c6"+ - "\u01c5\3\2\2\2\u01c7\u01d5\3\2\2\2\u01c8\u01c9\f\n\2\2\u01c9\u01d4\7\23"+ - "\2\2\u01ca\u01cb\f\t\2\2\u01cb\u01cd\7\6\2\2\u01cc\u01ce\5@!\2\u01cd\u01cc"+ - "\3\2\2\2\u01cd\u01ce\3\2\2\2\u01ce\u01cf\3\2\2\2\u01cf\u01d4\7\7\2\2\u01d0"+ - "\u01d1\f\b\2\2\u01d1\u01d2\7\b\2\2\u01d2\u01d4\7\t\2\2\u01d3\u01c8\3\2"+ - "\2\2\u01d3\u01ca\3\2\2\2\u01d3\u01d0\3\2\2\2\u01d4\u01d7\3\2\2\2\u01d5"+ - "\u01d3\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6/\3\2\2\2\u01d7\u01d5\3\2\2\2"+ - "\u01d8\u01d9\7Q\2\2\u01d9\u01da\7k\2\2\u01da\61\3\2\2\2\u01db\u01dd\7"+ - "Q\2\2\u01dc\u01de\7k\2\2\u01dd\u01dc\3\2\2\2\u01dd\u01de\3\2\2\2\u01de"+ - "\u01df\3\2\2\2\u01df\u01e1\7\4\2\2\u01e0\u01e2\5\64\33\2\u01e1\u01e0\3"+ - "\2\2\2\u01e2\u01e3\3\2\2\2\u01e3\u01e1\3\2\2\2\u01e3\u01e4\3\2\2\2\u01e4"+ - "\u01e5\3\2\2\2\u01e5\u01e6\7\5\2\2\u01e6\63\3\2\2\2\u01e7\u01e8\5\22\n"+ - "\2\u01e8\u01e9\7\n\2\2\u01e9\65\3\2\2\2\u01ea\u01eb\7R\2\2\u01eb\u01ec"+ - "\7k\2\2\u01ec\67\3\2\2\2\u01ed\u01ef\7R\2\2\u01ee\u01f0\7k\2\2\u01ef\u01ee"+ - "\3\2\2\2\u01ef\u01f0\3\2\2\2\u01f0\u01f1\3\2\2\2\u01f1\u01f2\7\4\2\2\u01f2"+ - "\u01f3\5:\36\2\u01f3\u01f4\7\5\2\2\u01f49\3\2\2\2\u01f5\u01f6\b\36\1\2"+ - "\u01f6\u01f7\5<\37\2\u01f7\u01fd\3\2\2\2\u01f8\u01f9\f\3\2\2\u01f9\u01fa"+ - "\7\f\2\2\u01fa\u01fc\5<\37\2\u01fb\u01f8\3\2\2\2\u01fc\u01ff\3\2\2\2\u01fd"+ - "\u01fb\3\2\2\2\u01fd\u01fe\3\2\2\2\u01fe;\3\2\2\2\u01ff\u01fd\3\2\2\2"+ - "\u0200\u0203\7k\2\2\u0201\u0202\7&\2\2\u0202\u0204\5@!\2\u0203\u0201\3"+ - "\2\2\2\u0203\u0204\3\2\2\2\u0204=\3\2\2\2\u0205\u0206\b \1\2\u0206\u0207"+ - "\5@!\2\u0207\u020d\3\2\2\2\u0208\u0209\f\3\2\2\u0209\u020a\7\f\2\2\u020a"+ - "\u020c\5@!\2\u020b\u0208\3\2\2\2\u020c\u020f\3\2\2\2\u020d\u020b\3\2\2"+ - "\2\u020d\u020e\3\2\2\2\u020e?\3\2\2\2\u020f\u020d\3\2\2\2\u0210\u0211"+ - "\b!\1\2\u0211\u0212\7\b\2\2\u0212\u0213\5> \2\u0213\u0214\7\t\2\2\u0214"+ - "\u0247\3\2\2\2\u0215\u0216\7S\2\2\u0216\u0219\7\b\2\2\u0217\u021a\5@!"+ - "\2\u0218\u021a\5.\30\2\u0219\u0217\3\2\2\2\u0219\u0218\3\2\2\2\u021a\u021b"+ - "\3\2\2\2\u021b\u021c\7\t\2\2\u021c\u0247\3\2\2\2\u021d\u021e\7T\2\2\u021e"+ - "\u0221\7\b\2\2\u021f\u0222\5@!\2\u0220\u0222\5.\30\2\u0221\u021f\3\2\2"+ - "\2\u0221\u0220\3\2\2\2\u0222\u0223\3\2\2\2\u0223\u0224\7\t\2\2\u0224\u0247"+ - "\3\2\2\2\u0225\u0226\7\b\2\2\u0226\u0227\5.\30\2\u0227\u0228\7\t\2\2\u0228"+ - "\u0229\5@!\32\u0229\u0247\3\2\2\2\u022a\u022b\t\2\2\2\u022b\u0247\5@!"+ - "\31\u022c\u022d\7\23\2\2\u022d\u0247\5@!\27\u022e\u022f\t\3\2\2\u022f"+ - "\u0247\5@!\26\u0230\u0231\t\4\2\2\u0231\u0247\5@!\22\u0232\u0233\7\4\2"+ - "\2\u0233\u0238\5@!\2\u0234\u0235\7\f\2\2\u0235\u0237\5@!\2\u0236\u0234"+ - "\3\2\2\2\u0237\u023a\3\2\2\2\u0238\u0236\3\2\2\2\u0238\u0239\3\2\2\2\u0239"+ - "\u023b\3\2\2\2\u023a\u0238\3\2\2\2\u023b\u023c\7\5\2\2\u023c\u0247\3\2"+ - "\2\2\u023d\u0247\7k\2\2\u023e\u0247\7b\2\2\u023f\u0241\7`\2\2\u0240\u023f"+ - "\3\2\2\2\u0241\u0242\3\2\2\2\u0242\u0240\3\2\2\2\u0242\u0243\3\2\2\2\u0243"+ - "\u0247\3\2\2\2\u0244\u0247\7a\2\2\u0245\u0247\7^\2\2\u0246\u0210\3\2\2"+ - "\2\u0246\u0215\3\2\2\2\u0246\u021d\3\2\2\2\u0246\u0225\3\2\2\2\u0246\u022a"+ - "\3\2\2\2\u0246\u022c\3\2\2\2\u0246\u022e\3\2\2\2\u0246\u0230\3\2\2\2\u0246"+ - "\u0232\3\2\2\2\u0246\u023d\3\2\2\2\u0246\u023e\3\2\2\2\u0246\u0240\3\2"+ - "\2\2\u0246\u0244\3\2\2\2\u0246\u0245\3\2\2\2\u0247\u0284\3\2\2\2\u0248"+ - "\u0249\f\25\2\2\u0249\u024a\t\5\2\2\u024a\u0283\5@!\26\u024b\u024c\f\24"+ - "\2\2\u024c\u024d\t\6\2\2\u024d\u0283\5@!\25\u024e\u024f\f\23\2\2\u024f"+ - "\u0250\t\7\2\2\u0250\u0283\5@!\24\u0251\u0252\f\21\2\2\u0252\u0253\t\b"+ - "\2\2\u0253\u0283\5@!\22\u0254\u0255\f\20\2\2\u0255\u0256\7\30\2\2\u0256"+ - "\u0283\5@!\21\u0257\u0258\f\17\2\2\u0258\u0259\7\32\2\2\u0259\u0283\5"+ - "@!\20\u025a\u025b\f\16\2\2\u025b\u025c\7\33\2\2\u025c\u0283\5@!\17\u025d"+ - "\u025e\f\r\2\2\u025e\u025f\7$\2\2\u025f\u0283\5@!\16\u0260\u0261\f\f\2"+ - "\2\u0261\u0262\7%\2\2\u0262\u0283\5@!\r\u0263\u0264\f\13\2\2\u0264\u0265"+ - "\7\16\2\2\u0265\u0266\5@!\2\u0266\u0267\7\13\2\2\u0267\u0268\5@!\f\u0268"+ - "\u0283\3\2\2\2\u0269\u026a\f\n\2\2\u026a\u026b\7&\2\2\u026b\u0283\5@!"+ - "\n\u026c\u026d\f\t\2\2\u026d\u026e\7\'\2\2\u026e\u0283\5@!\t\u026f\u0270"+ - "\f \2\2\u0270\u0271\7\17\2\2\u0271\u0283\7k\2\2\u0272\u0273\f\37\2\2\u0273"+ - "\u0274\7\20\2\2\u0274\u0283\7k\2\2\u0275\u0276\f\36\2\2\u0276\u0278\7"+ - "\b\2\2\u0277\u0279\5B\"\2\u0278\u0277\3\2\2\2\u0278\u0279\3\2\2\2\u0279"+ - "\u027a\3\2\2\2\u027a\u0283\7\t\2\2\u027b\u027c\f\33\2\2\u027c\u027d\7"+ - "\6\2\2\u027d\u027e\5> \2\u027e\u027f\7\7\2\2\u027f\u0283\3\2\2\2\u0280"+ - "\u0281\f\30\2\2\u0281\u0283\t\2\2\2\u0282\u0248\3\2\2\2\u0282\u024b\3"+ - "\2\2\2\u0282\u024e\3\2\2\2\u0282\u0251\3\2\2\2\u0282\u0254\3\2\2\2\u0282"+ - "\u0257\3\2\2\2\u0282\u025a\3\2\2\2\u0282\u025d\3\2\2\2\u0282\u0260\3\2"+ - "\2\2\u0282\u0263\3\2\2\2\u0282\u0269\3\2\2\2\u0282\u026c\3\2\2\2\u0282"+ - "\u026f\3\2\2\2\u0282\u0272\3\2\2\2\u0282\u0275\3\2\2\2\u0282\u027b\3\2"+ - "\2\2\u0282\u0280\3\2\2\2\u0283\u0286\3\2\2\2\u0284\u0282\3\2\2\2\u0284"+ - "\u0285\3\2\2\2\u0285A\3\2\2\2\u0286\u0284\3\2\2\2\u0287\u028c\5@!\2\u0288"+ - "\u0289\7\f\2\2\u0289\u028b\5@!\2\u028a\u0288\3\2\2\2\u028b\u028e\3\2\2"+ - "\2\u028c\u028a\3\2\2\2\u028c\u028d\3\2\2\2\u028dC\3\2\2\2\u028e\u028c"+ - "\3\2\2\2\u028f\u0291\7U\2\2\u0290\u0292\5F$\2\u0291\u0290\3\2\2\2\u0291"+ - "\u0292\3\2\2\2\u0292\u0293\3\2\2\2\u0293\u0294\7_\2\2\u0294E\3\2\2\2\u0295"+ - "\u0296\7\b\2\2\u0296\u029b\5H%\2\u0297\u0298\7\f\2\2\u0298\u029a\5H%\2"+ - "\u0299\u0297\3\2\2\2\u029a\u029d\3\2\2\2\u029b\u0299\3\2\2\2\u029b\u029c"+ - "\3\2\2\2\u029c\u029e\3\2\2\2\u029d\u029b\3\2\2\2\u029e\u029f\7\t\2\2\u029f"+ - "G\3\2\2\2\u02a0\u02a1\7V\2\2\u02a1\u02b0\7`\2\2\u02a2\u02a3\7W\2\2\u02a3"+ - "\u02b0\7k\2\2\u02a4\u02a5\7X\2\2\u02a5\u02b0\7`\2\2\u02a6\u02a7\7Y\2\2"+ - "\u02a7\u02b0\5@!\2\u02a8\u02a9\7Z\2\2\u02a9\u02b0\5@!\2\u02aa\u02ad\7"+ - ",\2\2\u02ab\u02ae\7?\2\2\u02ac\u02ae\5@!\2\u02ad\u02ab\3\2\2\2\u02ad\u02ac"+ - "\3\2\2\2\u02ae\u02b0\3\2\2\2\u02af\u02a0\3\2\2\2\u02af\u02a2\3\2\2\2\u02af"+ - "\u02a4\3\2\2\2\u02af\u02a6\3\2\2\2\u02af\u02a8\3\2\2\2\u02af\u02aa\3\2"+ - "\2\2\u02b0I\3\2\2\2\u02b1\u02b3\5L\'\2\u02b2\u02b1\3\2\2\2\u02b3\u02b6"+ - "\3\2\2\2\u02b4\u02b2\3\2\2\2\u02b4\u02b5\3\2\2\2\u02b5K\3\2\2\2\u02b6"+ - "\u02b4\3\2\2\2\u02b7\u02bb\5N(\2\u02b8\u02bb\5P)\2\u02b9\u02bb\5R*\2\u02ba"+ - "\u02b7\3\2\2\2\u02ba\u02b8\3\2\2\2\u02ba\u02b9\3\2\2\2\u02bbM\3\2\2\2"+ - "\u02bc\u02bd\7\u008f\2\2\u02bd\u02c1\7r\2\2\u02be\u02bf\7\u008e\2\2\u02bf"+ - "\u02c1\7r\2\2\u02c0\u02bc\3\2\2\2\u02c0\u02be\3\2\2\2\u02c1O\3\2\2\2\u02c2"+ - "\u02c4\7p\2\2\u02c3\u02c5\5T+\2\u02c4\u02c3\3\2\2\2\u02c4\u02c5\3\2\2"+ - "\2\u02c5Q\3\2\2\2\u02c6\u02c7\7o\2\2\u02c7\u02cc\5V,\2\u02c8\u02c9\7s"+ - "\2\2\u02c9\u02cb\5V,\2\u02ca\u02c8\3\2\2\2\u02cb\u02ce\3\2\2\2\u02cc\u02ca"+ - "\3\2\2\2\u02cc\u02cd\3\2\2\2\u02cdS\3\2\2\2\u02ce\u02cc\3\2\2\2\u02cf"+ - "\u02e7\5V,\2\u02d0\u02d1\7q\2\2\u02d1\u02e7\5V,\2\u02d2\u02d3\5V,\2\u02d3"+ - "\u02d4\7s\2\2\u02d4\u02d5\7\u008f\2\2\u02d5\u02e7\3\2\2\2\u02d6\u02d7"+ - "\7t\2\2\u02d7\u02d8\5V,\2\u02d8\u02d9\7u\2\2\u02d9\u02da\7s\2\2\u02da"+ - "\u02db\7\u008f\2\2\u02db\u02e7\3\2\2\2\u02dc\u02dd\7t\2\2\u02dd\u02de"+ - "\5V,\2\u02de\u02df\7s\2\2\u02df\u02e0\7\u008f\2\2\u02e0\u02e1\7u\2\2\u02e1"+ - "\u02e7\3\2\2\2\u02e2\u02e3\7t\2\2\u02e3\u02e4\5V,\2\u02e4\u02e5\7u\2\2"+ - "\u02e5\u02e7\3\2\2\2\u02e6\u02cf\3\2\2\2\u02e6\u02d0\3\2\2\2\u02e6\u02d2"+ - "\3\2\2\2\u02e6\u02d6\3\2\2\2\u02e6\u02dc\3\2\2\2\u02e6\u02e2\3\2\2\2\u02e7"+ - "U\3\2\2\2\u02e8\u02e9\b,\1\2\u02e9\u02ea\7v\2\2\u02ea\u02eb\5V,\2\u02eb"+ - "\u02ec\7w\2\2\u02ec\u02f7\3\2\2\2\u02ed\u02ee\t\t\2\2\u02ee\u02f7\5V,"+ - "\n\u02ef\u02f7\7\u008f\2\2\u02f0\u02f7\7\u008d\2\2\u02f1\u02f2\7\u0081"+ - "\2\2\u02f2\u02f3\7\u008f\2\2\u02f3\u02f7\7\u0082\2\2\u02f4\u02f7\7\u0083"+ - "\2\2\u02f5\u02f7\7\u008c\2\2\u02f6\u02e8\3\2\2\2\u02f6\u02ed\3\2\2\2\u02f6"+ - "\u02ef\3\2\2\2\u02f6\u02f0\3\2\2\2\u02f6\u02f1\3\2\2\2\u02f6\u02f4\3\2"+ - "\2\2\u02f6\u02f5\3\2\2\2\u02f7\u0306\3\2\2\2\u02f8\u02f9\f\f\2\2\u02f9"+ - "\u02fa\7x\2\2\u02fa\u0305\5V,\r\u02fb\u02fc\f\13\2\2\u02fc\u02fd\t\n\2"+ - "\2\u02fd\u0305\5V,\f\u02fe\u02ff\f\t\2\2\u02ff\u0300\t\13\2\2\u0300\u0305"+ - "\5V,\n\u0301\u0302\f\b\2\2\u0302\u0303\t\f\2\2\u0303\u0305\5V,\t\u0304"+ - "\u02f8\3\2\2\2\u0304\u02fb\3\2\2\2\u0304\u02fe\3\2\2\2\u0304\u0301\3\2"+ - "\2\2\u0305\u0308\3\2\2\2\u0306\u0304\3\2\2\2\u0306\u0307\3\2\2\2\u0307"+ - "W\3\2\2\2\u0308\u0306\3\2\2\2Gafz\u0084\u008b\u0099\u009f\u00a4\u00aa"+ - "\u00af\u00b8\u00bf\u00ca\u00fe\u010d\u0122\u012b\u0130\u0135\u013c\u0149"+ - "\u014e\u015a\u0168\u017b\u0184\u018b\u0190\u0195\u0197\u019d\u01a4\u01a7"+ - "\u01af\u01b2\u01b5\u01bf\u01c6\u01cd\u01d3\u01d5\u01dd\u01e3\u01ef\u01fd"+ - "\u0203\u020d\u0219\u0221\u0238\u0242\u0246\u0278\u0282\u0284\u028c\u0291"+ - "\u029b\u02ad\u02af\u02b4\u02ba\u02c0\u02c4\u02cc\u02e6\u02f6\u0304\u0306"; + "\3\21\3\21\3\21\3\21\5\21\u010c\n\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ + "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u011f\n\21\3\21"+ + "\3\21\3\21\3\21\3\21\7\21\u0126\n\21\f\21\16\21\u0129\13\21\3\21\3\21"+ + "\5\21\u012d\n\21\3\22\6\22\u0130\n\22\r\22\16\22\u0131\3\23\3\23\3\23"+ + "\3\23\3\23\5\23\u0139\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23"+ + "\3\23\3\23\5\23\u0146\n\23\3\23\7\23\u0149\n\23\f\23\16\23\u014c\13\23"+ + "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u0155\n\23\f\23\16\23\u0158\13"+ + "\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u0163\n\23\f\23"+ + "\16\23\u0166\13\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3"+ + "\23\3\23\3\23\3\23\3\23\3\23\5\23\u0178\n\23\3\23\3\23\3\23\3\23\3\23"+ + "\3\23\3\23\5\23\u0181\n\23\3\23\3\23\3\23\3\23\3\23\5\23\u0188\n\23\3"+ + "\24\6\24\u018b\n\24\r\24\16\24\u018c\3\24\3\24\3\24\5\24\u0192\n\24\5"+ + "\24\u0194\n\24\3\25\3\25\3\25\3\25\5\25\u019a\n\25\3\26\3\26\3\26\3\26"+ + "\3\26\5\26\u01a1\n\26\3\26\5\26\u01a4\n\26\3\26\3\26\3\26\3\26\3\26\3"+ + "\26\5\26\u01ac\n\26\3\27\5\27\u01af\n\27\3\27\5\27\u01b2\n\27\3\30\3\30"+ + "\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u01bc\n\30\3\30\3\30\3\30\3\30\3\30"+ + "\5\30\u01c3\n\30\3\30\3\30\3\30\3\30\3\30\5\30\u01ca\n\30\3\30\3\30\3"+ + "\30\3\30\7\30\u01d0\n\30\f\30\16\30\u01d3\13\30\3\31\3\31\3\31\3\32\3"+ + "\32\5\32\u01da\n\32\3\32\3\32\6\32\u01de\n\32\r\32\16\32\u01df\3\32\3"+ + "\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\5\35\u01ec\n\35\3\35\3\35"+ + "\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u01f8\n\36\f\36\16\36\u01fb"+ + "\13\36\3\37\3\37\3\37\5\37\u0200\n\37\3 \3 \3 \3 \3 \3 \7 \u0208\n \f"+ + " \16 \u020b\13 \3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u0216\n!\3!\3!\3!\3!\3!"+ + "\3!\5!\u021e\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!"+ + "\3!\7!\u0233\n!\f!\16!\u0236\13!\3!\3!\3!\3!\3!\6!\u023d\n!\r!\16!\u023e"+ + "\3!\3!\5!\u0243\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!"+ + "\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!"+ + "\3!\3!\3!\3!\3!\3!\3!\3!\5!\u0275\n!\3!\3!\3!\3!\3!\3!\3!\3!\7!\u027f"+ + "\n!\f!\16!\u0282\13!\3\"\3\"\3\"\7\"\u0287\n\"\f\"\16\"\u028a\13\"\3#"+ + "\3#\5#\u028e\n#\3#\3#\3$\3$\3$\3$\7$\u0296\n$\f$\16$\u0299\13$\3$\3$\3"+ + "%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\5%\u02aa\n%\5%\u02ac\n%\3&\7&\u02af"+ + "\n&\f&\16&\u02b2\13&\3\'\3\'\3\'\5\'\u02b7\n\'\3(\3(\3(\3(\5(\u02bd\n"+ + "(\3)\3)\5)\u02c1\n)\3*\3*\3*\3*\7*\u02c7\n*\f*\16*\u02ca\13*\3+\3+\3+"+ + "\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\5+\u02e3"+ + "\n+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\5,\u02f3\n,\3,\3,\3,\3,"+ + "\3,\3,\3,\3,\3,\3,\3,\3,\7,\u0301\n,\f,\16,\u0304\13,\3,\2\b\24.:>@V-"+ + "\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFH"+ + "JLNPRTV\2\r\3\2\26\27\5\2\21\22\30\31[[\4\2 ##\3\2\34\35\3\2\23\25\3"+ + "\2\21\22\3\2\36#\3\2{~\3\2yz\3\2\177\u0080\3\2{|\2\u0378\2X\3\2\2\2\4"+ + "[\3\2\2\2\6a\3\2\2\2\bf\3\2\2\2\nh\3\2\2\2\fz\3\2\2\2\16|\3\2\2\2\20\u0084"+ + "\3\2\2\2\22\u008e\3\2\2\2\24\u0091\3\2\2\2\26\u00a4\3\2\2\2\30\u00a6\3"+ + "\2\2\2\32\u00b3\3\2\2\2\34\u00bf\3\2\2\2\36\u00fe\3\2\2\2 \u012c\3\2\2"+ + "\2\"\u012f\3\2\2\2$\u0187\3\2\2\2&\u018a\3\2\2\2(\u0195\3\2\2\2*\u01ab"+ + "\3\2\2\2,\u01b1\3\2\2\2.\u01c2\3\2\2\2\60\u01d4\3\2\2\2\62\u01d7\3\2\2"+ + "\2\64\u01e3\3\2\2\2\66\u01e6\3\2\2\28\u01e9\3\2\2\2:\u01f1\3\2\2\2<\u01fc"+ + "\3\2\2\2>\u0201\3\2\2\2@\u0242\3\2\2\2B\u0283\3\2\2\2D\u028b\3\2\2\2F"+ + "\u0291\3\2\2\2H\u02ab\3\2\2\2J\u02b0\3\2\2\2L\u02b6\3\2\2\2N\u02bc\3\2"+ + "\2\2P\u02be\3\2\2\2R\u02c2\3\2\2\2T\u02e2\3\2\2\2V\u02f2\3\2\2\2XY\5\6"+ + "\4\2YZ\7\2\2\3Z\3\3\2\2\2[\\\5J&\2\\]\7\2\2\3]\5\3\2\2\2^`\5\b\5\2_^\3"+ + "\2\2\2`c\3\2\2\2a_\3\2\2\2ab\3\2\2\2b\7\3\2\2\2ca\3\2\2\2dg\5\f\7\2eg"+ + "\5\n\6\2fd\3\2\2\2fe\3\2\2\2g\t\3\2\2\2hi\7(\2\2ij\7`\2\2j\13\3\2\2\2"+ + "kl\5\22\n\2lm\7\n\2\2m{\3\2\2\2no\5\62\32\2op\7\n\2\2p{\3\2\2\2qr\58\35"+ + "\2rs\7\n\2\2s{\3\2\2\2t{\5\30\r\2u{\5D#\2v{\5\36\20\2wx\5\16\b\2xy\7\n"+ + "\2\2y{\3\2\2\2zk\3\2\2\2zn\3\2\2\2zq\3\2\2\2zt\3\2\2\2zu\3\2\2\2zv\3\2"+ + "\2\2zw\3\2\2\2{\r\3\2\2\2|}\7)\2\2}~\5.\30\2~\177\7k\2\2\177\u0080\b\b"+ + "\1\2\u0080\17\3\2\2\2\u0081\u0083\5 \21\2\u0082\u0081\3\2\2\2\u0083\u0086"+ + "\3\2\2\2\u0084\u0082\3\2\2\2\u0084\u0085\3\2\2\2\u0085\u0087\3\2\2\2\u0086"+ + "\u0084\3\2\2\2\u0087\u008b\5.\30\2\u0088\u008a\5 \21\2\u0089\u0088\3\2"+ + "\2\2\u008a\u008d\3\2\2\2\u008b\u0089\3\2\2\2\u008b\u008c\3\2\2\2\u008c"+ + "\21\3\2\2\2\u008d\u008b\3\2\2\2\u008e\u008f\5\20\t\2\u008f\u0090\5\24"+ + "\13\2\u0090\23\3\2\2\2\u0091\u0092\b\13\1\2\u0092\u0093\5\26\f\2\u0093"+ + "\u0099\3\2\2\2\u0094\u0095\f\3\2\2\u0095\u0096\7\f\2\2\u0096\u0098\5\26"+ + "\f\2\u0097\u0094\3\2\2\2\u0098\u009b\3\2\2\2\u0099\u0097\3\2\2\2\u0099"+ + "\u009a\3\2\2\2\u009a\25\3\2\2\2\u009b\u0099\3\2\2\2\u009c\u009f\7k\2\2"+ + "\u009d\u009e\7&\2\2\u009e\u00a0\5@!\2\u009f\u009d\3\2\2\2\u009f\u00a0"+ + "\3\2\2\2\u00a0\u00a5\3\2\2\2\u00a1\u00a2\7k\2\2\u00a2\u00a3\7&\2\2\u00a3"+ + "\u00a5\5D#\2\u00a4\u009c\3\2\2\2\u00a4\u00a1\3\2\2\2\u00a5\27\3\2\2\2"+ + "\u00a6\u00a7\5\20\t\2\u00a7\u00a8\7k\2\2\u00a8\u00aa\7\b\2\2\u00a9\u00ab"+ + "\5\32\16\2\u00aa\u00a9\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ac\3\2\2\2"+ + "\u00ac\u00ad\7\t\2\2\u00ad\u00af\7\4\2\2\u00ae\u00b0\5\"\22\2\u00af\u00ae"+ + "\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1\u00b2\7\5\2\2\u00b2"+ + "\31\3\2\2\2\u00b3\u00b8\5\34\17\2\u00b4\u00b5\7\f\2\2\u00b5\u00b7\5\34"+ + "\17\2\u00b6\u00b4\3\2\2\2\u00b7\u00ba\3\2\2\2\u00b8\u00b6\3\2\2\2\u00b8"+ + "\u00b9\3\2\2\2\u00b9\33\3\2\2\2\u00ba\u00b8\3\2\2\2\u00bb\u00bc\5\20\t"+ + "\2\u00bc\u00bd\7k\2\2\u00bd\u00c0\3\2\2\2\u00be\u00c0\7]\2\2\u00bf\u00bb"+ + "\3\2\2\2\u00bf\u00be\3\2\2\2\u00c0\35\3\2\2\2\u00c1\u00c2\7*\2\2\u00c2"+ + "\u00c3\7+\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c5\7\b\2\2\u00c5\u00ca\7b\2"+ + "\2\u00c6\u00c7\7\f\2\2\u00c7\u00c9\7b\2\2\u00c8\u00c6\3\2\2\2\u00c9\u00cc"+ + "\3\2\2\2\u00ca\u00c8\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cd\3\2\2\2\u00cc"+ + "\u00ca\3\2\2\2\u00cd\u00ff\7\t\2\2\u00ce\u00cf\7*\2\2\u00cf\u00d0\7,\2"+ + "\2\u00d0\u00d1\3\2\2\2\u00d1\u00d2\7\b\2\2\u00d2\u00d3\7b\2\2\u00d3\u00ff"+ + "\7\t\2\2\u00d4\u00d5\7*\2\2\u00d5\u00d6\7-\2\2\u00d6\u00d7\3\2\2\2\u00d7"+ + "\u00d8\7\b\2\2\u00d8\u00d9\7k\2\2\u00d9\u00ff\7\t\2\2\u00da\u00db\7*\2"+ + "\2\u00db\u00dc\7/\2\2\u00dc\u00dd\3\2\2\2\u00dd\u00de\7\b\2\2\u00de\u00df"+ + "\7k\2\2\u00df\u00ff\7\t\2\2\u00e0\u00e1\7*\2\2\u00e1\u00e2\7.\2\2\u00e2"+ + "\u00e3\3\2\2\2\u00e3\u00e4\7\b\2\2\u00e4\u00e5\7`\2\2\u00e5\u00ff\7\t"+ + "\2\2\u00e6\u00e7\7*\2\2\u00e7\u00e8\7\60\2\2\u00e8\u00e9\3\2\2\2\u00e9"+ + "\u00ea\7\b\2\2\u00ea\u00eb\7k\2\2\u00eb\u00ff\7\t\2\2\u00ec\u00ed\7*\2"+ + "\2\u00ed\u00ee\7\61\2\2\u00ee\u00ef\3\2\2\2\u00ef\u00f0\7\b\2\2\u00f0"+ + "\u00f1\7k\2\2\u00f1\u00ff\7\t\2\2\u00f2\u00f3\7*\2\2\u00f3\u00f4\7\62"+ + "\2\2\u00f4\u00f5\3\2\2\2\u00f5\u00f6\7\b\2\2\u00f6\u00f7\7k\2\2\u00f7"+ + "\u00ff\7\t\2\2\u00f8\u00f9\7*\2\2\u00f9\u00fa\7C\2\2\u00fa\u00fb\3\2\2"+ + "\2\u00fb\u00fc\7\b\2\2\u00fc\u00fd\7D\2\2\u00fd\u00ff\7\t\2\2\u00fe\u00c1"+ + "\3\2\2\2\u00fe\u00ce\3\2\2\2\u00fe\u00d4\3\2\2\2\u00fe\u00da\3\2\2\2\u00fe"+ + "\u00e0\3\2\2\2\u00fe\u00e6\3\2\2\2\u00fe\u00ec\3\2\2\2\u00fe\u00f2\3\2"+ + "\2\2\u00fe\u00f8\3\2\2\2\u00ff\37\3\2\2\2\u0100\u012d\7\63\2\2\u0101\u012d"+ + "\7\64\2\2\u0102\u012d\7\65\2\2\u0103\u0104\78\2\2\u0104\u0105\7\b\2\2"+ + "\u0105\u0106\7b\2\2\u0106\u012d\7\t\2\2\u0107\u010b\79\2\2\u0108\u0109"+ + "\7\b\2\2\u0109\u010a\7k\2\2\u010a\u010c\7\t\2\2\u010b\u0108\3\2\2\2\u010b"+ + "\u010c\3\2\2\2\u010c\u012d\3\2\2\2\u010d\u012d\7;\2\2\u010e\u012d\7<\2"+ + "\2\u010f\u0110\7:\2\2\u0110\u0111\7\b\2\2\u0111\u0112\7b\2\2\u0112\u012d"+ + "\7\t\2\2\u0113\u012d\7@\2\2\u0114\u012d\7A\2\2\u0115\u012d\7=\2\2\u0116"+ + "\u012d\7>\2\2\u0117\u012d\7\66\2\2\u0118\u012d\7\67\2\2\u0119\u012d\7"+ + "?\2\2\u011a\u011e\7B\2\2\u011b\u011c\7\b\2\2\u011c\u011d\7k\2\2\u011d"+ + "\u011f\7\t\2\2\u011e\u011b\3\2\2\2\u011e\u011f\3\2\2\2\u011f\u012d\3\2"+ + "\2\2\u0120\u0121\7+\2\2\u0121\u0122\7\b\2\2\u0122\u0127\7b\2\2\u0123\u0124"+ + "\7\f\2\2\u0124\u0126\7b\2\2\u0125\u0123\3\2\2\2\u0126\u0129\3\2\2\2\u0127"+ + "\u0125\3\2\2\2\u0127\u0128\3\2\2\2\u0128\u012a\3\2\2\2\u0129\u0127\3\2"+ + "\2\2\u012a\u012d\7\t\2\2\u012b\u012d\7D\2\2\u012c\u0100\3\2\2\2\u012c"+ + "\u0101\3\2\2\2\u012c\u0102\3\2\2\2\u012c\u0103\3\2\2\2\u012c\u0107\3\2"+ + "\2\2\u012c\u010d\3\2\2\2\u012c\u010e\3\2\2\2\u012c\u010f\3\2\2\2\u012c"+ + "\u0113\3\2\2\2\u012c\u0114\3\2\2\2\u012c\u0115\3\2\2\2\u012c\u0116\3\2"+ + "\2\2\u012c\u0117\3\2\2\2\u012c\u0118\3\2\2\2\u012c\u0119\3\2\2\2\u012c"+ + "\u011a\3\2\2\2\u012c\u0120\3\2\2\2\u012c\u012b\3\2\2\2\u012d!\3\2\2\2"+ + "\u012e\u0130\5$\23\2\u012f\u012e\3\2\2\2\u0130\u0131\3\2\2\2\u0131\u012f"+ + "\3\2\2\2\u0131\u0132\3\2\2\2\u0132#\3\2\2\2\u0133\u0134\5\22\n\2\u0134"+ + "\u0135\7\n\2\2\u0135\u0188\3\2\2\2\u0136\u0138\7\4\2\2\u0137\u0139\5\""+ + "\22\2\u0138\u0137\3\2\2\2\u0138\u0139\3\2\2\2\u0139\u013a\3\2\2\2\u013a"+ + "\u0188\7\5\2\2\u013b\u013c\5> \2\u013c\u013d\7\n\2\2\u013d\u0188\3\2\2"+ + "\2\u013e\u013f\7E\2\2\u013f\u0140\7\b\2\2\u0140\u0141\5> \2\u0141\u0142"+ + "\7\t\2\2\u0142\u0145\5$\23\2\u0143\u0144\7F\2\2\u0144\u0146\5$\23\2\u0145"+ + "\u0143\3\2\2\2\u0145\u0146\3\2\2\2\u0146\u0188\3\2\2\2\u0147\u0149\5 "+ + "\21\2\u0148\u0147\3\2\2\2\u0149\u014c\3\2\2\2\u014a\u0148\3\2\2\2\u014a"+ + "\u014b\3\2\2\2\u014b\u014d\3\2\2\2\u014c\u014a\3\2\2\2\u014d\u014e\7G"+ + "\2\2\u014e\u014f\7\b\2\2\u014f\u0150\5> \2\u0150\u0151\7\t\2\2\u0151\u0152"+ + "\5$\23\2\u0152\u0188\3\2\2\2\u0153\u0155\5 \21\2\u0154\u0153\3\2\2\2\u0155"+ + "\u0158\3\2\2\2\u0156\u0154\3\2\2\2\u0156\u0157\3\2\2\2\u0157\u0159\3\2"+ + "\2\2\u0158\u0156\3\2\2\2\u0159\u015a\7H\2\2\u015a\u015b\5$\23\2\u015b"+ + "\u015c\7G\2\2\u015c\u015d\7\b\2\2\u015d\u015e\5> \2\u015e\u015f\7\t\2"+ + "\2\u015f\u0160\7\n\2\2\u0160\u0188\3\2\2\2\u0161\u0163\5 \21\2\u0162\u0161"+ + "\3\2\2\2\u0163\u0166\3\2\2\2\u0164\u0162\3\2\2\2\u0164\u0165\3\2\2\2\u0165"+ + "\u0167\3\2\2\2\u0166\u0164\3\2\2\2\u0167\u0168\7I\2\2\u0168\u0169\7\b"+ + "\2\2\u0169\u016a\5*\26\2\u016a\u016b\7\t\2\2\u016b\u016c\5$\23\2\u016c"+ + "\u0188\3\2\2\2\u016d\u016e\7J\2\2\u016e\u016f\7\b\2\2\u016f\u0170\5> "+ + "\2\u0170\u0171\7\t\2\2\u0171\u0172\7\4\2\2\u0172\u0173\5&\24\2\u0173\u0174"+ + "\7\5\2\2\u0174\u0188\3\2\2\2\u0175\u0177\7K\2\2\u0176\u0178\5> \2\u0177"+ + "\u0176\3\2\2\2\u0177\u0178\3\2\2\2\u0178\u0179\3\2\2\2\u0179\u0188\7\n"+ + "\2\2\u017a\u017b\7L\2\2\u017b\u0188\7\n\2\2\u017c\u017d\7M\2\2\u017d\u0188"+ + "\7\n\2\2\u017e\u0180\7N\2\2\u017f\u0181\5F$\2\u0180\u017f\3\2\2\2\u0180"+ + "\u0181\3\2\2\2\u0181\u0182\3\2\2\2\u0182\u0183\7\4\2\2\u0183\u0184\5J"+ + "&\2\u0184\u0185\7\u0082\2\2\u0185\u0188\3\2\2\2\u0186\u0188\5D#\2\u0187"+ + "\u0133\3\2\2\2\u0187\u0136\3\2\2\2\u0187\u013b\3\2\2\2\u0187\u013e\3\2"+ + "\2\2\u0187\u014a\3\2\2\2\u0187\u0156\3\2\2\2\u0187\u0164\3\2\2\2\u0187"+ + "\u016d\3\2\2\2\u0187\u0175\3\2\2\2\u0187\u017a\3\2\2\2\u0187\u017c\3\2"+ + "\2\2\u0187\u017e\3\2\2\2\u0187\u0186\3\2\2\2\u0188%\3\2\2\2\u0189\u018b"+ + "\5(\25\2\u018a\u0189\3\2\2\2\u018b\u018c\3\2\2\2\u018c\u018a\3\2\2\2\u018c"+ + "\u018d\3\2\2\2\u018d\u0193\3\2\2\2\u018e\u018f\7O\2\2\u018f\u0191\7\13"+ + "\2\2\u0190\u0192\5\"\22\2\u0191\u0190\3\2\2\2\u0191\u0192\3\2\2\2\u0192"+ + "\u0194\3\2\2\2\u0193\u018e\3\2\2\2\u0193\u0194\3\2\2\2\u0194\'\3\2\2\2"+ + "\u0195\u0196\7P\2\2\u0196\u0197\5@!\2\u0197\u0199\7\13\2\2\u0198\u019a"+ + "\5\"\22\2\u0199\u0198\3\2\2\2\u0199\u019a\3\2\2\2\u019a)\3\2\2\2\u019b"+ + "\u019c\5,\27\2\u019c\u019d\7\n\2\2\u019d\u019e\5> \2\u019e\u01a0\7\n\2"+ + "\2\u019f\u01a1\5> \2\u01a0\u019f\3\2\2\2\u01a0\u01a1\3\2\2\2\u01a1\u01ac"+ + "\3\2\2\2\u01a2\u01a4\5\20\t\2\u01a3\u01a2\3\2\2\2\u01a3\u01a4\3\2\2\2"+ + "\u01a4\u01a5\3\2\2\2\u01a5\u01a6\7k\2\2\u01a6\u01a7\7\13\2\2\u01a7\u01a8"+ + "\5@!\2\u01a8\u01a9\7\r\2\2\u01a9\u01aa\5@!\2\u01aa\u01ac\3\2\2\2\u01ab"+ + "\u019b\3\2\2\2\u01ab\u01a3\3\2\2\2\u01ac+\3\2\2\2\u01ad\u01af\5\22\n\2"+ + "\u01ae\u01ad\3\2\2\2\u01ae\u01af\3\2\2\2\u01af\u01b2\3\2\2\2\u01b0\u01b2"+ + "\5> \2\u01b1\u01ae\3\2\2\2\u01b1\u01b0\3\2\2\2\u01b2-\3\2\2\2\u01b3\u01b4"+ + "\b\30\1\2\u01b4\u01b5\7\b\2\2\u01b5\u01b6\5.\30\2\u01b6\u01b7\7\t\2\2"+ + "\u01b7\u01c3\3\2\2\2\u01b8\u01c3\7]\2\2\u01b9\u01bb\7\\\2\2\u01ba\u01bc"+ + "\7]\2\2\u01bb\u01ba\3\2\2\2\u01bb\u01bc\3\2\2\2\u01bc\u01c3\3\2\2\2\u01bd"+ + "\u01c3\5\62\32\2\u01be\u01c3\5\60\31\2\u01bf\u01c3\58\35\2\u01c0\u01c3"+ + "\5\66\34\2\u01c1\u01c3\7\3\2\2\u01c2\u01b3\3\2\2\2\u01c2\u01b8\3\2\2\2"+ + "\u01c2\u01b9\3\2\2\2\u01c2\u01bd\3\2\2\2\u01c2\u01be\3\2\2\2\u01c2\u01bf"+ + "\3\2\2\2\u01c2\u01c0\3\2\2\2\u01c2\u01c1\3\2\2\2\u01c3\u01d1\3\2\2\2\u01c4"+ + "\u01c5\f\n\2\2\u01c5\u01d0\7\23\2\2\u01c6\u01c7\f\t\2\2\u01c7\u01c9\7"+ + "\6\2\2\u01c8\u01ca\5@!\2\u01c9\u01c8\3\2\2\2\u01c9\u01ca\3\2\2\2\u01ca"+ + "\u01cb\3\2\2\2\u01cb\u01d0\7\7\2\2\u01cc\u01cd\f\b\2\2\u01cd\u01ce\7\b"+ + "\2\2\u01ce\u01d0\7\t\2\2\u01cf\u01c4\3\2\2\2\u01cf\u01c6\3\2\2\2\u01cf"+ + "\u01cc\3\2\2\2\u01d0\u01d3\3\2\2\2\u01d1\u01cf\3\2\2\2\u01d1\u01d2\3\2"+ + "\2\2\u01d2/\3\2\2\2\u01d3\u01d1\3\2\2\2\u01d4\u01d5\7Q\2\2\u01d5\u01d6"+ + "\7k\2\2\u01d6\61\3\2\2\2\u01d7\u01d9\7Q\2\2\u01d8\u01da\7k\2\2\u01d9\u01d8"+ + "\3\2\2\2\u01d9\u01da\3\2\2\2\u01da\u01db\3\2\2\2\u01db\u01dd\7\4\2\2\u01dc"+ + "\u01de\5\64\33\2\u01dd\u01dc\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01dd\3"+ + "\2\2\2\u01df\u01e0\3\2\2\2\u01e0\u01e1\3\2\2\2\u01e1\u01e2\7\5\2\2\u01e2"+ + "\63\3\2\2\2\u01e3\u01e4\5\22\n\2\u01e4\u01e5\7\n\2\2\u01e5\65\3\2\2\2"+ + "\u01e6\u01e7\7R\2\2\u01e7\u01e8\7k\2\2\u01e8\67\3\2\2\2\u01e9\u01eb\7"+ + "R\2\2\u01ea\u01ec\7k\2\2\u01eb\u01ea\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec"+ + "\u01ed\3\2\2\2\u01ed\u01ee\7\4\2\2\u01ee\u01ef\5:\36\2\u01ef\u01f0\7\5"+ + "\2\2\u01f09\3\2\2\2\u01f1\u01f2\b\36\1\2\u01f2\u01f3\5<\37\2\u01f3\u01f9"+ + "\3\2\2\2\u01f4\u01f5\f\3\2\2\u01f5\u01f6\7\f\2\2\u01f6\u01f8\5<\37\2\u01f7"+ + "\u01f4\3\2\2\2\u01f8\u01fb\3\2\2\2\u01f9\u01f7\3\2\2\2\u01f9\u01fa\3\2"+ + "\2\2\u01fa;\3\2\2\2\u01fb\u01f9\3\2\2\2\u01fc\u01ff\7k\2\2\u01fd\u01fe"+ + "\7&\2\2\u01fe\u0200\5@!\2\u01ff\u01fd\3\2\2\2\u01ff\u0200\3\2\2\2\u0200"+ + "=\3\2\2\2\u0201\u0202\b \1\2\u0202\u0203\5@!\2\u0203\u0209\3\2\2\2\u0204"+ + "\u0205\f\3\2\2\u0205\u0206\7\f\2\2\u0206\u0208\5@!\2\u0207\u0204\3\2\2"+ + "\2\u0208\u020b\3\2\2\2\u0209\u0207\3\2\2\2\u0209\u020a\3\2\2\2\u020a?"+ + "\3\2\2\2\u020b\u0209\3\2\2\2\u020c\u020d\b!\1\2\u020d\u020e\7\b\2\2\u020e"+ + "\u020f\5> \2\u020f\u0210\7\t\2\2\u0210\u0243\3\2\2\2\u0211\u0212\7S\2"+ + "\2\u0212\u0215\7\b\2\2\u0213\u0216\5@!\2\u0214\u0216\5.\30\2\u0215\u0213"+ + "\3\2\2\2\u0215\u0214\3\2\2\2\u0216\u0217\3\2\2\2\u0217\u0218\7\t\2\2\u0218"+ + "\u0243\3\2\2\2\u0219\u021a\7T\2\2\u021a\u021d\7\b\2\2\u021b\u021e\5@!"+ + "\2\u021c\u021e\5.\30\2\u021d\u021b\3\2\2\2\u021d\u021c\3\2\2\2\u021e\u021f"+ + "\3\2\2\2\u021f\u0220\7\t\2\2\u0220\u0243\3\2\2\2\u0221\u0222\7\b\2\2\u0222"+ + "\u0223\5.\30\2\u0223\u0224\7\t\2\2\u0224\u0225\5@!\32\u0225\u0243\3\2"+ + "\2\2\u0226\u0227\t\2\2\2\u0227\u0243\5@!\31\u0228\u0229\7\23\2\2\u0229"+ + "\u0243\5@!\27\u022a\u022b\t\3\2\2\u022b\u0243\5@!\26\u022c\u022d\t\4\2"+ + "\2\u022d\u0243\5@!\22\u022e\u022f\7\4\2\2\u022f\u0234\5@!\2\u0230\u0231"+ + "\7\f\2\2\u0231\u0233\5@!\2\u0232\u0230\3\2\2\2\u0233\u0236\3\2\2\2\u0234"+ + "\u0232\3\2\2\2\u0234\u0235\3\2\2\2\u0235\u0237\3\2\2\2\u0236\u0234\3\2"+ + "\2\2\u0237\u0238\7\5\2\2\u0238\u0243\3\2\2\2\u0239\u0243\7k\2\2\u023a"+ + "\u0243\7b\2\2\u023b\u023d\7`\2\2\u023c\u023b\3\2\2\2\u023d\u023e\3\2\2"+ + "\2\u023e\u023c\3\2\2\2\u023e\u023f\3\2\2\2\u023f\u0243\3\2\2\2\u0240\u0243"+ + "\7a\2\2\u0241\u0243\7^\2\2\u0242\u020c\3\2\2\2\u0242\u0211\3\2\2\2\u0242"+ + "\u0219\3\2\2\2\u0242\u0221\3\2\2\2\u0242\u0226\3\2\2\2\u0242\u0228\3\2"+ + "\2\2\u0242\u022a\3\2\2\2\u0242\u022c\3\2\2\2\u0242\u022e\3\2\2\2\u0242"+ + "\u0239\3\2\2\2\u0242\u023a\3\2\2\2\u0242\u023c\3\2\2\2\u0242\u0240\3\2"+ + "\2\2\u0242\u0241\3\2\2\2\u0243\u0280\3\2\2\2\u0244\u0245\f\25\2\2\u0245"+ + "\u0246\t\5\2\2\u0246\u027f\5@!\26\u0247\u0248\f\24\2\2\u0248\u0249\t\6"+ + "\2\2\u0249\u027f\5@!\25\u024a\u024b\f\23\2\2\u024b\u024c\t\7\2\2\u024c"+ + "\u027f\5@!\24\u024d\u024e\f\21\2\2\u024e\u024f\t\b\2\2\u024f\u027f\5@"+ + "!\22\u0250\u0251\f\20\2\2\u0251\u0252\7\30\2\2\u0252\u027f\5@!\21\u0253"+ + "\u0254\f\17\2\2\u0254\u0255\7\32\2\2\u0255\u027f\5@!\20\u0256\u0257\f"+ + "\16\2\2\u0257\u0258\7\33\2\2\u0258\u027f\5@!\17\u0259\u025a\f\r\2\2\u025a"+ + "\u025b\7$\2\2\u025b\u027f\5@!\16\u025c\u025d\f\f\2\2\u025d\u025e\7%\2"+ + "\2\u025e\u027f\5@!\r\u025f\u0260\f\13\2\2\u0260\u0261\7\16\2\2\u0261\u0262"+ + "\5@!\2\u0262\u0263\7\13\2\2\u0263\u0264\5@!\f\u0264\u027f\3\2\2\2\u0265"+ + "\u0266\f\n\2\2\u0266\u0267\7&\2\2\u0267\u027f\5@!\n\u0268\u0269\f\t\2"+ + "\2\u0269\u026a\7\'\2\2\u026a\u027f\5@!\t\u026b\u026c\f \2\2\u026c\u026d"+ + "\7\17\2\2\u026d\u027f\7k\2\2\u026e\u026f\f\37\2\2\u026f\u0270\7\20\2\2"+ + "\u0270\u027f\7k\2\2\u0271\u0272\f\36\2\2\u0272\u0274\7\b\2\2\u0273\u0275"+ + "\5B\"\2\u0274\u0273\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0276\3\2\2\2\u0276"+ + "\u027f\7\t\2\2\u0277\u0278\f\33\2\2\u0278\u0279\7\6\2\2\u0279\u027a\5"+ + "> \2\u027a\u027b\7\7\2\2\u027b\u027f\3\2\2\2\u027c\u027d\f\30\2\2\u027d"+ + "\u027f\t\2\2\2\u027e\u0244\3\2\2\2\u027e\u0247\3\2\2\2\u027e\u024a\3\2"+ + "\2\2\u027e\u024d\3\2\2\2\u027e\u0250\3\2\2\2\u027e\u0253\3\2\2\2\u027e"+ + "\u0256\3\2\2\2\u027e\u0259\3\2\2\2\u027e\u025c\3\2\2\2\u027e\u025f\3\2"+ + "\2\2\u027e\u0265\3\2\2\2\u027e\u0268\3\2\2\2\u027e\u026b\3\2\2\2\u027e"+ + "\u026e\3\2\2\2\u027e\u0271\3\2\2\2\u027e\u0277\3\2\2\2\u027e\u027c\3\2"+ + "\2\2\u027f\u0282\3\2\2\2\u0280\u027e\3\2\2\2\u0280\u0281\3\2\2\2\u0281"+ + "A\3\2\2\2\u0282\u0280\3\2\2\2\u0283\u0288\5@!\2\u0284\u0285\7\f\2\2\u0285"+ + "\u0287\5@!\2\u0286\u0284\3\2\2\2\u0287\u028a\3\2\2\2\u0288\u0286\3\2\2"+ + "\2\u0288\u0289\3\2\2\2\u0289C\3\2\2\2\u028a\u0288\3\2\2\2\u028b\u028d"+ + "\7U\2\2\u028c\u028e\5F$\2\u028d\u028c\3\2\2\2\u028d\u028e\3\2\2\2\u028e"+ + "\u028f\3\2\2\2\u028f\u0290\7_\2\2\u0290E\3\2\2\2\u0291\u0292\7\b\2\2\u0292"+ + "\u0297\5H%\2\u0293\u0294\7\f\2\2\u0294\u0296\5H%\2\u0295\u0293\3\2\2\2"+ + "\u0296\u0299\3\2\2\2\u0297\u0295\3\2\2\2\u0297\u0298\3\2\2\2\u0298\u029a"+ + "\3\2\2\2\u0299\u0297\3\2\2\2\u029a\u029b\7\t\2\2\u029bG\3\2\2\2\u029c"+ + "\u029d\7V\2\2\u029d\u02ac\7`\2\2\u029e\u029f\7W\2\2\u029f\u02ac\7k\2\2"+ + "\u02a0\u02a1\7X\2\2\u02a1\u02ac\7`\2\2\u02a2\u02a3\7Y\2\2\u02a3\u02ac"+ + "\5@!\2\u02a4\u02a5\7Z\2\2\u02a5\u02ac\5@!\2\u02a6\u02a9\7,\2\2\u02a7\u02aa"+ + "\7?\2\2\u02a8\u02aa\5@!\2\u02a9\u02a7\3\2\2\2\u02a9\u02a8\3\2\2\2\u02aa"+ + "\u02ac\3\2\2\2\u02ab\u029c\3\2\2\2\u02ab\u029e\3\2\2\2\u02ab\u02a0\3\2"+ + "\2\2\u02ab\u02a2\3\2\2\2\u02ab\u02a4\3\2\2\2\u02ab\u02a6\3\2\2\2\u02ac"+ + "I\3\2\2\2\u02ad\u02af\5L\'\2\u02ae\u02ad\3\2\2\2\u02af\u02b2\3\2\2\2\u02b0"+ + "\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1K\3\2\2\2\u02b2\u02b0\3\2\2\2"+ + "\u02b3\u02b7\5N(\2\u02b4\u02b7\5P)\2\u02b5\u02b7\5R*\2\u02b6\u02b3\3\2"+ + "\2\2\u02b6\u02b4\3\2\2\2\u02b6\u02b5\3\2\2\2\u02b7M\3\2\2\2\u02b8\u02b9"+ + "\7\u008f\2\2\u02b9\u02bd\7r\2\2\u02ba\u02bb\7\u008e\2\2\u02bb\u02bd\7"+ + "r\2\2\u02bc\u02b8\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bdO\3\2\2\2\u02be\u02c0"+ + "\7p\2\2\u02bf\u02c1\5T+\2\u02c0\u02bf\3\2\2\2\u02c0\u02c1\3\2\2\2\u02c1"+ + "Q\3\2\2\2\u02c2\u02c3\7o\2\2\u02c3\u02c8\5V,\2\u02c4\u02c5\7s\2\2\u02c5"+ + "\u02c7\5V,\2\u02c6\u02c4\3\2\2\2\u02c7\u02ca\3\2\2\2\u02c8\u02c6\3\2\2"+ + "\2\u02c8\u02c9\3\2\2\2\u02c9S\3\2\2\2\u02ca\u02c8\3\2\2\2\u02cb\u02e3"+ + "\5V,\2\u02cc\u02cd\7q\2\2\u02cd\u02e3\5V,\2\u02ce\u02cf\5V,\2\u02cf\u02d0"+ + "\7s\2\2\u02d0\u02d1\7\u008f\2\2\u02d1\u02e3\3\2\2\2\u02d2\u02d3\7t\2\2"+ + "\u02d3\u02d4\5V,\2\u02d4\u02d5\7u\2\2\u02d5\u02d6\7s\2\2\u02d6\u02d7\7"+ + "\u008f\2\2\u02d7\u02e3\3\2\2\2\u02d8\u02d9\7t\2\2\u02d9\u02da\5V,\2\u02da"+ + "\u02db\7s\2\2\u02db\u02dc\7\u008f\2\2\u02dc\u02dd\7u\2\2\u02dd\u02e3\3"+ + "\2\2\2\u02de\u02df\7t\2\2\u02df\u02e0\5V,\2\u02e0\u02e1\7u\2\2\u02e1\u02e3"+ + "\3\2\2\2\u02e2\u02cb\3\2\2\2\u02e2\u02cc\3\2\2\2\u02e2\u02ce\3\2\2\2\u02e2"+ + "\u02d2\3\2\2\2\u02e2\u02d8\3\2\2\2\u02e2\u02de\3\2\2\2\u02e3U\3\2\2\2"+ + "\u02e4\u02e5\b,\1\2\u02e5\u02e6\7v\2\2\u02e6\u02e7\5V,\2\u02e7\u02e8\7"+ + "w\2\2\u02e8\u02f3\3\2\2\2\u02e9\u02ea\t\t\2\2\u02ea\u02f3\5V,\n\u02eb"+ + "\u02f3\7\u008f\2\2\u02ec\u02f3\7\u008d\2\2\u02ed\u02ee\7\u0081\2\2\u02ee"+ + "\u02ef\7\u008f\2\2\u02ef\u02f3\7\u0082\2\2\u02f0\u02f3\7\u0083\2\2\u02f1"+ + "\u02f3\7\u008c\2\2\u02f2\u02e4\3\2\2\2\u02f2\u02e9\3\2\2\2\u02f2\u02eb"+ + "\3\2\2\2\u02f2\u02ec\3\2\2\2\u02f2\u02ed\3\2\2\2\u02f2\u02f0\3\2\2\2\u02f2"+ + "\u02f1\3\2\2\2\u02f3\u0302\3\2\2\2\u02f4\u02f5\f\f\2\2\u02f5\u02f6\7x"+ + "\2\2\u02f6\u0301\5V,\r\u02f7\u02f8\f\13\2\2\u02f8\u02f9\t\n\2\2\u02f9"+ + "\u0301\5V,\f\u02fa\u02fb\f\t\2\2\u02fb\u02fc\t\13\2\2\u02fc\u0301\5V,"+ + "\n\u02fd\u02fe\f\b\2\2\u02fe\u02ff\t\f\2\2\u02ff\u0301\5V,\t\u0300\u02f4"+ + "\3\2\2\2\u0300\u02f7\3\2\2\2\u0300\u02fa\3\2\2\2\u0300\u02fd\3\2\2\2\u0301"+ + "\u0304\3\2\2\2\u0302\u0300\3\2\2\2\u0302\u0303\3\2\2\2\u0303W\3\2\2\2"+ + "\u0304\u0302\3\2\2\2Gafz\u0084\u008b\u0099\u009f\u00a4\u00aa\u00af\u00b8"+ + "\u00bf\u00ca\u00fe\u010b\u011e\u0127\u012c\u0131\u0138\u0145\u014a\u0156"+ + "\u0164\u0177\u0180\u0187\u018c\u0191\u0193\u0199\u01a0\u01a3\u01ab\u01ae"+ + "\u01b1\u01bb\u01c2\u01c9\u01cf\u01d1\u01d9\u01df\u01eb\u01f9\u01ff\u0209"+ + "\u0215\u021d\u0234\u023e\u0242\u0274\u027e\u0280\u0288\u028d\u0297\u02a9"+ + "\u02ab\u02b0\u02b6\u02bc\u02c0\u02c8\u02e2\u02f2\u0300\u0302"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java index e2e754e36..db65d1043 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java @@ -349,30 +349,6 @@ public class KickCParserBaseListener implements KickCParserListener { *

The default implementation does nothing.

*/ @Override public void exitDirectiveMaybeConst(KickCParser.DirectiveMaybeConstContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDirectiveExtern(KickCParser.DirectiveExternContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDirectiveExtern(KickCParser.DirectiveExternContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDirectiveExport(KickCParser.DirectiveExportContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDirectiveExport(KickCParser.DirectiveExportContext ctx) { } /** * {@inheritDoc} * @@ -433,6 +409,30 @@ public class KickCParserBaseListener implements KickCParserListener { *

The default implementation does nothing.

*/ @Override public void exitDirectiveMemoryAreaAddress(KickCParser.DirectiveMemoryAreaAddressContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx) { } /** * {@inheritDoc} * @@ -457,6 +457,30 @@ public class KickCParserBaseListener implements KickCParserListener { *

The default implementation does nothing.

*/ @Override public void exitDirectiveFormNotSsa(KickCParser.DirectiveFormNotSsaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDirectiveExtern(KickCParser.DirectiveExternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDirectiveExtern(KickCParser.DirectiveExternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDirectiveExport(KickCParser.DirectiveExportContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDirectiveExport(KickCParser.DirectiveExportContext ctx) { } /** * {@inheritDoc} * @@ -469,30 +493,6 @@ public class KickCParserBaseListener implements KickCParserListener { *

The default implementation does nothing.

*/ @Override public void exitDirectiveInline(KickCParser.DirectiveInlineContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx) { } /** * {@inheritDoc} * diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java index 21b9c3303..fea0986cc 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java @@ -209,20 +209,6 @@ public class KickCParserBaseVisitor extends AbstractParseTreeVisitor imple * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitDirectiveMaybeConst(KickCParser.DirectiveMaybeConstContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitDirectiveExtern(KickCParser.DirectiveExternContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitDirectiveExport(KickCParser.DirectiveExportContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * @@ -258,6 +244,20 @@ public class KickCParserBaseVisitor extends AbstractParseTreeVisitor imple * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitDirectiveMemoryAreaAddress(KickCParser.DirectiveMemoryAreaAddressContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * @@ -272,6 +272,20 @@ public class KickCParserBaseVisitor extends AbstractParseTreeVisitor imple * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitDirectiveFormNotSsa(KickCParser.DirectiveFormNotSsaContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDirectiveExtern(KickCParser.DirectiveExternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDirectiveExport(KickCParser.DirectiveExportContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * @@ -279,20 +293,6 @@ public class KickCParserBaseVisitor extends AbstractParseTreeVisitor imple * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitDirectiveInline(KickCParser.DirectiveInlineContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java index 59e5713fc..107847071 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java @@ -321,30 +321,6 @@ public interface KickCParserListener extends ParseTreeListener { * @param ctx the parse tree */ void exitDirectiveMaybeConst(KickCParser.DirectiveMaybeConstContext ctx); - /** - * Enter a parse tree produced by the {@code directiveExtern} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void enterDirectiveExtern(KickCParser.DirectiveExternContext ctx); - /** - * Exit a parse tree produced by the {@code directiveExtern} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void exitDirectiveExtern(KickCParser.DirectiveExternContext ctx); - /** - * Enter a parse tree produced by the {@code directiveExport} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void enterDirectiveExport(KickCParser.DirectiveExportContext ctx); - /** - * Exit a parse tree produced by the {@code directiveExport} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void exitDirectiveExport(KickCParser.DirectiveExportContext ctx); /** * Enter a parse tree produced by the {@code directiveAlign} * labeled alternative in {@link KickCParser#directive}. @@ -405,6 +381,30 @@ public interface KickCParserListener extends ParseTreeListener { * @param ctx the parse tree */ void exitDirectiveMemoryAreaAddress(KickCParser.DirectiveMemoryAreaAddressContext ctx); + /** + * Enter a parse tree produced by the {@code directiveVolatile} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void enterDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx); + /** + * Exit a parse tree produced by the {@code directiveVolatile} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void exitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx); + /** + * Enter a parse tree produced by the {@code directiveNotVolatile} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void enterDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx); + /** + * Exit a parse tree produced by the {@code directiveNotVolatile} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void exitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx); /** * Enter a parse tree produced by the {@code directiveFormSsa} * labeled alternative in {@link KickCParser#directive}. @@ -429,6 +429,30 @@ public interface KickCParserListener extends ParseTreeListener { * @param ctx the parse tree */ void exitDirectiveFormNotSsa(KickCParser.DirectiveFormNotSsaContext ctx); + /** + * Enter a parse tree produced by the {@code directiveExtern} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void enterDirectiveExtern(KickCParser.DirectiveExternContext ctx); + /** + * Exit a parse tree produced by the {@code directiveExtern} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void exitDirectiveExtern(KickCParser.DirectiveExternContext ctx); + /** + * Enter a parse tree produced by the {@code directiveExport} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void enterDirectiveExport(KickCParser.DirectiveExportContext ctx); + /** + * Exit a parse tree produced by the {@code directiveExport} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + */ + void exitDirectiveExport(KickCParser.DirectiveExportContext ctx); /** * Enter a parse tree produced by the {@code directiveInline} * labeled alternative in {@link KickCParser#directive}. @@ -441,30 +465,6 @@ public interface KickCParserListener extends ParseTreeListener { * @param ctx the parse tree */ void exitDirectiveInline(KickCParser.DirectiveInlineContext ctx); - /** - * Enter a parse tree produced by the {@code directiveVolatile} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void enterDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx); - /** - * Exit a parse tree produced by the {@code directiveVolatile} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void exitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx); - /** - * Enter a parse tree produced by the {@code directiveNotVolatile} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void enterDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx); - /** - * Exit a parse tree produced by the {@code directiveNotVolatile} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - */ - void exitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx); /** * Enter a parse tree produced by the {@code directiveInterrupt} * labeled alternative in {@link KickCParser#directive}. diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java index c9de1f2bd..3fd8c3180 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java @@ -196,20 +196,6 @@ public interface KickCParserVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitDirectiveMaybeConst(KickCParser.DirectiveMaybeConstContext ctx); - /** - * Visit a parse tree produced by the {@code directiveExtern} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitDirectiveExtern(KickCParser.DirectiveExternContext ctx); - /** - * Visit a parse tree produced by the {@code directiveExport} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitDirectiveExport(KickCParser.DirectiveExportContext ctx); /** * Visit a parse tree produced by the {@code directiveAlign} * labeled alternative in {@link KickCParser#directive}. @@ -245,6 +231,20 @@ public interface KickCParserVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitDirectiveMemoryAreaAddress(KickCParser.DirectiveMemoryAreaAddressContext ctx); + /** + * Visit a parse tree produced by the {@code directiveVolatile} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx); + /** + * Visit a parse tree produced by the {@code directiveNotVolatile} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx); /** * Visit a parse tree produced by the {@code directiveFormSsa} * labeled alternative in {@link KickCParser#directive}. @@ -259,6 +259,20 @@ public interface KickCParserVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitDirectiveFormNotSsa(KickCParser.DirectiveFormNotSsaContext ctx); + /** + * Visit a parse tree produced by the {@code directiveExtern} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDirectiveExtern(KickCParser.DirectiveExternContext ctx); + /** + * Visit a parse tree produced by the {@code directiveExport} + * labeled alternative in {@link KickCParser#directive}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDirectiveExport(KickCParser.DirectiveExportContext ctx); /** * Visit a parse tree produced by the {@code directiveInline} * labeled alternative in {@link KickCParser#directive}. @@ -266,20 +280,6 @@ public interface KickCParserVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitDirectiveInline(KickCParser.DirectiveInlineContext ctx); - /** - * Visit a parse tree produced by the {@code directiveVolatile} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitDirectiveVolatile(KickCParser.DirectiveVolatileContext ctx); - /** - * Visit a parse tree produced by the {@code directiveNotVolatile} - * labeled alternative in {@link KickCParser#directive}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitDirectiveNotVolatile(KickCParser.DirectiveNotVolatileContext ctx); /** * Visit a parse tree produced by the {@code directiveInterrupt} * labeled alternative in {@link KickCParser#directive}. diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java index 67673cb3c..62a524e8f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java @@ -1500,7 +1500,7 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor> constantStringMap = new LinkedHashMap<>(); for(ConstantVar constVar : getScope().getAllConstants(true)) { - ConstantValue constVal = constVar.getValue(); + ConstantValue constVal = constVar.getConstantValue(); if(constVal instanceof ConstantString) { ConstantString constString = (ConstantString) constVal; List constantVars = constantStringMap.computeIfAbsent(constString, k -> new ArrayList<>()); @@ -97,7 +97,7 @@ public class Pass2ConstantStringConsolidation extends Pass2SsaOptimization { // Modify all other constants to be references to the root constant for(ConstantVar constantVar : constantVars) { if(!constantVar.equals(rootConstant)) { - constantVar.setValue(new ConstantRef(rootConstant)); + constantVar.setConstantValue(new ConstantRef(rootConstant)); modified = true; } } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3AssertArrayLengths.java b/src/main/java/dk/camelot64/kickc/passes/Pass3AssertArrayLengths.java index 1c8e2c158..69634fbb4 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3AssertArrayLengths.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3AssertArrayLengths.java @@ -35,7 +35,7 @@ public class Pass3AssertArrayLengths extends Pass2SsaAssertion { } Integer declaredSizeInt = ((ConstantInteger) declaredSizeVal).getInteger().intValue(); // A constant size was found - Check that a value with the same size is present - ConstantValue constantValue = constantVar.getValue(); + ConstantValue constantValue = constantVar.getConstantValue(); if(constantValue == null) { throw new CompileError("Error! Array with a size not initialized " + constantVar.toString(getProgram())); } else if(constantValue instanceof ConstantArrayFilled) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java index c146146c7..02889d6ad 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java @@ -300,7 +300,7 @@ public class Pass4CodeGeneration { } private boolean hasData(ConstantVar constantVar) { - ConstantValue constantValue = constantVar.getValue(); + ConstantValue constantValue = constantVar.getConstantValue(); if(constantValue instanceof ConstantArray) { return true; } else { @@ -400,9 +400,9 @@ public class Pass4CodeGeneration { // Add any comments generateComments(asm, constantVar.getComments()); // Ensure encoding is good - ensureEncoding(asm, constantVar.getValue()); + ensureEncoding(asm, constantVar.getConstantValue()); // Find the constant value calculation - String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getValue(), 99, scopeRef); + String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getConstantValue(), 99, scopeRef); if(constantVar.getType() instanceof SymbolTypePointer) { // Must use a label for pointers asm.addLabelDecl(AsmFormat.asmFix(asmName), asmConstant); @@ -482,7 +482,7 @@ public class Pass4CodeGeneration { String alignment = AsmFormat.getAsmNumber(declaredAlignment); asm.addDataAlignment(alignment); } - ConstantValue constantValue = constantVar.getValue(); + ConstantValue constantValue = constantVar.getConstantValue(); if(constantValue instanceof ConstantArrayList || constantValue instanceof ConstantArrayFilled || constantValue instanceof ConstantArrayKickAsm || constantValue instanceof ConstantString) { AsmDataChunk asmDataChunk = new AsmDataChunk(); addChunkData(asmDataChunk, constantValue, constantVar.getType(), scopeRef); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java index 2a161a38f..f2602118e 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java @@ -116,7 +116,7 @@ public class Pass4RegistersFinalize extends Pass2Base { } } for(ConstantVar constantVar : scope.getAllConstants(false)) { - Registers.Register allocation = new Registers.RegisterConstant(constantVar.getValue()); + Registers.Register allocation = new Registers.RegisterConstant(constantVar.getConstantValue()); shortenAsmName(shortNames, constantVar, allocation); } } diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNSizeOfSimplification.java b/src/main/java/dk/camelot64/kickc/passes/PassNSizeOfSimplification.java index 0ce09d2cd..1464af68e 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNSizeOfSimplification.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNSizeOfSimplification.java @@ -80,9 +80,9 @@ public class PassNSizeOfSimplification extends Pass2SsaOptimization { ConstantRef sizeOfConstantVar = OperatorSizeOf.getSizeOfConstantVar(getScope(), arrayType.getElementType()); programValue.set(new ConstantBinary((ConstantValue) arraySize, Operators.MULTIPLY, sizeOfConstantVar)); modified.set(true); - } else if(constant.getValue() instanceof ConstantArrayList) { + } else if(constant.getConstantValue() instanceof ConstantArrayList) { getLog().append("Resolving array sizeof() " + unary.toString(getProgram())); - int size = ((ConstantArrayList) constant.getValue()).getElements().size(); + int size = ((ConstantArrayList) constant.getConstantValue()).getElements().size(); ConstantRef sizeOfConstantVar = OperatorSizeOf.getSizeOfConstantVar(getScope(), arrayType.getElementType()); programValue.set(new ConstantBinary(new ConstantInteger((long) size), Operators.MULTIPLY, sizeOfConstantVar)); modified.set(true); @@ -90,7 +90,7 @@ public class PassNSizeOfSimplification extends Pass2SsaOptimization { // Try to calculate the literal to check if it is a string ConstantLiteral stringLiteral = null; try { - stringLiteral = constant.getValue().calculateLiteral(getProgram().getScope()); + stringLiteral = constant.getConstantValue().calculateLiteral(getProgram().getScope()); } catch(ConstantNotLiteral e) { // Ignore }