diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java
index 67f7cb47d..c44b5d5b0 100644
--- a/src/main/java/dk/camelot64/kickc/Compiler.java
+++ b/src/main/java/dk/camelot64/kickc/Compiler.java
@@ -240,6 +240,7 @@ public class Compiler {
private void pass3Analysis() {
new Pass3AssertRValues(program).check();
+ new Pass3AssertConstants(program).check();
new Pass3AssertArrayLengths(program).check();
new Pass3AssertNoMulDivMod(program).check();
new Pass3BlockSequencePlanner(program).plan();
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 d176fb1a4..44ec7ccfa 100644
--- a/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValue.java
+++ b/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValue.java
@@ -22,7 +22,7 @@ public abstract class ProgramValue {
public static class ConstantVariableValue extends ProgramValue {
private final ConstantVar constantVar;
- public ConstantVariableValue(ConstantVar constantVar) {
+ ConstantVariableValue(ConstantVar constantVar) {
this.constantVar = constantVar;
}
@@ -42,7 +42,7 @@ public abstract class ProgramValue {
public static class TypeArraySize extends ProgramValue {
private final SymbolTypeArray array;
- public TypeArraySize(SymbolTypeArray array) {
+ TypeArraySize(SymbolTypeArray array) {
this.array = array;
}
@@ -202,6 +202,29 @@ public abstract class ProgramValue {
}
+ /** Location inside inline kickasm code. */
+ public static class KickAsmLocation extends ProgramValue {
+
+ private StatementKickAsm statementKickAsm;
+
+ KickAsmLocation(StatementKickAsm statementKickAsm) {
+ super();
+ this.statementKickAsm = statementKickAsm;
+ }
+
+ @Override
+ public RValue get() {
+ return statementKickAsm.getLocation();
+ }
+
+ @Override
+ public void set(RValue value) {
+ statementKickAsm.setLocation(value);
+ }
+
+ }
+
+
/**
* LValue as part of an assignment statement (or a call).
*/
@@ -276,7 +299,7 @@ public abstract class ProgramValue {
private final dk.camelot64.kickc.model.values.ConstantCastValue castValue;
- public ConstantCastValue(dk.camelot64.kickc.model.values.ConstantCastValue castValue) {
+ ConstantCastValue(dk.camelot64.kickc.model.values.ConstantCastValue castValue) {
this.castValue = castValue;
}
@@ -299,7 +322,7 @@ public abstract class ProgramValue {
private final ConstantVarPointer varPointer;
- public VarPointer(ConstantVarPointer varPointer) {
+ VarPointer(ConstantVarPointer varPointer) {
this.varPointer = varPointer;
}
@@ -319,7 +342,7 @@ public abstract class ProgramValue {
private final ConstantArrayList arrayList;
private final int idx;
- public ConstantArrayElement(ConstantArrayList arrayList, int idx) {
+ ConstantArrayElement(ConstantArrayList arrayList, int idx) {
this.arrayList = arrayList;
this.idx = idx;
}
@@ -339,7 +362,7 @@ public abstract class ProgramValue {
private ValueList list;
private int idx;
- public ListElement(ValueList list, int idx) {
+ ListElement(ValueList list, int idx) {
this.list = list;
this.idx = idx;
}
@@ -418,7 +441,7 @@ public abstract class ProgramValue {
private final StatementCall call;
private final int i;
- public CallParameter(StatementCall call, int i) {
+ CallParameter(StatementCall call, int i) {
this.call = call;
this.i = i;
}
@@ -492,7 +515,7 @@ public abstract class ProgramValue {
private final StatementPhiBlock.PhiVariable phiVariable;
private final int i;
- public PhiValue(StatementPhiBlock.PhiVariable phiVariable, int i) {
+ PhiValue(StatementPhiBlock.PhiVariable phiVariable, int i) {
this.phiVariable = phiVariable;
this.i = i;
}
@@ -545,7 +568,8 @@ public abstract class ProgramValue {
@Override
public void set(RValue value) {
- this.rValue = (ConstantValue) value;
+ this.rValue = value;
}
}
+
}
diff --git a/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValueIterator.java b/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValueIterator.java
index c4e9c65b0..23e804cfb 100644
--- a/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValueIterator.java
+++ b/src/main/java/dk/camelot64/kickc/model/iterator/ProgramValueIterator.java
@@ -119,6 +119,12 @@ public class ProgramValueIterator {
}
execute(new ProgramValue.PhiVariable(phiVariable), handler, statement, statementsIt, block);
}
+ } else if(statement instanceof StatementKickAsm) {
+ StatementKickAsm statementKickAsm = (StatementKickAsm) statement;
+ RValue location = statementKickAsm.getLocation();
+ if(location!=null) {
+ execute(new ProgramValue.KickAsmLocation(statementKickAsm), handler, statement, statementsIt, block);
+ }
}
}
diff --git a/src/main/java/dk/camelot64/kickc/model/statements/StatementKickAsm.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementKickAsm.java
index d6a4e6993..6007d7b6c 100644
--- a/src/main/java/dk/camelot64/kickc/model/statements/StatementKickAsm.java
+++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementKickAsm.java
@@ -1,6 +1,7 @@
package dk.camelot64.kickc.model.statements;
import dk.camelot64.kickc.model.Program;
+import dk.camelot64.kickc.model.values.RValue;
/** Inline KickAssembler code */
public class StatementKickAsm extends StatementBase {
@@ -9,31 +10,37 @@ public class StatementKickAsm extends StatementBase {
private String kickAsmCode;
/** The absolute address to generate the kick-assembler code at. If null it is generated inline. */
- private Long location;
+ private RValue location;
public StatementKickAsm(String kickAsmCode, StatementSource source) {
super(null, source);
this.kickAsmCode = kickAsmCode;
}
- public StatementKickAsm(String kickAsmCode, Long location, StatementSource source) {
+ public StatementKickAsm(String kickAsmCode, RValue location, StatementSource source) {
super(null, source);
this.kickAsmCode = kickAsmCode;
this.location = location;
}
- public Long getLocation() {
+ public RValue getLocation() {
return location;
}
- public void setLocation(Long location) {
+ public void setLocation(RValue location) {
this.location = location;
}
@Override
public String toString(Program program, boolean aliveInfo) {
StringBuilder txt = new StringBuilder();
- txt.append("kickasm {{ ");
+ txt.append("kickasm");
+ if(location!=null) {
+ txt.append("(location ");
+ txt.append(location.toString(program));
+ txt.append(")");
+ }
+ txt.append(" {{ ");
txt.append(kickAsmCode);
txt.append(" }}");
return txt.toString();
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickC.g4 b/src/main/java/dk/camelot64/kickc/parser/KickC.g4
index ca1faa364..5f567cae6 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickC.g4
+++ b/src/main/java/dk/camelot64/kickc/parser/KickC.g4
@@ -36,28 +36,20 @@ declFunction
;
declKasm
- : 'kickasm' kasmParams? KICKASM
+ : 'kickasm' kasmDirectives? KICKASM
;
-kasmParams
- : '(' kasmParam ( ';' kasmParam )* ')'
+kasmDirectives
+ : '(' kasmDirective ( ',' kasmDirective )* ')'
;
-kasmParam
- : 'resources' kasmResourceList #kasmParamResources
- | 'clobber' STRING #kasmParamClobber
- | 'param' kasmParamList #kasmParamTransfer
- | 'bytes' NUMBER #kasmParamBytes
- | 'cycles' NUMBER #kasmParamCycles
- | 'location' ( 'inline' | NUMBER ) #kasmParamLocation
- ;
-
-kasmResourceList
- : STRING ( ',' STRING )*
- ;
-
-kasmParamList
- : NAME ':' expr ( ',' NAME ':' expr )*
+kasmDirective
+ : 'resource' STRING #kasmDirectiveResource
+ | 'clobber' STRING #kasmDirectiveClobber
+ | 'param' NAME ':' expr #kasmDirectiveTransfer
+ | 'bytes' NUMBER #kasmDirectiveBytes
+ | 'cycles' NUMBER #kasmDirectiveCycles
+ | 'location' ( 'inline' | expr ) #kasmDirectiveLocation
;
parameterListDecl
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickC.tokens b/src/main/java/dk/camelot64/kickc/parser/KickC.tokens
index 2b802db5b..ce21ae408 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickC.tokens
+++ b/src/main/java/dk/camelot64/kickc/parser/KickC.tokens
@@ -92,15 +92,15 @@ COMMENT_BLOCK=86
'{'=6
'}'=7
'kickasm'=8
-'resources'=9
-'clobber'=10
-'param'=11
-'bytes'=12
-'cycles'=13
-'location'=14
-'inline'=15
-','=16
-':'=17
+','=9
+'resource'=10
+'clobber'=11
+'param'=12
+':'=13
+'bytes'=14
+'cycles'=15
+'location'=16
+'inline'=17
'const'=18
'extern'=19
'align'=20
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java
index dc06798a4..a3d0de278 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java
@@ -124,109 +124,85 @@ public class KickCBaseListener implements KickCListener {
*
*
The default implementation does nothing.
*/
- @Override public void enterKasmParams(KickCParser.KasmParamsContext ctx) { }
+ @Override public void enterKasmDirectives(KickCParser.KasmDirectivesContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitKasmParams(KickCParser.KasmParamsContext ctx) { }
+ @Override public void exitKasmDirectives(KickCParser.KasmDirectivesContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void enterKasmParamResources(KickCParser.KasmParamResourcesContext ctx) { }
+ @Override public void enterKasmDirectiveResource(KickCParser.KasmDirectiveResourceContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitKasmParamResources(KickCParser.KasmParamResourcesContext ctx) { }
+ @Override public void exitKasmDirectiveResource(KickCParser.KasmDirectiveResourceContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void enterKasmParamClobber(KickCParser.KasmParamClobberContext ctx) { }
+ @Override public void enterKasmDirectiveClobber(KickCParser.KasmDirectiveClobberContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitKasmParamClobber(KickCParser.KasmParamClobberContext ctx) { }
+ @Override public void exitKasmDirectiveClobber(KickCParser.KasmDirectiveClobberContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void enterKasmParamTransfer(KickCParser.KasmParamTransferContext ctx) { }
+ @Override public void enterKasmDirectiveTransfer(KickCParser.KasmDirectiveTransferContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitKasmParamTransfer(KickCParser.KasmParamTransferContext ctx) { }
+ @Override public void exitKasmDirectiveTransfer(KickCParser.KasmDirectiveTransferContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void enterKasmParamBytes(KickCParser.KasmParamBytesContext ctx) { }
+ @Override public void enterKasmDirectiveBytes(KickCParser.KasmDirectiveBytesContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitKasmParamBytes(KickCParser.KasmParamBytesContext ctx) { }
+ @Override public void exitKasmDirectiveBytes(KickCParser.KasmDirectiveBytesContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void enterKasmParamCycles(KickCParser.KasmParamCyclesContext ctx) { }
+ @Override public void enterKasmDirectiveCycles(KickCParser.KasmDirectiveCyclesContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitKasmParamCycles(KickCParser.KasmParamCyclesContext ctx) { }
+ @Override public void exitKasmDirectiveCycles(KickCParser.KasmDirectiveCyclesContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void enterKasmParamLocation(KickCParser.KasmParamLocationContext ctx) { }
+ @Override public void enterKasmDirectiveLocation(KickCParser.KasmDirectiveLocationContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitKasmParamLocation(KickCParser.KasmParamLocationContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterKasmResourceList(KickCParser.KasmResourceListContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitKasmResourceList(KickCParser.KasmResourceListContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterKasmParamList(KickCParser.KasmParamListContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitKasmParamList(KickCParser.KasmParamListContext ctx) { }
+ @Override public void exitKasmDirectiveLocation(KickCParser.KasmDirectiveLocationContext ctx) { }
/**
* {@inheritDoc}
*
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java
index 760b2299e..a16db8f29 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java
@@ -80,63 +80,49 @@ public class KickCBaseVisitor extends AbstractParseTreeVisitor implements
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitKasmParams(KickCParser.KasmParamsContext ctx) { return visitChildren(ctx); }
+ @Override public T visitKasmDirectives(KickCParser.KasmDirectivesContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitKasmParamResources(KickCParser.KasmParamResourcesContext ctx) { return visitChildren(ctx); }
+ @Override public T visitKasmDirectiveResource(KickCParser.KasmDirectiveResourceContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitKasmParamClobber(KickCParser.KasmParamClobberContext ctx) { return visitChildren(ctx); }
+ @Override public T visitKasmDirectiveClobber(KickCParser.KasmDirectiveClobberContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitKasmParamTransfer(KickCParser.KasmParamTransferContext ctx) { return visitChildren(ctx); }
+ @Override public T visitKasmDirectiveTransfer(KickCParser.KasmDirectiveTransferContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitKasmParamBytes(KickCParser.KasmParamBytesContext ctx) { return visitChildren(ctx); }
+ @Override public T visitKasmDirectiveBytes(KickCParser.KasmDirectiveBytesContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitKasmParamCycles(KickCParser.KasmParamCyclesContext ctx) { return visitChildren(ctx); }
+ @Override public T visitKasmDirectiveCycles(KickCParser.KasmDirectiveCyclesContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitKasmParamLocation(KickCParser.KasmParamLocationContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitKasmResourceList(KickCParser.KasmResourceListContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitKasmParamList(KickCParser.KasmParamListContext ctx) { return visitChildren(ctx); }
+ @Override public T visitKasmDirectiveLocation(KickCParser.KasmDirectiveLocationContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java
index 6b581b296..af6d91370 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java
@@ -55,8 +55,8 @@ public class KickCLexer extends Lexer {
private static final String[] _LITERAL_NAMES = {
null, "'import'", "'='", "';'", "'('", "')'", "'{'", "'}'", "'kickasm'",
- "'resources'", "'clobber'", "'param'", "'bytes'", "'cycles'", "'location'",
- "'inline'", "','", "':'", "'const'", "'extern'", "'align'", "'register'",
+ "','", "'resource'", "'clobber'", "'param'", "':'", "'bytes'", "'cycles'",
+ "'location'", "'inline'", "'const'", "'extern'", "'align'", "'register'",
"'if'", "'else'", "'while'", "'do'", "'for'", "'return'", "'asm'", "'..'",
"'signed'", "'*'", "'['", "']'", "'--'", "'++'", "'+'", "'-'", "'!'",
"'&'", "'~'", "'>>'", "'<<'", "'/'", "'%'", "'<'", "'>'", "'=='", "'!='",
@@ -132,7 +132,7 @@ public class KickCLexer extends Lexer {
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2X\u0373\b\1\4\2\t"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2X\u0372\b\1\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"+
@@ -144,10 +144,10 @@ public class KickCLexer extends Lexer {
"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
"\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\3\2\3\2\3\2\3\2\3\2"+
"\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\t\3"+
- "\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3"+
- "\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3"+
- "\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17"+
- "\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\22\3\22"+
+ "\t\3\t\3\t\3\t\3\t\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13"+
+ "\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\17"+
+ "\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21"+
+ "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22"+
"\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25"+
"\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26"+
"\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31"+
@@ -167,21 +167,21 @@ public class KickCLexer extends Lexer {
"D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3"+
"D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3"+
"D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3"+
- "D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\5D\u0294\nD\3E\3E\3E\3E\7E\u029a"+
- "\nE\fE\16E\u029d\13E\3E\3E\3E\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3"+
- "F\3F\3F\3F\3F\3F\3F\3F\5F\u02b7\nF\3G\3G\3G\3G\7G\u02bd\nG\fG\16G\u02c0"+
- "\13G\3G\3G\3H\3H\3H\3H\5H\u02c8\nH\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\5"+
- "I\u02d5\nI\3J\3J\5J\u02d9\nJ\3K\3K\3K\5K\u02de\nK\3L\3L\3L\3L\3L\5L\u02e5"+
- "\nL\3L\7L\u02e8\nL\fL\16L\u02eb\13L\3L\3L\6L\u02ef\nL\rL\16L\u02f0\3M"+
- "\7M\u02f4\nM\fM\16M\u02f7\13M\3M\3M\6M\u02fb\nM\rM\16M\u02fc\3N\3N\3N"+
- "\3N\3N\5N\u0304\nN\3N\7N\u0307\nN\fN\16N\u030a\13N\3N\3N\6N\u030e\nN\r"+
- "N\16N\u030f\3O\3O\3O\5O\u0315\nO\3P\3P\3P\6P\u031a\nP\rP\16P\u031b\3P"+
- "\3P\6P\u0320\nP\rP\16P\u0321\5P\u0324\nP\3Q\6Q\u0327\nQ\rQ\16Q\u0328\3"+
- "R\3R\3R\3R\3R\5R\u0330\nR\3R\6R\u0333\nR\rR\16R\u0334\3S\3S\3T\3T\3U\3"+
- "U\3V\3V\7V\u033f\nV\fV\16V\u0342\13V\3W\3W\3X\3X\3Y\3Y\7Y\u034a\nY\fY"+
- "\16Y\u034d\13Y\3Y\6Y\u0350\nY\rY\16Y\u0351\3Z\6Z\u0355\nZ\rZ\16Z\u0356"+
- "\3Z\3Z\3[\3[\3[\3[\7[\u035f\n[\f[\16[\u0362\13[\3[\3[\3\\\3\\\3\\\3\\"+
- "\7\\\u036a\n\\\f\\\16\\\u036d\13\\\3\\\3\\\3\\\3\\\3\\\4\u029b\u036b\2"+
+ "D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\5D\u0293\nD\3E\3E\3E\3E\7E\u0299"+
+ "\nE\fE\16E\u029c\13E\3E\3E\3E\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3"+
+ "F\3F\3F\3F\3F\3F\3F\3F\5F\u02b6\nF\3G\3G\3G\3G\7G\u02bc\nG\fG\16G\u02bf"+
+ "\13G\3G\3G\3H\3H\3H\3H\5H\u02c7\nH\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\5"+
+ "I\u02d4\nI\3J\3J\5J\u02d8\nJ\3K\3K\3K\5K\u02dd\nK\3L\3L\3L\3L\3L\5L\u02e4"+
+ "\nL\3L\7L\u02e7\nL\fL\16L\u02ea\13L\3L\3L\6L\u02ee\nL\rL\16L\u02ef\3M"+
+ "\7M\u02f3\nM\fM\16M\u02f6\13M\3M\3M\6M\u02fa\nM\rM\16M\u02fb\3N\3N\3N"+
+ "\3N\3N\5N\u0303\nN\3N\7N\u0306\nN\fN\16N\u0309\13N\3N\3N\6N\u030d\nN\r"+
+ "N\16N\u030e\3O\3O\3O\5O\u0314\nO\3P\3P\3P\6P\u0319\nP\rP\16P\u031a\3P"+
+ "\3P\6P\u031f\nP\rP\16P\u0320\5P\u0323\nP\3Q\6Q\u0326\nQ\rQ\16Q\u0327\3"+
+ "R\3R\3R\3R\3R\5R\u032f\nR\3R\6R\u0332\nR\rR\16R\u0333\3S\3S\3T\3T\3U\3"+
+ "U\3V\3V\7V\u033e\nV\fV\16V\u0341\13V\3W\3W\3X\3X\3Y\3Y\7Y\u0349\nY\fY"+
+ "\16Y\u034c\13Y\3Y\6Y\u034f\nY\rY\16Y\u0350\3Z\6Z\u0354\nZ\rZ\16Z\u0355"+
+ "\3Z\3Z\3[\3[\3[\3[\7[\u035e\n[\f[\16[\u0361\13[\3[\3[\3\\\3\\\3\\\3\\"+
+ "\7\\\u0369\n\\\f\\\16\\\u036c\13\\\3\\\3\\\3\\\3\\\3\\\4\u029a\u036a\2"+
"]\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20"+
"\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37"+
"= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o"+
@@ -190,7 +190,7 @@ public class KickCLexer extends Lexer {
"R\u00a3S\u00a5\2\u00a7\2\u00a9\2\u00abT\u00ad\2\u00af\2\u00b1U\u00b3V"+
"\u00b5W\u00b7X\3\2\r\3\2$$\3\2))\4\2DDdd\3\2\62\63\3\2\62;\5\2\62;CHc"+
"h\5\2C\\aac|\6\2\62;C\\aac|\4\2--//\5\2\13\f\17\17\"\"\4\2\f\f\17\17\2"+
- "\u03db\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2"+
+ "\u03da\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2"+
"\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3"+
"\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2"+
"\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2"+
@@ -207,27 +207,27 @@ public class KickCLexer extends Lexer {
"\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2\2\2\u00ab\3\2\2\2\2\u00b1"+
"\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\3\u00b9\3\2\2"+
"\2\5\u00c0\3\2\2\2\7\u00c2\3\2\2\2\t\u00c4\3\2\2\2\13\u00c6\3\2\2\2\r"+
- "\u00c8\3\2\2\2\17\u00ca\3\2\2\2\21\u00cc\3\2\2\2\23\u00d4\3\2\2\2\25\u00de"+
- "\3\2\2\2\27\u00e6\3\2\2\2\31\u00ec\3\2\2\2\33\u00f2\3\2\2\2\35\u00f9\3"+
- "\2\2\2\37\u0102\3\2\2\2!\u0109\3\2\2\2#\u010b\3\2\2\2%\u010d\3\2\2\2\'"+
- "\u0113\3\2\2\2)\u011a\3\2\2\2+\u0120\3\2\2\2-\u0129\3\2\2\2/\u012c\3\2"+
- "\2\2\61\u0131\3\2\2\2\63\u0137\3\2\2\2\65\u013a\3\2\2\2\67\u013e\3\2\2"+
- "\29\u0145\3\2\2\2;\u0149\3\2\2\2=\u014c\3\2\2\2?\u0153\3\2\2\2A\u0155"+
- "\3\2\2\2C\u0157\3\2\2\2E\u0159\3\2\2\2G\u015c\3\2\2\2I\u015f\3\2\2\2K"+
- "\u0161\3\2\2\2M\u0163\3\2\2\2O\u0165\3\2\2\2Q\u0167\3\2\2\2S\u0169\3\2"+
- "\2\2U\u016c\3\2\2\2W\u016f\3\2\2\2Y\u0171\3\2\2\2[\u0173\3\2\2\2]\u0175"+
- "\3\2\2\2_\u0177\3\2\2\2a\u017a\3\2\2\2c\u017d\3\2\2\2e\u0180\3\2\2\2g"+
- "\u0183\3\2\2\2i\u0185\3\2\2\2k\u0187\3\2\2\2m\u018a\3\2\2\2o\u018d\3\2"+
- "\2\2q\u0190\3\2\2\2s\u0193\3\2\2\2u\u0196\3\2\2\2w\u0199\3\2\2\2y\u019c"+
- "\3\2\2\2{\u01a0\3\2\2\2}\u01a4\3\2\2\2\177\u01a7\3\2\2\2\u0081\u01aa\3"+
- "\2\2\2\u0083\u01ad\3\2\2\2\u0085\u01b3\3\2\2\2\u0087\u0293\3\2\2\2\u0089"+
- "\u0295\3\2\2\2\u008b\u02b6\3\2\2\2\u008d\u02b8\3\2\2\2\u008f\u02c3\3\2"+
- "\2\2\u0091\u02d4\3\2\2\2\u0093\u02d8\3\2\2\2\u0095\u02dd\3\2\2\2\u0097"+
- "\u02e4\3\2\2\2\u0099\u02f5\3\2\2\2\u009b\u0303\3\2\2\2\u009d\u0314\3\2"+
- "\2\2\u009f\u0323\3\2\2\2\u00a1\u0326\3\2\2\2\u00a3\u032f\3\2\2\2\u00a5"+
- "\u0336\3\2\2\2\u00a7\u0338\3\2\2\2\u00a9\u033a\3\2\2\2\u00ab\u033c\3\2"+
- "\2\2\u00ad\u0343\3\2\2\2\u00af\u0345\3\2\2\2\u00b1\u0347\3\2\2\2\u00b3"+
- "\u0354\3\2\2\2\u00b5\u035a\3\2\2\2\u00b7\u0365\3\2\2\2\u00b9\u00ba\7k"+
+ "\u00c8\3\2\2\2\17\u00ca\3\2\2\2\21\u00cc\3\2\2\2\23\u00d4\3\2\2\2\25\u00d6"+
+ "\3\2\2\2\27\u00df\3\2\2\2\31\u00e7\3\2\2\2\33\u00ed\3\2\2\2\35\u00ef\3"+
+ "\2\2\2\37\u00f5\3\2\2\2!\u00fc\3\2\2\2#\u0105\3\2\2\2%\u010c\3\2\2\2\'"+
+ "\u0112\3\2\2\2)\u0119\3\2\2\2+\u011f\3\2\2\2-\u0128\3\2\2\2/\u012b\3\2"+
+ "\2\2\61\u0130\3\2\2\2\63\u0136\3\2\2\2\65\u0139\3\2\2\2\67\u013d\3\2\2"+
+ "\29\u0144\3\2\2\2;\u0148\3\2\2\2=\u014b\3\2\2\2?\u0152\3\2\2\2A\u0154"+
+ "\3\2\2\2C\u0156\3\2\2\2E\u0158\3\2\2\2G\u015b\3\2\2\2I\u015e\3\2\2\2K"+
+ "\u0160\3\2\2\2M\u0162\3\2\2\2O\u0164\3\2\2\2Q\u0166\3\2\2\2S\u0168\3\2"+
+ "\2\2U\u016b\3\2\2\2W\u016e\3\2\2\2Y\u0170\3\2\2\2[\u0172\3\2\2\2]\u0174"+
+ "\3\2\2\2_\u0176\3\2\2\2a\u0179\3\2\2\2c\u017c\3\2\2\2e\u017f\3\2\2\2g"+
+ "\u0182\3\2\2\2i\u0184\3\2\2\2k\u0186\3\2\2\2m\u0189\3\2\2\2o\u018c\3\2"+
+ "\2\2q\u018f\3\2\2\2s\u0192\3\2\2\2u\u0195\3\2\2\2w\u0198\3\2\2\2y\u019b"+
+ "\3\2\2\2{\u019f\3\2\2\2}\u01a3\3\2\2\2\177\u01a6\3\2\2\2\u0081\u01a9\3"+
+ "\2\2\2\u0083\u01ac\3\2\2\2\u0085\u01b2\3\2\2\2\u0087\u0292\3\2\2\2\u0089"+
+ "\u0294\3\2\2\2\u008b\u02b5\3\2\2\2\u008d\u02b7\3\2\2\2\u008f\u02c2\3\2"+
+ "\2\2\u0091\u02d3\3\2\2\2\u0093\u02d7\3\2\2\2\u0095\u02dc\3\2\2\2\u0097"+
+ "\u02e3\3\2\2\2\u0099\u02f4\3\2\2\2\u009b\u0302\3\2\2\2\u009d\u0313\3\2"+
+ "\2\2\u009f\u0322\3\2\2\2\u00a1\u0325\3\2\2\2\u00a3\u032e\3\2\2\2\u00a5"+
+ "\u0335\3\2\2\2\u00a7\u0337\3\2\2\2\u00a9\u0339\3\2\2\2\u00ab\u033b\3\2"+
+ "\2\2\u00ad\u0342\3\2\2\2\u00af\u0344\3\2\2\2\u00b1\u0346\3\2\2\2\u00b3"+
+ "\u0353\3\2\2\2\u00b5\u0359\3\2\2\2\u00b7\u0364\3\2\2\2\u00b9\u00ba\7k"+
"\2\2\u00ba\u00bb\7o\2\2\u00bb\u00bc\7r\2\2\u00bc\u00bd\7q\2\2\u00bd\u00be"+
"\7t\2\2\u00be\u00bf\7v\2\2\u00bf\4\3\2\2\2\u00c0\u00c1\7?\2\2\u00c1\6"+
"\3\2\2\2\u00c2\u00c3\7=\2\2\u00c3\b\3\2\2\2\u00c4\u00c5\7*\2\2\u00c5\n"+
@@ -235,222 +235,222 @@ public class KickCLexer extends Lexer {
"\3\2\2\2\u00ca\u00cb\7\177\2\2\u00cb\20\3\2\2\2\u00cc\u00cd\7m\2\2\u00cd"+
"\u00ce\7k\2\2\u00ce\u00cf\7e\2\2\u00cf\u00d0\7m\2\2\u00d0\u00d1\7c\2\2"+
"\u00d1\u00d2\7u\2\2\u00d2\u00d3\7o\2\2\u00d3\22\3\2\2\2\u00d4\u00d5\7"+
- "t\2\2\u00d5\u00d6\7g\2\2\u00d6\u00d7\7u\2\2\u00d7\u00d8\7q\2\2\u00d8\u00d9"+
- "\7w\2\2\u00d9\u00da\7t\2\2\u00da\u00db\7e\2\2\u00db\u00dc\7g\2\2\u00dc"+
- "\u00dd\7u\2\2\u00dd\24\3\2\2\2\u00de\u00df\7e\2\2\u00df\u00e0\7n\2\2\u00e0"+
- "\u00e1\7q\2\2\u00e1\u00e2\7d\2\2\u00e2\u00e3\7d\2\2\u00e3\u00e4\7g\2\2"+
- "\u00e4\u00e5\7t\2\2\u00e5\26\3\2\2\2\u00e6\u00e7\7r\2\2\u00e7\u00e8\7"+
- "c\2\2\u00e8\u00e9\7t\2\2\u00e9\u00ea\7c\2\2\u00ea\u00eb\7o\2\2\u00eb\30"+
- "\3\2\2\2\u00ec\u00ed\7d\2\2\u00ed\u00ee\7{\2\2\u00ee\u00ef\7v\2\2\u00ef"+
- "\u00f0\7g\2\2\u00f0\u00f1\7u\2\2\u00f1\32\3\2\2\2\u00f2\u00f3\7e\2\2\u00f3"+
- "\u00f4\7{\2\2\u00f4\u00f5\7e\2\2\u00f5\u00f6\7n\2\2\u00f6\u00f7\7g\2\2"+
- "\u00f7\u00f8\7u\2\2\u00f8\34\3\2\2\2\u00f9\u00fa\7n\2\2\u00fa\u00fb\7"+
- "q\2\2\u00fb\u00fc\7e\2\2\u00fc\u00fd\7c\2\2\u00fd\u00fe\7v\2\2\u00fe\u00ff"+
- "\7k\2\2\u00ff\u0100\7q\2\2\u0100\u0101\7p\2\2\u0101\36\3\2\2\2\u0102\u0103"+
- "\7k\2\2\u0103\u0104\7p\2\2\u0104\u0105\7n\2\2\u0105\u0106\7k\2\2\u0106"+
- "\u0107\7p\2\2\u0107\u0108\7g\2\2\u0108 \3\2\2\2\u0109\u010a\7.\2\2\u010a"+
- "\"\3\2\2\2\u010b\u010c\7<\2\2\u010c$\3\2\2\2\u010d\u010e\7e\2\2\u010e"+
- "\u010f\7q\2\2\u010f\u0110\7p\2\2\u0110\u0111\7u\2\2\u0111\u0112\7v\2\2"+
- "\u0112&\3\2\2\2\u0113\u0114\7g\2\2\u0114\u0115\7z\2\2\u0115\u0116\7v\2"+
- "\2\u0116\u0117\7g\2\2\u0117\u0118\7t\2\2\u0118\u0119\7p\2\2\u0119(\3\2"+
- "\2\2\u011a\u011b\7c\2\2\u011b\u011c\7n\2\2\u011c\u011d\7k\2\2\u011d\u011e"+
- "\7i\2\2\u011e\u011f\7p\2\2\u011f*\3\2\2\2\u0120\u0121\7t\2\2\u0121\u0122"+
- "\7g\2\2\u0122\u0123\7i\2\2\u0123\u0124\7k\2\2\u0124\u0125\7u\2\2\u0125"+
- "\u0126\7v\2\2\u0126\u0127\7g\2\2\u0127\u0128\7t\2\2\u0128,\3\2\2\2\u0129"+
- "\u012a\7k\2\2\u012a\u012b\7h\2\2\u012b.\3\2\2\2\u012c\u012d\7g\2\2\u012d"+
- "\u012e\7n\2\2\u012e\u012f\7u\2\2\u012f\u0130\7g\2\2\u0130\60\3\2\2\2\u0131"+
- "\u0132\7y\2\2\u0132\u0133\7j\2\2\u0133\u0134\7k\2\2\u0134\u0135\7n\2\2"+
- "\u0135\u0136\7g\2\2\u0136\62\3\2\2\2\u0137\u0138\7f\2\2\u0138\u0139\7"+
- "q\2\2\u0139\64\3\2\2\2\u013a\u013b\7h\2\2\u013b\u013c\7q\2\2\u013c\u013d"+
- "\7t\2\2\u013d\66\3\2\2\2\u013e\u013f\7t\2\2\u013f\u0140\7g\2\2\u0140\u0141"+
- "\7v\2\2\u0141\u0142\7w\2\2\u0142\u0143\7t\2\2\u0143\u0144\7p\2\2\u0144"+
- "8\3\2\2\2\u0145\u0146\7c\2\2\u0146\u0147\7u\2\2\u0147\u0148\7o\2\2\u0148"+
- ":\3\2\2\2\u0149\u014a\7\60\2\2\u014a\u014b\7\60\2\2\u014b<\3\2\2\2\u014c"+
- "\u014d\7u\2\2\u014d\u014e\7k\2\2\u014e\u014f\7i\2\2\u014f\u0150\7p\2\2"+
- "\u0150\u0151\7g\2\2\u0151\u0152\7f\2\2\u0152>\3\2\2\2\u0153\u0154\7,\2"+
- "\2\u0154@\3\2\2\2\u0155\u0156\7]\2\2\u0156B\3\2\2\2\u0157\u0158\7_\2\2"+
- "\u0158D\3\2\2\2\u0159\u015a\7/\2\2\u015a\u015b\7/\2\2\u015bF\3\2\2\2\u015c"+
- "\u015d\7-\2\2\u015d\u015e\7-\2\2\u015eH\3\2\2\2\u015f\u0160\7-\2\2\u0160"+
- "J\3\2\2\2\u0161\u0162\7/\2\2\u0162L\3\2\2\2\u0163\u0164\7#\2\2\u0164N"+
- "\3\2\2\2\u0165\u0166\7(\2\2\u0166P\3\2\2\2\u0167\u0168\7\u0080\2\2\u0168"+
- "R\3\2\2\2\u0169\u016a\7@\2\2\u016a\u016b\7@\2\2\u016bT\3\2\2\2\u016c\u016d"+
- "\7>\2\2\u016d\u016e\7>\2\2\u016eV\3\2\2\2\u016f\u0170\7\61\2\2\u0170X"+
- "\3\2\2\2\u0171\u0172\7\'\2\2\u0172Z\3\2\2\2\u0173\u0174\7>\2\2\u0174\\"+
- "\3\2\2\2\u0175\u0176\7@\2\2\u0176^\3\2\2\2\u0177\u0178\7?\2\2\u0178\u0179"+
- "\7?\2\2\u0179`\3\2\2\2\u017a\u017b\7#\2\2\u017b\u017c\7?\2\2\u017cb\3"+
- "\2\2\2\u017d\u017e\7>\2\2\u017e\u017f\7?\2\2\u017fd\3\2\2\2\u0180\u0181"+
- "\7@\2\2\u0181\u0182\7?\2\2\u0182f\3\2\2\2\u0183\u0184\7`\2\2\u0184h\3"+
- "\2\2\2\u0185\u0186\7~\2\2\u0186j\3\2\2\2\u0187\u0188\7(\2\2\u0188\u0189"+
- "\7(\2\2\u0189l\3\2\2\2\u018a\u018b\7~\2\2\u018b\u018c\7~\2\2\u018cn\3"+
- "\2\2\2\u018d\u018e\7-\2\2\u018e\u018f\7?\2\2\u018fp\3\2\2\2\u0190\u0191"+
- "\7/\2\2\u0191\u0192\7?\2\2\u0192r\3\2\2\2\u0193\u0194\7,\2\2\u0194\u0195"+
- "\7?\2\2\u0195t\3\2\2\2\u0196\u0197\7\61\2\2\u0197\u0198\7?\2\2\u0198v"+
- "\3\2\2\2\u0199\u019a\7\'\2\2\u019a\u019b\7?\2\2\u019bx\3\2\2\2\u019c\u019d"+
- "\7>\2\2\u019d\u019e\7>\2\2\u019e\u019f\7?\2\2\u019fz\3\2\2\2\u01a0\u01a1"+
- "\7@\2\2\u01a1\u01a2\7@\2\2\u01a2\u01a3\7?\2\2\u01a3|\3\2\2\2\u01a4\u01a5"+
- "\7(\2\2\u01a5\u01a6\7?\2\2\u01a6~\3\2\2\2\u01a7\u01a8\7~\2\2\u01a8\u01a9"+
- "\7?\2\2\u01a9\u0080\3\2\2\2\u01aa\u01ab\7`\2\2\u01ab\u01ac\7?\2\2\u01ac"+
- "\u0082\3\2\2\2\u01ad\u01ae\7\60\2\2\u01ae\u01af\7d\2\2\u01af\u01b0\7{"+
- "\2\2\u01b0\u01b1\7v\2\2\u01b1\u01b2\7g\2\2\u01b2\u0084\3\2\2\2\u01b3\u01b4"+
- "\7%\2\2\u01b4\u0086\3\2\2\2\u01b5\u01b6\7d\2\2\u01b6\u01b7\7t\2\2\u01b7"+
- "\u0294\7m\2\2\u01b8\u01b9\7q\2\2\u01b9\u01ba\7t\2\2\u01ba\u0294\7c\2\2"+
- "\u01bb\u01bc\7m\2\2\u01bc\u01bd\7k\2\2\u01bd\u0294\7n\2\2\u01be\u01bf"+
- "\7u\2\2\u01bf\u01c0\7n\2\2\u01c0\u0294\7q\2\2\u01c1\u01c2\7p\2\2\u01c2"+
- "\u01c3\7q\2\2\u01c3\u0294\7r\2\2\u01c4\u01c5\7c\2\2\u01c5\u01c6\7u\2\2"+
- "\u01c6\u0294\7n\2\2\u01c7\u01c8\7r\2\2\u01c8\u01c9\7j\2\2\u01c9\u0294"+
- "\7r\2\2\u01ca\u01cb\7c\2\2\u01cb\u01cc\7p\2\2\u01cc\u0294\7e\2\2\u01cd"+
- "\u01ce\7d\2\2\u01ce\u01cf\7r\2\2\u01cf\u0294\7n\2\2\u01d0\u01d1\7e\2\2"+
- "\u01d1\u01d2\7n\2\2\u01d2\u0294\7e\2\2\u01d3\u01d4\7l\2\2\u01d4\u01d5"+
- "\7u\2\2\u01d5\u0294\7t\2\2\u01d6\u01d7\7c\2\2\u01d7\u01d8\7p\2\2\u01d8"+
- "\u0294\7f\2\2\u01d9\u01da\7t\2\2\u01da\u01db\7n\2\2\u01db\u0294\7c\2\2"+
- "\u01dc\u01dd\7d\2\2\u01dd\u01de\7k\2\2\u01de\u0294\7v\2\2\u01df\u01e0"+
- "\7t\2\2\u01e0\u01e1\7q\2\2\u01e1\u0294\7n\2\2\u01e2\u01e3\7r\2\2\u01e3"+
- "\u01e4\7n\2\2\u01e4\u0294\7c\2\2\u01e5\u01e6\7r\2\2\u01e6\u01e7\7n\2\2"+
- "\u01e7\u0294\7r\2\2\u01e8\u01e9\7d\2\2\u01e9\u01ea\7o\2\2\u01ea\u0294"+
- "\7k\2\2\u01eb\u01ec\7u\2\2\u01ec\u01ed\7g\2\2\u01ed\u0294\7e\2\2\u01ee"+
- "\u01ef\7t\2\2\u01ef\u01f0\7v\2\2\u01f0\u0294\7k\2\2\u01f1\u01f2\7g\2\2"+
- "\u01f2\u01f3\7q\2\2\u01f3\u0294\7t\2\2\u01f4\u01f5\7u\2\2\u01f5\u01f6"+
- "\7t\2\2\u01f6\u0294\7g\2\2\u01f7\u01f8\7n\2\2\u01f8\u01f9\7u\2\2\u01f9"+
- "\u0294\7t\2\2\u01fa\u01fb\7r\2\2\u01fb\u01fc\7j\2\2\u01fc\u0294\7c\2\2"+
- "\u01fd\u01fe\7c\2\2\u01fe\u01ff\7n\2\2\u01ff\u0294\7t\2\2\u0200\u0201"+
- "\7l\2\2\u0201\u0202\7o\2\2\u0202\u0294\7r\2\2\u0203\u0204\7d\2\2\u0204"+
- "\u0205\7x\2\2\u0205\u0294\7e\2\2\u0206\u0207\7e\2\2\u0207\u0208\7n\2\2"+
- "\u0208\u0294\7k\2\2\u0209\u020a\7t\2\2\u020a\u020b\7v\2\2\u020b\u0294"+
- "\7u\2\2\u020c\u020d\7c\2\2\u020d\u020e\7f\2\2\u020e\u0294\7e\2\2\u020f"+
- "\u0210\7t\2\2\u0210\u0211\7t\2\2\u0211\u0294\7c\2\2\u0212\u0213\7d\2\2"+
- "\u0213\u0214\7x\2\2\u0214\u0294\7u\2\2\u0215\u0216\7u\2\2\u0216\u0217"+
- "\7g\2\2\u0217\u0294\7k\2\2\u0218\u0219\7u\2\2\u0219\u021a\7c\2\2\u021a"+
- "\u0294\7z\2\2\u021b\u021c\7u\2\2\u021c\u021d\7v\2\2\u021d\u0294\7{\2\2"+
- "\u021e\u021f\7u\2\2\u021f\u0220\7v\2\2\u0220\u0294\7c\2\2\u0221\u0222"+
- "\7u\2\2\u0222\u0223\7v\2\2\u0223\u0294\7z\2\2\u0224\u0225\7f\2\2\u0225"+
- "\u0226\7g\2\2\u0226\u0294\7{\2\2\u0227\u0228\7v\2\2\u0228\u0229\7z\2\2"+
- "\u0229\u0294\7c\2\2\u022a\u022b\7z\2\2\u022b\u022c\7c\2\2\u022c\u0294"+
- "\7c\2\2\u022d\u022e\7d\2\2\u022e\u022f\7e\2\2\u022f\u0294\7e\2\2\u0230"+
- "\u0231\7c\2\2\u0231\u0232\7j\2\2\u0232\u0294\7z\2\2\u0233\u0234\7v\2\2"+
- "\u0234\u0235\7{\2\2\u0235\u0294\7c\2\2\u0236\u0237\7v\2\2\u0237\u0238"+
- "\7z\2\2\u0238\u0294\7u\2\2\u0239\u023a\7v\2\2\u023a\u023b\7c\2\2\u023b"+
- "\u0294\7u\2\2\u023c\u023d\7u\2\2\u023d\u023e\7j\2\2\u023e\u0294\7{\2\2"+
- "\u023f\u0240\7u\2\2\u0240\u0241\7j\2\2\u0241\u0294\7z\2\2\u0242\u0243"+
- "\7n\2\2\u0243\u0244\7f\2\2\u0244\u0294\7{\2\2\u0245\u0246\7n\2\2\u0246"+
- "\u0247\7f\2\2\u0247\u0294\7c\2\2\u0248\u0249\7n\2\2\u0249\u024a\7f\2\2"+
- "\u024a\u0294\7z\2\2\u024b\u024c\7n\2\2\u024c\u024d\7c\2\2\u024d\u0294"+
- "\7z\2\2\u024e\u024f\7v\2\2\u024f\u0250\7c\2\2\u0250\u0294\7{\2\2\u0251"+
- "\u0252\7v\2\2\u0252\u0253\7c\2\2\u0253\u0294\7z\2\2\u0254\u0255\7d\2\2"+
- "\u0255\u0256\7e\2\2\u0256\u0294\7u\2\2\u0257\u0258\7e\2\2\u0258\u0259"+
- "\7n\2\2\u0259\u0294\7x\2\2\u025a\u025b\7v\2\2\u025b\u025c\7u\2\2\u025c"+
- "\u0294\7z\2\2\u025d\u025e\7n\2\2\u025e\u025f\7c\2\2\u025f\u0294\7u\2\2"+
- "\u0260\u0261\7e\2\2\u0261\u0262\7r\2\2\u0262\u0294\7{\2\2\u0263\u0264"+
- "\7e\2\2\u0264\u0265\7o\2\2\u0265\u0294\7r\2\2\u0266\u0267\7e\2\2\u0267"+
- "\u0268\7r\2\2\u0268\u0294\7z\2\2\u0269\u026a\7f\2\2\u026a\u026b\7e\2\2"+
- "\u026b\u0294\7r\2\2\u026c\u026d\7f\2\2\u026d\u026e\7g\2\2\u026e\u0294"+
- "\7e\2\2\u026f\u0270\7k\2\2\u0270\u0271\7p\2\2\u0271\u0294\7e\2\2\u0272"+
- "\u0273\7c\2\2\u0273\u0274\7z\2\2\u0274\u0294\7u\2\2\u0275\u0276\7d\2\2"+
- "\u0276\u0277\7p\2\2\u0277\u0294\7g\2\2\u0278\u0279\7e\2\2\u0279\u027a"+
- "\7n\2\2\u027a\u0294\7f\2\2\u027b\u027c\7u\2\2\u027c\u027d\7d\2\2\u027d"+
- "\u0294\7e\2\2\u027e\u027f\7k\2\2\u027f\u0280\7u\2\2\u0280\u0294\7e\2\2"+
- "\u0281\u0282\7k\2\2\u0282\u0283\7p\2\2\u0283\u0294\7z\2\2\u0284\u0285"+
- "\7d\2\2\u0285\u0286\7g\2\2\u0286\u0294\7s\2\2\u0287\u0288\7u\2\2\u0288"+
- "\u0289\7g\2\2\u0289\u0294\7f\2\2\u028a\u028b\7f\2\2\u028b\u028c\7g\2\2"+
- "\u028c\u0294\7z\2\2\u028d\u028e\7k\2\2\u028e\u028f\7p\2\2\u028f\u0294"+
- "\7{\2\2\u0290\u0291\7t\2\2\u0291\u0292\7q\2\2\u0292\u0294\7t\2\2\u0293"+
- "\u01b5\3\2\2\2\u0293\u01b8\3\2\2\2\u0293\u01bb\3\2\2\2\u0293\u01be\3\2"+
- "\2\2\u0293\u01c1\3\2\2\2\u0293\u01c4\3\2\2\2\u0293\u01c7\3\2\2\2\u0293"+
- "\u01ca\3\2\2\2\u0293\u01cd\3\2\2\2\u0293\u01d0\3\2\2\2\u0293\u01d3\3\2"+
- "\2\2\u0293\u01d6\3\2\2\2\u0293\u01d9\3\2\2\2\u0293\u01dc\3\2\2\2\u0293"+
- "\u01df\3\2\2\2\u0293\u01e2\3\2\2\2\u0293\u01e5\3\2\2\2\u0293\u01e8\3\2"+
- "\2\2\u0293\u01eb\3\2\2\2\u0293\u01ee\3\2\2\2\u0293\u01f1\3\2\2\2\u0293"+
- "\u01f4\3\2\2\2\u0293\u01f7\3\2\2\2\u0293\u01fa\3\2\2\2\u0293\u01fd\3\2"+
- "\2\2\u0293\u0200\3\2\2\2\u0293\u0203\3\2\2\2\u0293\u0206\3\2\2\2\u0293"+
- "\u0209\3\2\2\2\u0293\u020c\3\2\2\2\u0293\u020f\3\2\2\2\u0293\u0212\3\2"+
- "\2\2\u0293\u0215\3\2\2\2\u0293\u0218\3\2\2\2\u0293\u021b\3\2\2\2\u0293"+
- "\u021e\3\2\2\2\u0293\u0221\3\2\2\2\u0293\u0224\3\2\2\2\u0293\u0227\3\2"+
- "\2\2\u0293\u022a\3\2\2\2\u0293\u022d\3\2\2\2\u0293\u0230\3\2\2\2\u0293"+
- "\u0233\3\2\2\2\u0293\u0236\3\2\2\2\u0293\u0239\3\2\2\2\u0293\u023c\3\2"+
- "\2\2\u0293\u023f\3\2\2\2\u0293\u0242\3\2\2\2\u0293\u0245\3\2\2\2\u0293"+
- "\u0248\3\2\2\2\u0293\u024b\3\2\2\2\u0293\u024e\3\2\2\2\u0293\u0251\3\2"+
- "\2\2\u0293\u0254\3\2\2\2\u0293\u0257\3\2\2\2\u0293\u025a\3\2\2\2\u0293"+
- "\u025d\3\2\2\2\u0293\u0260\3\2\2\2\u0293\u0263\3\2\2\2\u0293\u0266\3\2"+
- "\2\2\u0293\u0269\3\2\2\2\u0293\u026c\3\2\2\2\u0293\u026f\3\2\2\2\u0293"+
- "\u0272\3\2\2\2\u0293\u0275\3\2\2\2\u0293\u0278\3\2\2\2\u0293\u027b\3\2"+
- "\2\2\u0293\u027e\3\2\2\2\u0293\u0281\3\2\2\2\u0293\u0284\3\2\2\2\u0293"+
- "\u0287\3\2\2\2\u0293\u028a\3\2\2\2\u0293\u028d\3\2\2\2\u0293\u0290\3\2"+
- "\2\2\u0294\u0088\3\2\2\2\u0295\u0296\7}\2\2\u0296\u0297\7}\2\2\u0297\u029b"+
- "\3\2\2\2\u0298\u029a\13\2\2\2\u0299\u0298\3\2\2\2\u029a\u029d\3\2\2\2"+
- "\u029b\u029c\3\2\2\2\u029b\u0299\3\2\2\2\u029c\u029e\3\2\2\2\u029d\u029b"+
- "\3\2\2\2\u029e\u029f\7\177\2\2\u029f\u02a0\7\177\2\2\u02a0\u008a\3\2\2"+
- "\2\u02a1\u02a2\7d\2\2\u02a2\u02a3\7{\2\2\u02a3\u02a4\7v\2\2\u02a4\u02b7"+
- "\7g\2\2\u02a5\u02a6\7y\2\2\u02a6\u02a7\7q\2\2\u02a7\u02a8\7t\2\2\u02a8"+
- "\u02b7\7f\2\2\u02a9\u02aa\7f\2\2\u02aa\u02ab\7y\2\2\u02ab\u02ac\7q\2\2"+
- "\u02ac\u02ad\7t\2\2\u02ad\u02b7\7f\2\2\u02ae\u02af\7d\2\2\u02af\u02b0"+
- "\7q\2\2\u02b0\u02b1\7q\2\2\u02b1\u02b7\7n\2\2\u02b2\u02b3\7x\2\2\u02b3"+
- "\u02b4\7q\2\2\u02b4\u02b5\7k\2\2\u02b5\u02b7\7f\2\2\u02b6\u02a1\3\2\2"+
- "\2\u02b6\u02a5\3\2\2\2\u02b6\u02a9\3\2\2\2\u02b6\u02ae\3\2\2\2\u02b6\u02b2"+
- "\3\2\2\2\u02b7\u008c\3\2\2\2\u02b8\u02be\7$\2\2\u02b9\u02ba\7^\2\2\u02ba"+
- "\u02bd\7$\2\2\u02bb\u02bd\n\2\2\2\u02bc\u02b9\3\2\2\2\u02bc\u02bb\3\2"+
- "\2\2\u02bd\u02c0\3\2\2\2\u02be\u02bc\3\2\2\2\u02be\u02bf\3\2\2\2\u02bf"+
- "\u02c1\3\2\2\2\u02c0\u02be\3\2\2\2\u02c1\u02c2\7$\2\2\u02c2\u008e\3\2"+
- "\2\2\u02c3\u02c7\7)\2\2\u02c4\u02c5\7^\2\2\u02c5\u02c8\7)\2\2\u02c6\u02c8"+
- "\n\3\2\2\u02c7\u02c4\3\2\2\2\u02c7\u02c6\3\2\2\2\u02c8\u02c9\3\2\2\2\u02c9"+
- "\u02ca\7)\2\2\u02ca\u0090\3\2\2\2\u02cb\u02cc\7v\2\2\u02cc\u02cd\7t\2"+
- "\2\u02cd\u02ce\7w\2\2\u02ce\u02d5\7g\2\2\u02cf\u02d0\7h\2\2\u02d0\u02d1"+
- "\7c\2\2\u02d1\u02d2\7n\2\2\u02d2\u02d3\7u\2\2\u02d3\u02d5\7g\2\2\u02d4"+
- "\u02cb\3\2\2\2\u02d4\u02cf\3\2\2\2\u02d5\u0092\3\2\2\2\u02d6\u02d9\5\u0095"+
- "K\2\u02d7\u02d9\5\u009dO\2\u02d8\u02d6\3\2\2\2\u02d8\u02d7\3\2\2\2\u02d9"+
- "\u0094\3\2\2\2\u02da\u02de\5\u0097L\2\u02db\u02de\5\u0099M\2\u02dc\u02de"+
- "\5\u009bN\2\u02dd\u02da\3\2\2\2\u02dd\u02db\3\2\2\2\u02dd\u02dc\3\2\2"+
- "\2\u02de\u0096\3\2\2\2\u02df\u02e5\7\'\2\2\u02e0\u02e1\7\62\2\2\u02e1"+
- "\u02e5\7d\2\2\u02e2\u02e3\7\62\2\2\u02e3\u02e5\7D\2\2\u02e4\u02df\3\2"+
- "\2\2\u02e4\u02e0\3\2\2\2\u02e4\u02e2\3\2\2\2\u02e5\u02e9\3\2\2\2\u02e6"+
- "\u02e8\5\u00a5S\2\u02e7\u02e6\3\2\2\2\u02e8\u02eb\3\2\2\2\u02e9\u02e7"+
- "\3\2\2\2\u02e9\u02ea\3\2\2\2\u02ea\u02ec\3\2\2\2\u02eb\u02e9\3\2\2\2\u02ec"+
- "\u02ee\7\60\2\2\u02ed\u02ef\5\u00a5S\2\u02ee\u02ed\3\2\2\2\u02ef\u02f0"+
- "\3\2\2\2\u02f0\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u0098\3\2\2\2\u02f2"+
- "\u02f4\5\u00a7T\2\u02f3\u02f2\3\2\2\2\u02f4\u02f7\3\2\2\2\u02f5\u02f3"+
- "\3\2\2\2\u02f5\u02f6\3\2\2\2\u02f6\u02f8\3\2\2\2\u02f7\u02f5\3\2\2\2\u02f8"+
- "\u02fa\7\60\2\2\u02f9\u02fb\5\u00a7T\2\u02fa\u02f9\3\2\2\2\u02fb\u02fc"+
- "\3\2\2\2\u02fc\u02fa\3\2\2\2\u02fc\u02fd\3\2\2\2\u02fd\u009a\3\2\2\2\u02fe"+
- "\u0304\7&\2\2\u02ff\u0300\7\62\2\2\u0300\u0304\7z\2\2\u0301\u0302\7\62"+
- "\2\2\u0302\u0304\7Z\2\2\u0303\u02fe\3\2\2\2\u0303\u02ff\3\2\2\2\u0303"+
- "\u0301\3\2\2\2\u0304\u0308\3\2\2\2\u0305\u0307\5\u00a9U\2\u0306\u0305"+
- "\3\2\2\2\u0307\u030a\3\2\2\2\u0308\u0306\3\2\2\2\u0308\u0309\3\2\2\2\u0309"+
- "\u030b\3\2\2\2\u030a\u0308\3\2\2\2\u030b\u030d\7\60\2\2\u030c\u030e\5"+
- "\u00a9U\2\u030d\u030c\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u030d\3\2\2\2"+
- "\u030f\u0310\3\2\2\2\u0310\u009c\3\2\2\2\u0311\u0315\5\u00a1Q\2\u0312"+
- "\u0315\5\u00a3R\2\u0313\u0315\5\u009fP\2\u0314\u0311\3\2\2\2\u0314\u0312"+
- "\3\2\2\2\u0314\u0313\3\2\2\2\u0315\u009e\3\2\2\2\u0316\u0317\7\62\2\2"+
- "\u0317\u0319\t\4\2\2\u0318\u031a\5\u00a5S\2\u0319\u0318\3\2\2\2\u031a"+
- "\u031b\3\2\2\2\u031b\u0319\3\2\2\2\u031b\u031c\3\2\2\2\u031c\u0324\3\2"+
- "\2\2\u031d\u031f\7\'\2\2\u031e\u0320\5\u00a5S\2\u031f\u031e\3\2\2\2\u0320"+
- "\u0321\3\2\2\2\u0321\u031f\3\2\2\2\u0321\u0322\3\2\2\2\u0322\u0324\3\2"+
- "\2\2\u0323\u0316\3\2\2\2\u0323\u031d\3\2\2\2\u0324\u00a0\3\2\2\2\u0325"+
- "\u0327\5\u00a7T\2\u0326\u0325\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u0326"+
- "\3\2\2\2\u0328\u0329\3\2\2\2\u0329\u00a2\3\2\2\2\u032a\u0330\7&\2\2\u032b"+
- "\u032c\7\62\2\2\u032c\u0330\7z\2\2\u032d\u032e\7\62\2\2\u032e\u0330\7"+
- "Z\2\2\u032f\u032a\3\2\2\2\u032f\u032b\3\2\2\2\u032f\u032d\3\2\2\2\u0330"+
- "\u0332\3\2\2\2\u0331\u0333\5\u00a9U\2\u0332\u0331\3\2\2\2\u0333\u0334"+
- "\3\2\2\2\u0334\u0332\3\2\2\2\u0334\u0335\3\2\2\2\u0335\u00a4\3\2\2\2\u0336"+
- "\u0337\t\5\2\2\u0337\u00a6\3\2\2\2\u0338\u0339\t\6\2\2\u0339\u00a8\3\2"+
- "\2\2\u033a\u033b\t\7\2\2\u033b\u00aa\3\2\2\2\u033c\u0340\5\u00adW\2\u033d"+
- "\u033f\5\u00afX\2\u033e\u033d\3\2\2\2\u033f\u0342\3\2\2\2\u0340\u033e"+
- "\3\2\2\2\u0340\u0341\3\2\2\2\u0341\u00ac\3\2\2\2\u0342\u0340\3\2\2\2\u0343"+
- "\u0344\t\b\2\2\u0344\u00ae\3\2\2\2\u0345\u0346\t\t\2\2\u0346\u00b0\3\2"+
- "\2\2\u0347\u034b\7#\2\2\u0348\u034a\5\u00afX\2\u0349\u0348\3\2\2\2\u034a"+
- "\u034d\3\2\2\2\u034b\u0349\3\2\2\2\u034b\u034c\3\2\2\2\u034c\u034f\3\2"+
- "\2\2\u034d\u034b\3\2\2\2\u034e\u0350\t\n\2\2\u034f\u034e\3\2\2\2\u0350"+
- "\u0351\3\2\2\2\u0351\u034f\3\2\2\2\u0351\u0352\3\2\2\2\u0352\u00b2\3\2"+
- "\2\2\u0353\u0355\t\13\2\2\u0354\u0353\3\2\2\2\u0355\u0356\3\2\2\2\u0356"+
- "\u0354\3\2\2\2\u0356\u0357\3\2\2\2\u0357\u0358\3\2\2\2\u0358\u0359\bZ"+
- "\2\2\u0359\u00b4\3\2\2\2\u035a\u035b\7\61\2\2\u035b\u035c\7\61\2\2\u035c"+
- "\u0360\3\2\2\2\u035d\u035f\n\f\2\2\u035e\u035d\3\2\2\2\u035f\u0362\3\2"+
- "\2\2\u0360\u035e\3\2\2\2\u0360\u0361\3\2\2\2\u0361\u0363\3\2\2\2\u0362"+
- "\u0360\3\2\2\2\u0363\u0364\b[\2\2\u0364\u00b6\3\2\2\2\u0365\u0366\7\61"+
- "\2\2\u0366\u0367\7,\2\2\u0367\u036b\3\2\2\2\u0368\u036a\13\2\2\2\u0369"+
- "\u0368\3\2\2\2\u036a\u036d\3\2\2\2\u036b\u036c\3\2\2\2\u036b\u0369\3\2"+
- "\2\2\u036c\u036e\3\2\2\2\u036d\u036b\3\2\2\2\u036e\u036f\7,\2\2\u036f"+
- "\u0370\7\61\2\2\u0370\u0371\3\2\2\2\u0371\u0372\b\\\2\2\u0372\u00b8\3"+
- "\2\2\2!\2\u0293\u029b\u02b6\u02bc\u02be\u02c7\u02d4\u02d8\u02dd\u02e4"+
- "\u02e9\u02f0\u02f5\u02fc\u0303\u0308\u030f\u0314\u031b\u0321\u0323\u0328"+
- "\u032f\u0334\u0340\u034b\u0351\u0356\u0360\u036b\3\b\2\2";
+ ".\2\2\u00d5\24\3\2\2\2\u00d6\u00d7\7t\2\2\u00d7\u00d8\7g\2\2\u00d8\u00d9"+
+ "\7u\2\2\u00d9\u00da\7q\2\2\u00da\u00db\7w\2\2\u00db\u00dc\7t\2\2\u00dc"+
+ "\u00dd\7e\2\2\u00dd\u00de\7g\2\2\u00de\26\3\2\2\2\u00df\u00e0\7e\2\2\u00e0"+
+ "\u00e1\7n\2\2\u00e1\u00e2\7q\2\2\u00e2\u00e3\7d\2\2\u00e3\u00e4\7d\2\2"+
+ "\u00e4\u00e5\7g\2\2\u00e5\u00e6\7t\2\2\u00e6\30\3\2\2\2\u00e7\u00e8\7"+
+ "r\2\2\u00e8\u00e9\7c\2\2\u00e9\u00ea\7t\2\2\u00ea\u00eb\7c\2\2\u00eb\u00ec"+
+ "\7o\2\2\u00ec\32\3\2\2\2\u00ed\u00ee\7<\2\2\u00ee\34\3\2\2\2\u00ef\u00f0"+
+ "\7d\2\2\u00f0\u00f1\7{\2\2\u00f1\u00f2\7v\2\2\u00f2\u00f3\7g\2\2\u00f3"+
+ "\u00f4\7u\2\2\u00f4\36\3\2\2\2\u00f5\u00f6\7e\2\2\u00f6\u00f7\7{\2\2\u00f7"+
+ "\u00f8\7e\2\2\u00f8\u00f9\7n\2\2\u00f9\u00fa\7g\2\2\u00fa\u00fb\7u\2\2"+
+ "\u00fb \3\2\2\2\u00fc\u00fd\7n\2\2\u00fd\u00fe\7q\2\2\u00fe\u00ff\7e\2"+
+ "\2\u00ff\u0100\7c\2\2\u0100\u0101\7v\2\2\u0101\u0102\7k\2\2\u0102\u0103"+
+ "\7q\2\2\u0103\u0104\7p\2\2\u0104\"\3\2\2\2\u0105\u0106\7k\2\2\u0106\u0107"+
+ "\7p\2\2\u0107\u0108\7n\2\2\u0108\u0109\7k\2\2\u0109\u010a\7p\2\2\u010a"+
+ "\u010b\7g\2\2\u010b$\3\2\2\2\u010c\u010d\7e\2\2\u010d\u010e\7q\2\2\u010e"+
+ "\u010f\7p\2\2\u010f\u0110\7u\2\2\u0110\u0111\7v\2\2\u0111&\3\2\2\2\u0112"+
+ "\u0113\7g\2\2\u0113\u0114\7z\2\2\u0114\u0115\7v\2\2\u0115\u0116\7g\2\2"+
+ "\u0116\u0117\7t\2\2\u0117\u0118\7p\2\2\u0118(\3\2\2\2\u0119\u011a\7c\2"+
+ "\2\u011a\u011b\7n\2\2\u011b\u011c\7k\2\2\u011c\u011d\7i\2\2\u011d\u011e"+
+ "\7p\2\2\u011e*\3\2\2\2\u011f\u0120\7t\2\2\u0120\u0121\7g\2\2\u0121\u0122"+
+ "\7i\2\2\u0122\u0123\7k\2\2\u0123\u0124\7u\2\2\u0124\u0125\7v\2\2\u0125"+
+ "\u0126\7g\2\2\u0126\u0127\7t\2\2\u0127,\3\2\2\2\u0128\u0129\7k\2\2\u0129"+
+ "\u012a\7h\2\2\u012a.\3\2\2\2\u012b\u012c\7g\2\2\u012c\u012d\7n\2\2\u012d"+
+ "\u012e\7u\2\2\u012e\u012f\7g\2\2\u012f\60\3\2\2\2\u0130\u0131\7y\2\2\u0131"+
+ "\u0132\7j\2\2\u0132\u0133\7k\2\2\u0133\u0134\7n\2\2\u0134\u0135\7g\2\2"+
+ "\u0135\62\3\2\2\2\u0136\u0137\7f\2\2\u0137\u0138\7q\2\2\u0138\64\3\2\2"+
+ "\2\u0139\u013a\7h\2\2\u013a\u013b\7q\2\2\u013b\u013c\7t\2\2\u013c\66\3"+
+ "\2\2\2\u013d\u013e\7t\2\2\u013e\u013f\7g\2\2\u013f\u0140\7v\2\2\u0140"+
+ "\u0141\7w\2\2\u0141\u0142\7t\2\2\u0142\u0143\7p\2\2\u01438\3\2\2\2\u0144"+
+ "\u0145\7c\2\2\u0145\u0146\7u\2\2\u0146\u0147\7o\2\2\u0147:\3\2\2\2\u0148"+
+ "\u0149\7\60\2\2\u0149\u014a\7\60\2\2\u014a<\3\2\2\2\u014b\u014c\7u\2\2"+
+ "\u014c\u014d\7k\2\2\u014d\u014e\7i\2\2\u014e\u014f\7p\2\2\u014f\u0150"+
+ "\7g\2\2\u0150\u0151\7f\2\2\u0151>\3\2\2\2\u0152\u0153\7,\2\2\u0153@\3"+
+ "\2\2\2\u0154\u0155\7]\2\2\u0155B\3\2\2\2\u0156\u0157\7_\2\2\u0157D\3\2"+
+ "\2\2\u0158\u0159\7/\2\2\u0159\u015a\7/\2\2\u015aF\3\2\2\2\u015b\u015c"+
+ "\7-\2\2\u015c\u015d\7-\2\2\u015dH\3\2\2\2\u015e\u015f\7-\2\2\u015fJ\3"+
+ "\2\2\2\u0160\u0161\7/\2\2\u0161L\3\2\2\2\u0162\u0163\7#\2\2\u0163N\3\2"+
+ "\2\2\u0164\u0165\7(\2\2\u0165P\3\2\2\2\u0166\u0167\7\u0080\2\2\u0167R"+
+ "\3\2\2\2\u0168\u0169\7@\2\2\u0169\u016a\7@\2\2\u016aT\3\2\2\2\u016b\u016c"+
+ "\7>\2\2\u016c\u016d\7>\2\2\u016dV\3\2\2\2\u016e\u016f\7\61\2\2\u016fX"+
+ "\3\2\2\2\u0170\u0171\7\'\2\2\u0171Z\3\2\2\2\u0172\u0173\7>\2\2\u0173\\"+
+ "\3\2\2\2\u0174\u0175\7@\2\2\u0175^\3\2\2\2\u0176\u0177\7?\2\2\u0177\u0178"+
+ "\7?\2\2\u0178`\3\2\2\2\u0179\u017a\7#\2\2\u017a\u017b\7?\2\2\u017bb\3"+
+ "\2\2\2\u017c\u017d\7>\2\2\u017d\u017e\7?\2\2\u017ed\3\2\2\2\u017f\u0180"+
+ "\7@\2\2\u0180\u0181\7?\2\2\u0181f\3\2\2\2\u0182\u0183\7`\2\2\u0183h\3"+
+ "\2\2\2\u0184\u0185\7~\2\2\u0185j\3\2\2\2\u0186\u0187\7(\2\2\u0187\u0188"+
+ "\7(\2\2\u0188l\3\2\2\2\u0189\u018a\7~\2\2\u018a\u018b\7~\2\2\u018bn\3"+
+ "\2\2\2\u018c\u018d\7-\2\2\u018d\u018e\7?\2\2\u018ep\3\2\2\2\u018f\u0190"+
+ "\7/\2\2\u0190\u0191\7?\2\2\u0191r\3\2\2\2\u0192\u0193\7,\2\2\u0193\u0194"+
+ "\7?\2\2\u0194t\3\2\2\2\u0195\u0196\7\61\2\2\u0196\u0197\7?\2\2\u0197v"+
+ "\3\2\2\2\u0198\u0199\7\'\2\2\u0199\u019a\7?\2\2\u019ax\3\2\2\2\u019b\u019c"+
+ "\7>\2\2\u019c\u019d\7>\2\2\u019d\u019e\7?\2\2\u019ez\3\2\2\2\u019f\u01a0"+
+ "\7@\2\2\u01a0\u01a1\7@\2\2\u01a1\u01a2\7?\2\2\u01a2|\3\2\2\2\u01a3\u01a4"+
+ "\7(\2\2\u01a4\u01a5\7?\2\2\u01a5~\3\2\2\2\u01a6\u01a7\7~\2\2\u01a7\u01a8"+
+ "\7?\2\2\u01a8\u0080\3\2\2\2\u01a9\u01aa\7`\2\2\u01aa\u01ab\7?\2\2\u01ab"+
+ "\u0082\3\2\2\2\u01ac\u01ad\7\60\2\2\u01ad\u01ae\7d\2\2\u01ae\u01af\7{"+
+ "\2\2\u01af\u01b0\7v\2\2\u01b0\u01b1\7g\2\2\u01b1\u0084\3\2\2\2\u01b2\u01b3"+
+ "\7%\2\2\u01b3\u0086\3\2\2\2\u01b4\u01b5\7d\2\2\u01b5\u01b6\7t\2\2\u01b6"+
+ "\u0293\7m\2\2\u01b7\u01b8\7q\2\2\u01b8\u01b9\7t\2\2\u01b9\u0293\7c\2\2"+
+ "\u01ba\u01bb\7m\2\2\u01bb\u01bc\7k\2\2\u01bc\u0293\7n\2\2\u01bd\u01be"+
+ "\7u\2\2\u01be\u01bf\7n\2\2\u01bf\u0293\7q\2\2\u01c0\u01c1\7p\2\2\u01c1"+
+ "\u01c2\7q\2\2\u01c2\u0293\7r\2\2\u01c3\u01c4\7c\2\2\u01c4\u01c5\7u\2\2"+
+ "\u01c5\u0293\7n\2\2\u01c6\u01c7\7r\2\2\u01c7\u01c8\7j\2\2\u01c8\u0293"+
+ "\7r\2\2\u01c9\u01ca\7c\2\2\u01ca\u01cb\7p\2\2\u01cb\u0293\7e\2\2\u01cc"+
+ "\u01cd\7d\2\2\u01cd\u01ce\7r\2\2\u01ce\u0293\7n\2\2\u01cf\u01d0\7e\2\2"+
+ "\u01d0\u01d1\7n\2\2\u01d1\u0293\7e\2\2\u01d2\u01d3\7l\2\2\u01d3\u01d4"+
+ "\7u\2\2\u01d4\u0293\7t\2\2\u01d5\u01d6\7c\2\2\u01d6\u01d7\7p\2\2\u01d7"+
+ "\u0293\7f\2\2\u01d8\u01d9\7t\2\2\u01d9\u01da\7n\2\2\u01da\u0293\7c\2\2"+
+ "\u01db\u01dc\7d\2\2\u01dc\u01dd\7k\2\2\u01dd\u0293\7v\2\2\u01de\u01df"+
+ "\7t\2\2\u01df\u01e0\7q\2\2\u01e0\u0293\7n\2\2\u01e1\u01e2\7r\2\2\u01e2"+
+ "\u01e3\7n\2\2\u01e3\u0293\7c\2\2\u01e4\u01e5\7r\2\2\u01e5\u01e6\7n\2\2"+
+ "\u01e6\u0293\7r\2\2\u01e7\u01e8\7d\2\2\u01e8\u01e9\7o\2\2\u01e9\u0293"+
+ "\7k\2\2\u01ea\u01eb\7u\2\2\u01eb\u01ec\7g\2\2\u01ec\u0293\7e\2\2\u01ed"+
+ "\u01ee\7t\2\2\u01ee\u01ef\7v\2\2\u01ef\u0293\7k\2\2\u01f0\u01f1\7g\2\2"+
+ "\u01f1\u01f2\7q\2\2\u01f2\u0293\7t\2\2\u01f3\u01f4\7u\2\2\u01f4\u01f5"+
+ "\7t\2\2\u01f5\u0293\7g\2\2\u01f6\u01f7\7n\2\2\u01f7\u01f8\7u\2\2\u01f8"+
+ "\u0293\7t\2\2\u01f9\u01fa\7r\2\2\u01fa\u01fb\7j\2\2\u01fb\u0293\7c\2\2"+
+ "\u01fc\u01fd\7c\2\2\u01fd\u01fe\7n\2\2\u01fe\u0293\7t\2\2\u01ff\u0200"+
+ "\7l\2\2\u0200\u0201\7o\2\2\u0201\u0293\7r\2\2\u0202\u0203\7d\2\2\u0203"+
+ "\u0204\7x\2\2\u0204\u0293\7e\2\2\u0205\u0206\7e\2\2\u0206\u0207\7n\2\2"+
+ "\u0207\u0293\7k\2\2\u0208\u0209\7t\2\2\u0209\u020a\7v\2\2\u020a\u0293"+
+ "\7u\2\2\u020b\u020c\7c\2\2\u020c\u020d\7f\2\2\u020d\u0293\7e\2\2\u020e"+
+ "\u020f\7t\2\2\u020f\u0210\7t\2\2\u0210\u0293\7c\2\2\u0211\u0212\7d\2\2"+
+ "\u0212\u0213\7x\2\2\u0213\u0293\7u\2\2\u0214\u0215\7u\2\2\u0215\u0216"+
+ "\7g\2\2\u0216\u0293\7k\2\2\u0217\u0218\7u\2\2\u0218\u0219\7c\2\2\u0219"+
+ "\u0293\7z\2\2\u021a\u021b\7u\2\2\u021b\u021c\7v\2\2\u021c\u0293\7{\2\2"+
+ "\u021d\u021e\7u\2\2\u021e\u021f\7v\2\2\u021f\u0293\7c\2\2\u0220\u0221"+
+ "\7u\2\2\u0221\u0222\7v\2\2\u0222\u0293\7z\2\2\u0223\u0224\7f\2\2\u0224"+
+ "\u0225\7g\2\2\u0225\u0293\7{\2\2\u0226\u0227\7v\2\2\u0227\u0228\7z\2\2"+
+ "\u0228\u0293\7c\2\2\u0229\u022a\7z\2\2\u022a\u022b\7c\2\2\u022b\u0293"+
+ "\7c\2\2\u022c\u022d\7d\2\2\u022d\u022e\7e\2\2\u022e\u0293\7e\2\2\u022f"+
+ "\u0230\7c\2\2\u0230\u0231\7j\2\2\u0231\u0293\7z\2\2\u0232\u0233\7v\2\2"+
+ "\u0233\u0234\7{\2\2\u0234\u0293\7c\2\2\u0235\u0236\7v\2\2\u0236\u0237"+
+ "\7z\2\2\u0237\u0293\7u\2\2\u0238\u0239\7v\2\2\u0239\u023a\7c\2\2\u023a"+
+ "\u0293\7u\2\2\u023b\u023c\7u\2\2\u023c\u023d\7j\2\2\u023d\u0293\7{\2\2"+
+ "\u023e\u023f\7u\2\2\u023f\u0240\7j\2\2\u0240\u0293\7z\2\2\u0241\u0242"+
+ "\7n\2\2\u0242\u0243\7f\2\2\u0243\u0293\7{\2\2\u0244\u0245\7n\2\2\u0245"+
+ "\u0246\7f\2\2\u0246\u0293\7c\2\2\u0247\u0248\7n\2\2\u0248\u0249\7f\2\2"+
+ "\u0249\u0293\7z\2\2\u024a\u024b\7n\2\2\u024b\u024c\7c\2\2\u024c\u0293"+
+ "\7z\2\2\u024d\u024e\7v\2\2\u024e\u024f\7c\2\2\u024f\u0293\7{\2\2\u0250"+
+ "\u0251\7v\2\2\u0251\u0252\7c\2\2\u0252\u0293\7z\2\2\u0253\u0254\7d\2\2"+
+ "\u0254\u0255\7e\2\2\u0255\u0293\7u\2\2\u0256\u0257\7e\2\2\u0257\u0258"+
+ "\7n\2\2\u0258\u0293\7x\2\2\u0259\u025a\7v\2\2\u025a\u025b\7u\2\2\u025b"+
+ "\u0293\7z\2\2\u025c\u025d\7n\2\2\u025d\u025e\7c\2\2\u025e\u0293\7u\2\2"+
+ "\u025f\u0260\7e\2\2\u0260\u0261\7r\2\2\u0261\u0293\7{\2\2\u0262\u0263"+
+ "\7e\2\2\u0263\u0264\7o\2\2\u0264\u0293\7r\2\2\u0265\u0266\7e\2\2\u0266"+
+ "\u0267\7r\2\2\u0267\u0293\7z\2\2\u0268\u0269\7f\2\2\u0269\u026a\7e\2\2"+
+ "\u026a\u0293\7r\2\2\u026b\u026c\7f\2\2\u026c\u026d\7g\2\2\u026d\u0293"+
+ "\7e\2\2\u026e\u026f\7k\2\2\u026f\u0270\7p\2\2\u0270\u0293\7e\2\2\u0271"+
+ "\u0272\7c\2\2\u0272\u0273\7z\2\2\u0273\u0293\7u\2\2\u0274\u0275\7d\2\2"+
+ "\u0275\u0276\7p\2\2\u0276\u0293\7g\2\2\u0277\u0278\7e\2\2\u0278\u0279"+
+ "\7n\2\2\u0279\u0293\7f\2\2\u027a\u027b\7u\2\2\u027b\u027c\7d\2\2\u027c"+
+ "\u0293\7e\2\2\u027d\u027e\7k\2\2\u027e\u027f\7u\2\2\u027f\u0293\7e\2\2"+
+ "\u0280\u0281\7k\2\2\u0281\u0282\7p\2\2\u0282\u0293\7z\2\2\u0283\u0284"+
+ "\7d\2\2\u0284\u0285\7g\2\2\u0285\u0293\7s\2\2\u0286\u0287\7u\2\2\u0287"+
+ "\u0288\7g\2\2\u0288\u0293\7f\2\2\u0289\u028a\7f\2\2\u028a\u028b\7g\2\2"+
+ "\u028b\u0293\7z\2\2\u028c\u028d\7k\2\2\u028d\u028e\7p\2\2\u028e\u0293"+
+ "\7{\2\2\u028f\u0290\7t\2\2\u0290\u0291\7q\2\2\u0291\u0293\7t\2\2\u0292"+
+ "\u01b4\3\2\2\2\u0292\u01b7\3\2\2\2\u0292\u01ba\3\2\2\2\u0292\u01bd\3\2"+
+ "\2\2\u0292\u01c0\3\2\2\2\u0292\u01c3\3\2\2\2\u0292\u01c6\3\2\2\2\u0292"+
+ "\u01c9\3\2\2\2\u0292\u01cc\3\2\2\2\u0292\u01cf\3\2\2\2\u0292\u01d2\3\2"+
+ "\2\2\u0292\u01d5\3\2\2\2\u0292\u01d8\3\2\2\2\u0292\u01db\3\2\2\2\u0292"+
+ "\u01de\3\2\2\2\u0292\u01e1\3\2\2\2\u0292\u01e4\3\2\2\2\u0292\u01e7\3\2"+
+ "\2\2\u0292\u01ea\3\2\2\2\u0292\u01ed\3\2\2\2\u0292\u01f0\3\2\2\2\u0292"+
+ "\u01f3\3\2\2\2\u0292\u01f6\3\2\2\2\u0292\u01f9\3\2\2\2\u0292\u01fc\3\2"+
+ "\2\2\u0292\u01ff\3\2\2\2\u0292\u0202\3\2\2\2\u0292\u0205\3\2\2\2\u0292"+
+ "\u0208\3\2\2\2\u0292\u020b\3\2\2\2\u0292\u020e\3\2\2\2\u0292\u0211\3\2"+
+ "\2\2\u0292\u0214\3\2\2\2\u0292\u0217\3\2\2\2\u0292\u021a\3\2\2\2\u0292"+
+ "\u021d\3\2\2\2\u0292\u0220\3\2\2\2\u0292\u0223\3\2\2\2\u0292\u0226\3\2"+
+ "\2\2\u0292\u0229\3\2\2\2\u0292\u022c\3\2\2\2\u0292\u022f\3\2\2\2\u0292"+
+ "\u0232\3\2\2\2\u0292\u0235\3\2\2\2\u0292\u0238\3\2\2\2\u0292\u023b\3\2"+
+ "\2\2\u0292\u023e\3\2\2\2\u0292\u0241\3\2\2\2\u0292\u0244\3\2\2\2\u0292"+
+ "\u0247\3\2\2\2\u0292\u024a\3\2\2\2\u0292\u024d\3\2\2\2\u0292\u0250\3\2"+
+ "\2\2\u0292\u0253\3\2\2\2\u0292\u0256\3\2\2\2\u0292\u0259\3\2\2\2\u0292"+
+ "\u025c\3\2\2\2\u0292\u025f\3\2\2\2\u0292\u0262\3\2\2\2\u0292\u0265\3\2"+
+ "\2\2\u0292\u0268\3\2\2\2\u0292\u026b\3\2\2\2\u0292\u026e\3\2\2\2\u0292"+
+ "\u0271\3\2\2\2\u0292\u0274\3\2\2\2\u0292\u0277\3\2\2\2\u0292\u027a\3\2"+
+ "\2\2\u0292\u027d\3\2\2\2\u0292\u0280\3\2\2\2\u0292\u0283\3\2\2\2\u0292"+
+ "\u0286\3\2\2\2\u0292\u0289\3\2\2\2\u0292\u028c\3\2\2\2\u0292\u028f\3\2"+
+ "\2\2\u0293\u0088\3\2\2\2\u0294\u0295\7}\2\2\u0295\u0296\7}\2\2\u0296\u029a"+
+ "\3\2\2\2\u0297\u0299\13\2\2\2\u0298\u0297\3\2\2\2\u0299\u029c\3\2\2\2"+
+ "\u029a\u029b\3\2\2\2\u029a\u0298\3\2\2\2\u029b\u029d\3\2\2\2\u029c\u029a"+
+ "\3\2\2\2\u029d\u029e\7\177\2\2\u029e\u029f\7\177\2\2\u029f\u008a\3\2\2"+
+ "\2\u02a0\u02a1\7d\2\2\u02a1\u02a2\7{\2\2\u02a2\u02a3\7v\2\2\u02a3\u02b6"+
+ "\7g\2\2\u02a4\u02a5\7y\2\2\u02a5\u02a6\7q\2\2\u02a6\u02a7\7t\2\2\u02a7"+
+ "\u02b6\7f\2\2\u02a8\u02a9\7f\2\2\u02a9\u02aa\7y\2\2\u02aa\u02ab\7q\2\2"+
+ "\u02ab\u02ac\7t\2\2\u02ac\u02b6\7f\2\2\u02ad\u02ae\7d\2\2\u02ae\u02af"+
+ "\7q\2\2\u02af\u02b0\7q\2\2\u02b0\u02b6\7n\2\2\u02b1\u02b2\7x\2\2\u02b2"+
+ "\u02b3\7q\2\2\u02b3\u02b4\7k\2\2\u02b4\u02b6\7f\2\2\u02b5\u02a0\3\2\2"+
+ "\2\u02b5\u02a4\3\2\2\2\u02b5\u02a8\3\2\2\2\u02b5\u02ad\3\2\2\2\u02b5\u02b1"+
+ "\3\2\2\2\u02b6\u008c\3\2\2\2\u02b7\u02bd\7$\2\2\u02b8\u02b9\7^\2\2\u02b9"+
+ "\u02bc\7$\2\2\u02ba\u02bc\n\2\2\2\u02bb\u02b8\3\2\2\2\u02bb\u02ba\3\2"+
+ "\2\2\u02bc\u02bf\3\2\2\2\u02bd\u02bb\3\2\2\2\u02bd\u02be\3\2\2\2\u02be"+
+ "\u02c0\3\2\2\2\u02bf\u02bd\3\2\2\2\u02c0\u02c1\7$\2\2\u02c1\u008e\3\2"+
+ "\2\2\u02c2\u02c6\7)\2\2\u02c3\u02c4\7^\2\2\u02c4\u02c7\7)\2\2\u02c5\u02c7"+
+ "\n\3\2\2\u02c6\u02c3\3\2\2\2\u02c6\u02c5\3\2\2\2\u02c7\u02c8\3\2\2\2\u02c8"+
+ "\u02c9\7)\2\2\u02c9\u0090\3\2\2\2\u02ca\u02cb\7v\2\2\u02cb\u02cc\7t\2"+
+ "\2\u02cc\u02cd\7w\2\2\u02cd\u02d4\7g\2\2\u02ce\u02cf\7h\2\2\u02cf\u02d0"+
+ "\7c\2\2\u02d0\u02d1\7n\2\2\u02d1\u02d2\7u\2\2\u02d2\u02d4\7g\2\2\u02d3"+
+ "\u02ca\3\2\2\2\u02d3\u02ce\3\2\2\2\u02d4\u0092\3\2\2\2\u02d5\u02d8\5\u0095"+
+ "K\2\u02d6\u02d8\5\u009dO\2\u02d7\u02d5\3\2\2\2\u02d7\u02d6\3\2\2\2\u02d8"+
+ "\u0094\3\2\2\2\u02d9\u02dd\5\u0097L\2\u02da\u02dd\5\u0099M\2\u02db\u02dd"+
+ "\5\u009bN\2\u02dc\u02d9\3\2\2\2\u02dc\u02da\3\2\2\2\u02dc\u02db\3\2\2"+
+ "\2\u02dd\u0096\3\2\2\2\u02de\u02e4\7\'\2\2\u02df\u02e0\7\62\2\2\u02e0"+
+ "\u02e4\7d\2\2\u02e1\u02e2\7\62\2\2\u02e2\u02e4\7D\2\2\u02e3\u02de\3\2"+
+ "\2\2\u02e3\u02df\3\2\2\2\u02e3\u02e1\3\2\2\2\u02e4\u02e8\3\2\2\2\u02e5"+
+ "\u02e7\5\u00a5S\2\u02e6\u02e5\3\2\2\2\u02e7\u02ea\3\2\2\2\u02e8\u02e6"+
+ "\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e9\u02eb\3\2\2\2\u02ea\u02e8\3\2\2\2\u02eb"+
+ "\u02ed\7\60\2\2\u02ec\u02ee\5\u00a5S\2\u02ed\u02ec\3\2\2\2\u02ee\u02ef"+
+ "\3\2\2\2\u02ef\u02ed\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0\u0098\3\2\2\2\u02f1"+
+ "\u02f3\5\u00a7T\2\u02f2\u02f1\3\2\2\2\u02f3\u02f6\3\2\2\2\u02f4\u02f2"+
+ "\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5\u02f7\3\2\2\2\u02f6\u02f4\3\2\2\2\u02f7"+
+ "\u02f9\7\60\2\2\u02f8\u02fa\5\u00a7T\2\u02f9\u02f8\3\2\2\2\u02fa\u02fb"+
+ "\3\2\2\2\u02fb\u02f9\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc\u009a\3\2\2\2\u02fd"+
+ "\u0303\7&\2\2\u02fe\u02ff\7\62\2\2\u02ff\u0303\7z\2\2\u0300\u0301\7\62"+
+ "\2\2\u0301\u0303\7Z\2\2\u0302\u02fd\3\2\2\2\u0302\u02fe\3\2\2\2\u0302"+
+ "\u0300\3\2\2\2\u0303\u0307\3\2\2\2\u0304\u0306\5\u00a9U\2\u0305\u0304"+
+ "\3\2\2\2\u0306\u0309\3\2\2\2\u0307\u0305\3\2\2\2\u0307\u0308\3\2\2\2\u0308"+
+ "\u030a\3\2\2\2\u0309\u0307\3\2\2\2\u030a\u030c\7\60\2\2\u030b\u030d\5"+
+ "\u00a9U\2\u030c\u030b\3\2\2\2\u030d\u030e\3\2\2\2\u030e\u030c\3\2\2\2"+
+ "\u030e\u030f\3\2\2\2\u030f\u009c\3\2\2\2\u0310\u0314\5\u00a1Q\2\u0311"+
+ "\u0314\5\u00a3R\2\u0312\u0314\5\u009fP\2\u0313\u0310\3\2\2\2\u0313\u0311"+
+ "\3\2\2\2\u0313\u0312\3\2\2\2\u0314\u009e\3\2\2\2\u0315\u0316\7\62\2\2"+
+ "\u0316\u0318\t\4\2\2\u0317\u0319\5\u00a5S\2\u0318\u0317\3\2\2\2\u0319"+
+ "\u031a\3\2\2\2\u031a\u0318\3\2\2\2\u031a\u031b\3\2\2\2\u031b\u0323\3\2"+
+ "\2\2\u031c\u031e\7\'\2\2\u031d\u031f\5\u00a5S\2\u031e\u031d\3\2\2\2\u031f"+
+ "\u0320\3\2\2\2\u0320\u031e\3\2\2\2\u0320\u0321\3\2\2\2\u0321\u0323\3\2"+
+ "\2\2\u0322\u0315\3\2\2\2\u0322\u031c\3\2\2\2\u0323\u00a0\3\2\2\2\u0324"+
+ "\u0326\5\u00a7T\2\u0325\u0324\3\2\2\2\u0326\u0327\3\2\2\2\u0327\u0325"+
+ "\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u00a2\3\2\2\2\u0329\u032f\7&\2\2\u032a"+
+ "\u032b\7\62\2\2\u032b\u032f\7z\2\2\u032c\u032d\7\62\2\2\u032d\u032f\7"+
+ "Z\2\2\u032e\u0329\3\2\2\2\u032e\u032a\3\2\2\2\u032e\u032c\3\2\2\2\u032f"+
+ "\u0331\3\2\2\2\u0330\u0332\5\u00a9U\2\u0331\u0330\3\2\2\2\u0332\u0333"+
+ "\3\2\2\2\u0333\u0331\3\2\2\2\u0333\u0334\3\2\2\2\u0334\u00a4\3\2\2\2\u0335"+
+ "\u0336\t\5\2\2\u0336\u00a6\3\2\2\2\u0337\u0338\t\6\2\2\u0338\u00a8\3\2"+
+ "\2\2\u0339\u033a\t\7\2\2\u033a\u00aa\3\2\2\2\u033b\u033f\5\u00adW\2\u033c"+
+ "\u033e\5\u00afX\2\u033d\u033c\3\2\2\2\u033e\u0341\3\2\2\2\u033f\u033d"+
+ "\3\2\2\2\u033f\u0340\3\2\2\2\u0340\u00ac\3\2\2\2\u0341\u033f\3\2\2\2\u0342"+
+ "\u0343\t\b\2\2\u0343\u00ae\3\2\2\2\u0344\u0345\t\t\2\2\u0345\u00b0\3\2"+
+ "\2\2\u0346\u034a\7#\2\2\u0347\u0349\5\u00afX\2\u0348\u0347\3\2\2\2\u0349"+
+ "\u034c\3\2\2\2\u034a\u0348\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u034e\3\2"+
+ "\2\2\u034c\u034a\3\2\2\2\u034d\u034f\t\n\2\2\u034e\u034d\3\2\2\2\u034f"+
+ "\u0350\3\2\2\2\u0350\u034e\3\2\2\2\u0350\u0351\3\2\2\2\u0351\u00b2\3\2"+
+ "\2\2\u0352\u0354\t\13\2\2\u0353\u0352\3\2\2\2\u0354\u0355\3\2\2\2\u0355"+
+ "\u0353\3\2\2\2\u0355\u0356\3\2\2\2\u0356\u0357\3\2\2\2\u0357\u0358\bZ"+
+ "\2\2\u0358\u00b4\3\2\2\2\u0359\u035a\7\61\2\2\u035a\u035b\7\61\2\2\u035b"+
+ "\u035f\3\2\2\2\u035c\u035e\n\f\2\2\u035d\u035c\3\2\2\2\u035e\u0361\3\2"+
+ "\2\2\u035f\u035d\3\2\2\2\u035f\u0360\3\2\2\2\u0360\u0362\3\2\2\2\u0361"+
+ "\u035f\3\2\2\2\u0362\u0363\b[\2\2\u0363\u00b6\3\2\2\2\u0364\u0365\7\61"+
+ "\2\2\u0365\u0366\7,\2\2\u0366\u036a\3\2\2\2\u0367\u0369\13\2\2\2\u0368"+
+ "\u0367\3\2\2\2\u0369\u036c\3\2\2\2\u036a\u036b\3\2\2\2\u036a\u0368\3\2"+
+ "\2\2\u036b\u036d\3\2\2\2\u036c\u036a\3\2\2\2\u036d\u036e\7,\2\2\u036e"+
+ "\u036f\7\61\2\2\u036f\u0370\3\2\2\2\u0370\u0371\b\\\2\2\u0371\u00b8\3"+
+ "\2\2\2!\2\u0292\u029a\u02b5\u02bb\u02bd\u02c6\u02d3\u02d7\u02dc\u02e3"+
+ "\u02e8\u02ef\u02f4\u02fb\u0302\u0307\u030e\u0313\u031a\u0320\u0322\u0327"+
+ "\u032e\u0333\u033f\u034a\u0350\u0355\u035f\u036a\3\b\2\2";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens
index 2b802db5b..ce21ae408 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens
@@ -92,15 +92,15 @@ COMMENT_BLOCK=86
'{'=6
'}'=7
'kickasm'=8
-'resources'=9
-'clobber'=10
-'param'=11
-'bytes'=12
-'cycles'=13
-'location'=14
-'inline'=15
-','=16
-':'=17
+','=9
+'resource'=10
+'clobber'=11
+'param'=12
+':'=13
+'bytes'=14
+'cycles'=15
+'location'=16
+'inline'=17
'const'=18
'extern'=19
'align'=20
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCListener.java
index b2ee61db3..301bfdcb6 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCListener.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCListener.java
@@ -98,107 +98,87 @@ public interface KickCListener extends ParseTreeListener {
*/
void exitDeclKasm(KickCParser.DeclKasmContext ctx);
/**
- * Enter a parse tree produced by {@link KickCParser#kasmParams}.
+ * Enter a parse tree produced by {@link KickCParser#kasmDirectives}.
* @param ctx the parse tree
*/
- void enterKasmParams(KickCParser.KasmParamsContext ctx);
+ void enterKasmDirectives(KickCParser.KasmDirectivesContext ctx);
/**
- * Exit a parse tree produced by {@link KickCParser#kasmParams}.
+ * Exit a parse tree produced by {@link KickCParser#kasmDirectives}.
* @param ctx the parse tree
*/
- void exitKasmParams(KickCParser.KasmParamsContext ctx);
+ void exitKasmDirectives(KickCParser.KasmDirectivesContext ctx);
/**
- * Enter a parse tree produced by the {@code kasmParamResources}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Enter a parse tree produced by the {@code kasmDirectiveResource}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void enterKasmParamResources(KickCParser.KasmParamResourcesContext ctx);
+ void enterKasmDirectiveResource(KickCParser.KasmDirectiveResourceContext ctx);
/**
- * Exit a parse tree produced by the {@code kasmParamResources}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Exit a parse tree produced by the {@code kasmDirectiveResource}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void exitKasmParamResources(KickCParser.KasmParamResourcesContext ctx);
+ void exitKasmDirectiveResource(KickCParser.KasmDirectiveResourceContext ctx);
/**
- * Enter a parse tree produced by the {@code kasmParamClobber}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Enter a parse tree produced by the {@code kasmDirectiveClobber}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void enterKasmParamClobber(KickCParser.KasmParamClobberContext ctx);
+ void enterKasmDirectiveClobber(KickCParser.KasmDirectiveClobberContext ctx);
/**
- * Exit a parse tree produced by the {@code kasmParamClobber}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Exit a parse tree produced by the {@code kasmDirectiveClobber}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void exitKasmParamClobber(KickCParser.KasmParamClobberContext ctx);
+ void exitKasmDirectiveClobber(KickCParser.KasmDirectiveClobberContext ctx);
/**
- * Enter a parse tree produced by the {@code kasmParamTransfer}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Enter a parse tree produced by the {@code kasmDirectiveTransfer}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void enterKasmParamTransfer(KickCParser.KasmParamTransferContext ctx);
+ void enterKasmDirectiveTransfer(KickCParser.KasmDirectiveTransferContext ctx);
/**
- * Exit a parse tree produced by the {@code kasmParamTransfer}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Exit a parse tree produced by the {@code kasmDirectiveTransfer}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void exitKasmParamTransfer(KickCParser.KasmParamTransferContext ctx);
+ void exitKasmDirectiveTransfer(KickCParser.KasmDirectiveTransferContext ctx);
/**
- * Enter a parse tree produced by the {@code kasmParamBytes}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Enter a parse tree produced by the {@code kasmDirectiveBytes}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void enterKasmParamBytes(KickCParser.KasmParamBytesContext ctx);
+ void enterKasmDirectiveBytes(KickCParser.KasmDirectiveBytesContext ctx);
/**
- * Exit a parse tree produced by the {@code kasmParamBytes}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Exit a parse tree produced by the {@code kasmDirectiveBytes}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void exitKasmParamBytes(KickCParser.KasmParamBytesContext ctx);
+ void exitKasmDirectiveBytes(KickCParser.KasmDirectiveBytesContext ctx);
/**
- * Enter a parse tree produced by the {@code kasmParamCycles}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Enter a parse tree produced by the {@code kasmDirectiveCycles}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void enterKasmParamCycles(KickCParser.KasmParamCyclesContext ctx);
+ void enterKasmDirectiveCycles(KickCParser.KasmDirectiveCyclesContext ctx);
/**
- * Exit a parse tree produced by the {@code kasmParamCycles}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Exit a parse tree produced by the {@code kasmDirectiveCycles}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void exitKasmParamCycles(KickCParser.KasmParamCyclesContext ctx);
+ void exitKasmDirectiveCycles(KickCParser.KasmDirectiveCyclesContext ctx);
/**
- * Enter a parse tree produced by the {@code kasmParamLocation}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Enter a parse tree produced by the {@code kasmDirectiveLocation}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void enterKasmParamLocation(KickCParser.KasmParamLocationContext ctx);
+ void enterKasmDirectiveLocation(KickCParser.KasmDirectiveLocationContext ctx);
/**
- * Exit a parse tree produced by the {@code kasmParamLocation}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Exit a parse tree produced by the {@code kasmDirectiveLocation}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
*/
- void exitKasmParamLocation(KickCParser.KasmParamLocationContext ctx);
- /**
- * Enter a parse tree produced by {@link KickCParser#kasmResourceList}.
- * @param ctx the parse tree
- */
- void enterKasmResourceList(KickCParser.KasmResourceListContext ctx);
- /**
- * Exit a parse tree produced by {@link KickCParser#kasmResourceList}.
- * @param ctx the parse tree
- */
- void exitKasmResourceList(KickCParser.KasmResourceListContext ctx);
- /**
- * Enter a parse tree produced by {@link KickCParser#kasmParamList}.
- * @param ctx the parse tree
- */
- void enterKasmParamList(KickCParser.KasmParamListContext ctx);
- /**
- * Exit a parse tree produced by {@link KickCParser#kasmParamList}.
- * @param ctx the parse tree
- */
- void exitKasmParamList(KickCParser.KasmParamListContext ctx);
+ void exitKasmDirectiveLocation(KickCParser.KasmDirectiveLocationContext ctx);
/**
* Enter a parse tree produced by {@link KickCParser#parameterListDecl}.
* @param ctx the parse tree
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
index e8dfa59f0..2fbe144c8 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
@@ -33,25 +33,24 @@ public class KickCParser extends Parser {
public static final int
RULE_file = 0, RULE_asmFile = 1, RULE_importSeq = 2, RULE_importDecl = 3,
RULE_declSeq = 4, RULE_decl = 5, RULE_declVariable = 6, RULE_declFunction = 7,
- RULE_declKasm = 8, RULE_kasmParams = 9, RULE_kasmParam = 10, RULE_kasmResourceList = 11,
- RULE_kasmParamList = 12, RULE_parameterListDecl = 13, RULE_parameterDecl = 14,
- RULE_directive = 15, RULE_stmtSeq = 16, RULE_stmt = 17, RULE_forDeclaration = 18,
- RULE_forIteration = 19, RULE_typeDecl = 20, RULE_expr = 21, RULE_parameterList = 22,
- RULE_asmLines = 23, RULE_asmLine = 24, RULE_asmLabel = 25, RULE_asmInstruction = 26,
- RULE_asmBytes = 27, RULE_asmParamMode = 28, RULE_asmExpr = 29;
+ RULE_declKasm = 8, RULE_kasmDirectives = 9, RULE_kasmDirective = 10, RULE_parameterListDecl = 11,
+ RULE_parameterDecl = 12, RULE_directive = 13, RULE_stmtSeq = 14, RULE_stmt = 15,
+ RULE_forDeclaration = 16, RULE_forIteration = 17, RULE_typeDecl = 18,
+ RULE_expr = 19, RULE_parameterList = 20, RULE_asmLines = 21, RULE_asmLine = 22,
+ RULE_asmLabel = 23, RULE_asmInstruction = 24, RULE_asmBytes = 25, RULE_asmParamMode = 26,
+ RULE_asmExpr = 27;
public static final String[] ruleNames = {
"file", "asmFile", "importSeq", "importDecl", "declSeq", "decl", "declVariable",
- "declFunction", "declKasm", "kasmParams", "kasmParam", "kasmResourceList",
- "kasmParamList", "parameterListDecl", "parameterDecl", "directive", "stmtSeq",
- "stmt", "forDeclaration", "forIteration", "typeDecl", "expr", "parameterList",
- "asmLines", "asmLine", "asmLabel", "asmInstruction", "asmBytes", "asmParamMode",
- "asmExpr"
+ "declFunction", "declKasm", "kasmDirectives", "kasmDirective", "parameterListDecl",
+ "parameterDecl", "directive", "stmtSeq", "stmt", "forDeclaration", "forIteration",
+ "typeDecl", "expr", "parameterList", "asmLines", "asmLine", "asmLabel",
+ "asmInstruction", "asmBytes", "asmParamMode", "asmExpr"
};
private static final String[] _LITERAL_NAMES = {
null, "'import'", "'='", "';'", "'('", "')'", "'{'", "'}'", "'kickasm'",
- "'resources'", "'clobber'", "'param'", "'bytes'", "'cycles'", "'location'",
- "'inline'", "','", "':'", "'const'", "'extern'", "'align'", "'register'",
+ "','", "'resource'", "'clobber'", "'param'", "':'", "'bytes'", "'cycles'",
+ "'location'", "'inline'", "'const'", "'extern'", "'align'", "'register'",
"'if'", "'else'", "'while'", "'do'", "'for'", "'return'", "'asm'", "'..'",
"'signed'", "'*'", "'['", "']'", "'--'", "'++'", "'+'", "'-'", "'!'",
"'&'", "'~'", "'>>'", "'<<'", "'/'", "'%'", "'<'", "'>'", "'=='", "'!='",
@@ -151,11 +150,11 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(60);
+ setState(56);
importSeq();
- setState(61);
+ setState(57);
declSeq();
- setState(62);
+ setState(58);
match(EOF);
}
}
@@ -200,9 +199,9 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(64);
+ setState(60);
asmLines();
- setState(65);
+ setState(61);
match(EOF);
}
}
@@ -250,17 +249,17 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(70);
+ setState(66);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(67);
+ setState(63);
importDecl();
}
}
- setState(72);
+ setState(68);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -304,9 +303,9 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(73);
+ setState(69);
match(T__0);
- setState(74);
+ setState(70);
match(STRING);
}
}
@@ -354,20 +353,20 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(77);
+ setState(73);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(76);
+ setState(72);
decl();
}
}
- setState(79);
+ setState(75);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( ((((_la - 8)) & ~0x3f) == 0 && ((1L << (_la - 8)) & ((1L << (T__7 - 8)) | (1L << (T__14 - 8)) | (1L << (T__17 - 8)) | (1L << (T__18 - 8)) | (1L << (T__19 - 8)) | (1L << (T__20 - 8)) | (1L << (T__29 - 8)) | (1L << (SIMPLETYPE - 8)))) != 0) );
+ } while ( ((((_la - 8)) & ~0x3f) == 0 && ((1L << (_la - 8)) & ((1L << (T__7 - 8)) | (1L << (T__16 - 8)) | (1L << (T__17 - 8)) | (1L << (T__18 - 8)) | (1L << (T__19 - 8)) | (1L << (T__20 - 8)) | (1L << (T__29 - 8)) | (1L << (SIMPLETYPE - 8)))) != 0) );
}
}
catch (RecognitionException re) {
@@ -414,27 +413,27 @@ public class KickCParser extends Parser {
DeclContext _localctx = new DeclContext(_ctx, getState());
enterRule(_localctx, 10, RULE_decl);
try {
- setState(84);
+ setState(80);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(81);
+ setState(77);
declVariable();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(82);
+ setState(78);
declFunction();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(83);
+ setState(79);
declKasm();
}
break;
@@ -491,51 +490,51 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(89);
+ setState(85);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
{
- setState(86);
+ setState(82);
directive();
}
}
- setState(91);
+ setState(87);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(92);
+ setState(88);
typeDecl(0);
- setState(96);
+ setState(92);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
{
- setState(93);
+ setState(89);
directive();
}
}
- setState(98);
+ setState(94);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(99);
+ setState(95);
match(NAME);
- setState(102);
+ setState(98);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__1) {
{
- setState(100);
+ setState(96);
match(T__1);
- setState(101);
+ setState(97);
expr(0);
}
}
- setState(104);
+ setState(100);
match(T__2);
}
}
@@ -593,65 +592,65 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(109);
+ setState(105);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
{
- setState(106);
+ setState(102);
directive();
}
}
- setState(111);
+ setState(107);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(112);
+ setState(108);
typeDecl(0);
- setState(116);
+ setState(112);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
{
- setState(113);
+ setState(109);
directive();
}
}
- setState(118);
+ setState(114);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(119);
+ setState(115);
match(NAME);
- setState(120);
+ setState(116);
match(T__3);
- setState(122);
+ setState(118);
_errHandler.sync(this);
_la = _input.LA(1);
- if (((((_la - 15)) & ~0x3f) == 0 && ((1L << (_la - 15)) & ((1L << (T__14 - 15)) | (1L << (T__17 - 15)) | (1L << (T__18 - 15)) | (1L << (T__19 - 15)) | (1L << (T__20 - 15)) | (1L << (T__29 - 15)) | (1L << (SIMPLETYPE - 15)))) != 0)) {
+ if (((((_la - 17)) & ~0x3f) == 0 && ((1L << (_la - 17)) & ((1L << (T__16 - 17)) | (1L << (T__17 - 17)) | (1L << (T__18 - 17)) | (1L << (T__19 - 17)) | (1L << (T__20 - 17)) | (1L << (T__29 - 17)) | (1L << (SIMPLETYPE - 17)))) != 0)) {
{
- setState(121);
+ setState(117);
parameterListDecl();
}
}
- setState(124);
+ setState(120);
match(T__4);
- setState(125);
+ setState(121);
match(T__5);
- setState(127);
+ setState(123);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__7) | (1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__29) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (SIMPLETYPE - 69)) | (1L << (STRING - 69)) | (1L << (CHAR - 69)) | (1L << (BOOLEAN - 69)) | (1L << (NUMBER - 69)) | (1L << (NAME - 69)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__7) | (1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__29) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (SIMPLETYPE - 69)) | (1L << (STRING - 69)) | (1L << (CHAR - 69)) | (1L << (BOOLEAN - 69)) | (1L << (NUMBER - 69)) | (1L << (NAME - 69)))) != 0)) {
{
- setState(126);
+ setState(122);
stmtSeq();
}
}
- setState(129);
+ setState(125);
match(T__6);
}
}
@@ -668,8 +667,8 @@ public class KickCParser extends Parser {
public static class DeclKasmContext extends ParserRuleContext {
public TerminalNode KICKASM() { return getToken(KickCParser.KICKASM, 0); }
- public KasmParamsContext kasmParams() {
- return getRuleContext(KasmParamsContext.class,0);
+ public KasmDirectivesContext kasmDirectives() {
+ return getRuleContext(KasmDirectivesContext.class,0);
}
public DeclKasmContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
@@ -697,19 +696,19 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(131);
+ setState(127);
match(T__7);
- setState(133);
+ setState(129);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__3) {
{
- setState(132);
- kasmParams();
+ setState(128);
+ kasmDirectives();
}
}
- setState(135);
+ setState(131);
match(KICKASM);
}
}
@@ -724,60 +723,60 @@ public class KickCParser extends Parser {
return _localctx;
}
- public static class KasmParamsContext extends ParserRuleContext {
- public List kasmParam() {
- return getRuleContexts(KasmParamContext.class);
+ public static class KasmDirectivesContext extends ParserRuleContext {
+ public List kasmDirective() {
+ return getRuleContexts(KasmDirectiveContext.class);
}
- public KasmParamContext kasmParam(int i) {
- return getRuleContext(KasmParamContext.class,i);
+ public KasmDirectiveContext kasmDirective(int i) {
+ return getRuleContext(KasmDirectiveContext.class,i);
}
- public KasmParamsContext(ParserRuleContext parent, int invokingState) {
+ public KasmDirectivesContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_kasmParams; }
+ @Override public int getRuleIndex() { return RULE_kasmDirectives; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParams(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmDirectives(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParams(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmDirectives(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParams(this);
+ if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmDirectives(this);
else return visitor.visitChildren(this);
}
}
- public final KasmParamsContext kasmParams() throws RecognitionException {
- KasmParamsContext _localctx = new KasmParamsContext(_ctx, getState());
- enterRule(_localctx, 18, RULE_kasmParams);
+ public final KasmDirectivesContext kasmDirectives() throws RecognitionException {
+ KasmDirectivesContext _localctx = new KasmDirectivesContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_kasmDirectives);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(137);
+ setState(133);
match(T__3);
- setState(138);
- kasmParam();
- setState(143);
+ setState(134);
+ kasmDirective();
+ setState(139);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__2) {
+ while (_la==T__8) {
{
{
- setState(139);
- match(T__2);
- setState(140);
- kasmParam();
+ setState(135);
+ match(T__8);
+ setState(136);
+ kasmDirective();
}
}
- setState(145);
+ setState(141);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(146);
+ setState(142);
match(T__4);
}
}
@@ -792,197 +791,225 @@ public class KickCParser extends Parser {
return _localctx;
}
- public static class KasmParamContext extends ParserRuleContext {
- public KasmParamContext(ParserRuleContext parent, int invokingState) {
+ public static class KasmDirectiveContext extends ParserRuleContext {
+ public KasmDirectiveContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_kasmParam; }
+ @Override public int getRuleIndex() { return RULE_kasmDirective; }
- public KasmParamContext() { }
- public void copyFrom(KasmParamContext ctx) {
+ public KasmDirectiveContext() { }
+ public void copyFrom(KasmDirectiveContext ctx) {
super.copyFrom(ctx);
}
}
- public static class KasmParamCyclesContext extends KasmParamContext {
+ public static class KasmDirectiveCyclesContext extends KasmDirectiveContext {
public TerminalNode NUMBER() { return getToken(KickCParser.NUMBER, 0); }
- public KasmParamCyclesContext(KasmParamContext ctx) { copyFrom(ctx); }
+ public KasmDirectiveCyclesContext(KasmDirectiveContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParamCycles(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmDirectiveCycles(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParamCycles(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmDirectiveCycles(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParamCycles(this);
+ if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmDirectiveCycles(this);
else return visitor.visitChildren(this);
}
}
- public static class KasmParamBytesContext extends KasmParamContext {
+ public static class KasmDirectiveBytesContext extends KasmDirectiveContext {
public TerminalNode NUMBER() { return getToken(KickCParser.NUMBER, 0); }
- public KasmParamBytesContext(KasmParamContext ctx) { copyFrom(ctx); }
+ public KasmDirectiveBytesContext(KasmDirectiveContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParamBytes(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmDirectiveBytes(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParamBytes(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmDirectiveBytes(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParamBytes(this);
+ if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmDirectiveBytes(this);
else return visitor.visitChildren(this);
}
}
- public static class KasmParamLocationContext extends KasmParamContext {
- public TerminalNode NUMBER() { return getToken(KickCParser.NUMBER, 0); }
- public KasmParamLocationContext(KasmParamContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParamLocation(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParamLocation(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParamLocation(this);
- else return visitor.visitChildren(this);
- }
- }
- public static class KasmParamResourcesContext extends KasmParamContext {
- public KasmResourceListContext kasmResourceList() {
- return getRuleContext(KasmResourceListContext.class,0);
- }
- public KasmParamResourcesContext(KasmParamContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParamResources(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParamResources(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParamResources(this);
- else return visitor.visitChildren(this);
- }
- }
- public static class KasmParamClobberContext extends KasmParamContext {
+ public static class KasmDirectiveResourceContext extends KasmDirectiveContext {
public TerminalNode STRING() { return getToken(KickCParser.STRING, 0); }
- public KasmParamClobberContext(KasmParamContext ctx) { copyFrom(ctx); }
+ public KasmDirectiveResourceContext(KasmDirectiveContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParamClobber(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmDirectiveResource(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParamClobber(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmDirectiveResource(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParamClobber(this);
+ if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmDirectiveResource(this);
else return visitor.visitChildren(this);
}
}
- public static class KasmParamTransferContext extends KasmParamContext {
- public KasmParamListContext kasmParamList() {
- return getRuleContext(KasmParamListContext.class,0);
+ public static class KasmDirectiveLocationContext extends KasmDirectiveContext {
+ public ExprContext expr() {
+ return getRuleContext(ExprContext.class,0);
}
- public KasmParamTransferContext(KasmParamContext ctx) { copyFrom(ctx); }
+ public KasmDirectiveLocationContext(KasmDirectiveContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParamTransfer(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmDirectiveLocation(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParamTransfer(this);
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmDirectiveLocation(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParamTransfer(this);
+ if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmDirectiveLocation(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ public static class KasmDirectiveClobberContext extends KasmDirectiveContext {
+ public TerminalNode STRING() { return getToken(KickCParser.STRING, 0); }
+ public KasmDirectiveClobberContext(KasmDirectiveContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmDirectiveClobber(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmDirectiveClobber(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmDirectiveClobber(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ public static class KasmDirectiveTransferContext extends KasmDirectiveContext {
+ public TerminalNode NAME() { return getToken(KickCParser.NAME, 0); }
+ public ExprContext expr() {
+ return getRuleContext(ExprContext.class,0);
+ }
+ public KasmDirectiveTransferContext(KasmDirectiveContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmDirectiveTransfer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmDirectiveTransfer(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmDirectiveTransfer(this);
else return visitor.visitChildren(this);
}
}
- public final KasmParamContext kasmParam() throws RecognitionException {
- KasmParamContext _localctx = new KasmParamContext(_ctx, getState());
- enterRule(_localctx, 20, RULE_kasmParam);
- int _la;
+ public final KasmDirectiveContext kasmDirective() throws RecognitionException {
+ KasmDirectiveContext _localctx = new KasmDirectiveContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_kasmDirective);
try {
- setState(160);
+ setState(161);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__8:
- _localctx = new KasmParamResourcesContext(_localctx);
+ case T__9:
+ _localctx = new KasmDirectiveResourceContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(148);
- match(T__8);
- setState(149);
- kasmResourceList();
- }
- break;
- case T__9:
- _localctx = new KasmParamClobberContext(_localctx);
- enterOuterAlt(_localctx, 2);
- {
- setState(150);
+ setState(144);
match(T__9);
- setState(151);
+ setState(145);
match(STRING);
}
break;
case T__10:
- _localctx = new KasmParamTransferContext(_localctx);
- enterOuterAlt(_localctx, 3);
+ _localctx = new KasmDirectiveClobberContext(_localctx);
+ enterOuterAlt(_localctx, 2);
{
- setState(152);
+ setState(146);
match(T__10);
- setState(153);
- kasmParamList();
+ setState(147);
+ match(STRING);
}
break;
case T__11:
- _localctx = new KasmParamBytesContext(_localctx);
+ _localctx = new KasmDirectiveTransferContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(148);
+ match(T__11);
+ setState(149);
+ match(NAME);
+ setState(150);
+ match(T__12);
+ setState(151);
+ expr(0);
+ }
+ break;
+ case T__13:
+ _localctx = new KasmDirectiveBytesContext(_localctx);
enterOuterAlt(_localctx, 4);
{
+ setState(152);
+ match(T__13);
+ setState(153);
+ match(NUMBER);
+ }
+ break;
+ case T__14:
+ _localctx = new KasmDirectiveCyclesContext(_localctx);
+ enterOuterAlt(_localctx, 5);
+ {
setState(154);
- match(T__11);
+ match(T__14);
setState(155);
match(NUMBER);
}
break;
- case T__12:
- _localctx = new KasmParamCyclesContext(_localctx);
- enterOuterAlt(_localctx, 5);
- {
- setState(156);
- match(T__12);
- setState(157);
- match(NUMBER);
- }
- break;
- case T__13:
- _localctx = new KasmParamLocationContext(_localctx);
+ case T__15:
+ _localctx = new KasmDirectiveLocationContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(158);
- match(T__13);
+ setState(156);
+ match(T__15);
setState(159);
- _la = _input.LA(1);
- if ( !(_la==T__14 || _la==NUMBER) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__16:
+ {
+ setState(157);
+ match(T__16);
+ }
+ break;
+ case T__3:
+ case T__5:
+ case T__30:
+ case T__33:
+ case T__34:
+ case T__35:
+ case T__36:
+ case T__37:
+ case T__38:
+ case T__39:
+ case T__44:
+ case T__45:
+ case STRING:
+ case CHAR:
+ case BOOLEAN:
+ case NUMBER:
+ case NAME:
+ {
+ setState(158);
+ expr(0);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
}
}
break;
@@ -1001,144 +1028,6 @@ public class KickCParser extends Parser {
return _localctx;
}
- public static class KasmResourceListContext extends ParserRuleContext {
- public List STRING() { return getTokens(KickCParser.STRING); }
- public TerminalNode STRING(int i) {
- return getToken(KickCParser.STRING, i);
- }
- public KasmResourceListContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_kasmResourceList; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmResourceList(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmResourceList(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmResourceList(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final KasmResourceListContext kasmResourceList() throws RecognitionException {
- KasmResourceListContext _localctx = new KasmResourceListContext(_ctx, getState());
- enterRule(_localctx, 22, RULE_kasmResourceList);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(162);
- match(STRING);
- setState(167);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==T__15) {
- {
- {
- setState(163);
- match(T__15);
- setState(164);
- match(STRING);
- }
- }
- setState(169);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class KasmParamListContext extends ParserRuleContext {
- public List NAME() { return getTokens(KickCParser.NAME); }
- public TerminalNode NAME(int i) {
- return getToken(KickCParser.NAME, i);
- }
- public List expr() {
- return getRuleContexts(ExprContext.class);
- }
- public ExprContext expr(int i) {
- return getRuleContext(ExprContext.class,i);
- }
- public KasmParamListContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_kasmParamList; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).enterKasmParamList(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof KickCListener ) ((KickCListener)listener).exitKasmParamList(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof KickCVisitor ) return ((KickCVisitor extends T>)visitor).visitKasmParamList(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final KasmParamListContext kasmParamList() throws RecognitionException {
- KasmParamListContext _localctx = new KasmParamListContext(_ctx, getState());
- enterRule(_localctx, 24, RULE_kasmParamList);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(170);
- match(NAME);
- setState(171);
- match(T__16);
- setState(172);
- expr(0);
- setState(179);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==T__15) {
- {
- {
- setState(173);
- match(T__15);
- setState(174);
- match(NAME);
- setState(175);
- match(T__16);
- setState(176);
- expr(0);
- }
- }
- setState(181);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
public static class ParameterListDeclContext extends ParserRuleContext {
public List parameterDecl() {
return getRuleContexts(ParameterDeclContext.class);
@@ -1167,26 +1056,26 @@ public class KickCParser extends Parser {
public final ParameterListDeclContext parameterListDecl() throws RecognitionException {
ParameterListDeclContext _localctx = new ParameterListDeclContext(_ctx, getState());
- enterRule(_localctx, 26, RULE_parameterListDecl);
+ enterRule(_localctx, 22, RULE_parameterListDecl);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(182);
+ setState(163);
parameterDecl();
- setState(187);
+ setState(168);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__15) {
+ while (_la==T__8) {
{
{
- setState(183);
- match(T__15);
- setState(184);
+ setState(164);
+ match(T__8);
+ setState(165);
parameterDecl();
}
}
- setState(189);
+ setState(170);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1235,42 +1124,42 @@ public class KickCParser extends Parser {
public final ParameterDeclContext parameterDecl() throws RecognitionException {
ParameterDeclContext _localctx = new ParameterDeclContext(_ctx, getState());
- enterRule(_localctx, 28, RULE_parameterDecl);
+ enterRule(_localctx, 24, RULE_parameterDecl);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(193);
+ setState(174);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
{
- setState(190);
+ setState(171);
directive();
}
}
- setState(195);
+ setState(176);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(196);
+ setState(177);
typeDecl(0);
- setState(200);
+ setState(181);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
{
- setState(197);
+ setState(178);
directive();
}
}
- setState(202);
+ setState(183);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(203);
+ setState(184);
match(NAME);
}
}
@@ -1381,16 +1270,16 @@ public class KickCParser extends Parser {
public final DirectiveContext directive() throws RecognitionException {
DirectiveContext _localctx = new DirectiveContext(_ctx, getState());
- enterRule(_localctx, 30, RULE_directive);
+ enterRule(_localctx, 26, RULE_directive);
try {
- setState(216);
+ setState(197);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__17:
_localctx = new DirectiveConstContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(205);
+ setState(186);
match(T__17);
}
break;
@@ -1398,7 +1287,7 @@ public class KickCParser extends Parser {
_localctx = new DirectiveExternContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(206);
+ setState(187);
match(T__18);
}
break;
@@ -1406,13 +1295,13 @@ public class KickCParser extends Parser {
_localctx = new DirectiveAlignContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(207);
+ setState(188);
match(T__19);
- setState(208);
+ setState(189);
match(T__3);
- setState(209);
+ setState(190);
match(NUMBER);
- setState(210);
+ setState(191);
match(T__4);
}
break;
@@ -1420,22 +1309,22 @@ public class KickCParser extends Parser {
_localctx = new DirectiveRegisterContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(211);
+ setState(192);
match(T__20);
- setState(212);
+ setState(193);
match(T__3);
- setState(213);
+ setState(194);
match(NAME);
- setState(214);
+ setState(195);
match(T__4);
}
break;
- case T__14:
+ case T__16:
_localctx = new DirectiveInlineContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(215);
- match(T__14);
+ setState(196);
+ match(T__16);
}
break;
default:
@@ -1481,25 +1370,25 @@ public class KickCParser extends Parser {
public final StmtSeqContext stmtSeq() throws RecognitionException {
StmtSeqContext _localctx = new StmtSeqContext(_ctx, getState());
- enterRule(_localctx, 32, RULE_stmtSeq);
+ enterRule(_localctx, 28, RULE_stmtSeq);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(219);
+ setState(200);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(218);
+ setState(199);
stmt();
}
}
- setState(221);
+ setState(202);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__7) | (1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__29) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (SIMPLETYPE - 69)) | (1L << (STRING - 69)) | (1L << (CHAR - 69)) | (1L << (BOOLEAN - 69)) | (1L << (NUMBER - 69)) | (1L << (NAME - 69)))) != 0) );
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__7) | (1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__29) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (SIMPLETYPE - 69)) | (1L << (STRING - 69)) | (1L << (CHAR - 69)) | (1L << (BOOLEAN - 69)) | (1L << (NUMBER - 69)) | (1L << (NAME - 69)))) != 0) );
}
}
catch (RecognitionException re) {
@@ -1744,17 +1633,17 @@ public class KickCParser extends Parser {
public final StmtContext stmt() throws RecognitionException {
StmtContext _localctx = new StmtContext(_ctx, getState());
- enterRule(_localctx, 34, RULE_stmt);
+ enterRule(_localctx, 30, RULE_stmt);
int _la;
try {
- setState(284);
+ setState(265);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
case 1:
_localctx = new StmtDeclVarContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(223);
+ setState(204);
declVariable();
}
break;
@@ -1762,19 +1651,19 @@ public class KickCParser extends Parser {
_localctx = new StmtBlockContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(224);
+ setState(205);
match(T__5);
- setState(226);
+ setState(207);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__7) | (1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__29) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (SIMPLETYPE - 69)) | (1L << (STRING - 69)) | (1L << (CHAR - 69)) | (1L << (BOOLEAN - 69)) | (1L << (NUMBER - 69)) | (1L << (NAME - 69)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__7) | (1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__29) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (SIMPLETYPE - 69)) | (1L << (STRING - 69)) | (1L << (CHAR - 69)) | (1L << (BOOLEAN - 69)) | (1L << (NUMBER - 69)) | (1L << (NAME - 69)))) != 0)) {
{
- setState(225);
+ setState(206);
stmtSeq();
}
}
- setState(228);
+ setState(209);
match(T__6);
}
break;
@@ -1782,9 +1671,9 @@ public class KickCParser extends Parser {
_localctx = new StmtExprContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(229);
+ setState(210);
expr(0);
- setState(230);
+ setState(211);
match(T__2);
}
break;
@@ -1792,24 +1681,24 @@ public class KickCParser extends Parser {
_localctx = new StmtIfElseContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(232);
+ setState(213);
match(T__21);
- setState(233);
+ setState(214);
match(T__3);
- setState(234);
+ setState(215);
expr(0);
- setState(235);
+ setState(216);
match(T__4);
- setState(236);
+ setState(217);
stmt();
- setState(239);
+ setState(220);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
case 1:
{
- setState(237);
+ setState(218);
match(T__22);
- setState(238);
+ setState(219);
stmt();
}
break;
@@ -1820,25 +1709,25 @@ public class KickCParser extends Parser {
_localctx = new StmtWhileContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(242);
+ setState(223);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
- setState(241);
+ setState(222);
directive();
}
}
- setState(244);
+ setState(225);
match(T__23);
- setState(245);
+ setState(226);
match(T__3);
- setState(246);
+ setState(227);
expr(0);
- setState(247);
+ setState(228);
match(T__4);
- setState(248);
+ setState(229);
stmt();
}
break;
@@ -1846,29 +1735,29 @@ public class KickCParser extends Parser {
_localctx = new StmtDoWhileContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(251);
+ setState(232);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
- setState(250);
+ setState(231);
directive();
}
}
- setState(253);
+ setState(234);
match(T__24);
- setState(254);
+ setState(235);
stmt();
- setState(255);
+ setState(236);
match(T__23);
- setState(256);
+ setState(237);
match(T__3);
- setState(257);
+ setState(238);
expr(0);
- setState(258);
+ setState(239);
match(T__4);
- setState(259);
+ setState(240);
match(T__2);
}
break;
@@ -1876,35 +1765,35 @@ public class KickCParser extends Parser {
_localctx = new StmtForContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(262);
+ setState(243);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
- setState(261);
+ setState(242);
directive();
}
}
- setState(264);
+ setState(245);
match(T__25);
- setState(265);
+ setState(246);
match(T__3);
- setState(267);
+ setState(248);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__29))) != 0) || _la==SIMPLETYPE || _la==NAME) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__29))) != 0) || _la==SIMPLETYPE || _la==NAME) {
{
- setState(266);
+ setState(247);
forDeclaration();
}
}
- setState(269);
+ setState(250);
forIteration();
- setState(270);
+ setState(251);
match(T__4);
- setState(271);
+ setState(252);
stmt();
}
break;
@@ -1912,19 +1801,19 @@ public class KickCParser extends Parser {
_localctx = new StmtReturnContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(273);
+ setState(254);
match(T__26);
- setState(275);
+ setState(256);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (STRING - 70)) | (1L << (CHAR - 70)) | (1L << (BOOLEAN - 70)) | (1L << (NUMBER - 70)) | (1L << (NAME - 70)))) != 0)) {
{
- setState(274);
+ setState(255);
expr(0);
}
}
- setState(277);
+ setState(258);
match(T__2);
}
break;
@@ -1932,13 +1821,13 @@ public class KickCParser extends Parser {
_localctx = new StmtAsmContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(278);
+ setState(259);
match(T__27);
- setState(279);
+ setState(260);
match(T__5);
- setState(280);
+ setState(261);
asmLines();
- setState(281);
+ setState(262);
match(T__6);
}
break;
@@ -1946,7 +1835,7 @@ public class KickCParser extends Parser {
_localctx = new StmtDeclKasmContext(_localctx);
enterOuterAlt(_localctx, 10);
{
- setState(283);
+ setState(264);
declKasm();
}
break;
@@ -2006,63 +1895,63 @@ public class KickCParser extends Parser {
public final ForDeclarationContext forDeclaration() throws RecognitionException {
ForDeclarationContext _localctx = new ForDeclarationContext(_ctx, getState());
- enterRule(_localctx, 36, RULE_forDeclaration);
+ enterRule(_localctx, 32, RULE_forDeclaration);
int _la;
try {
int _alt;
_localctx = new ForDeclContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(289);
+ setState(270);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,27,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(286);
+ setState(267);
directive();
}
}
}
- setState(291);
+ setState(272);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,27,_ctx);
}
- setState(293);
+ setState(274);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__29 || _la==SIMPLETYPE) {
{
- setState(292);
+ setState(273);
typeDecl(0);
}
}
- setState(298);
+ setState(279);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20))) != 0)) {
{
{
- setState(295);
+ setState(276);
directive();
}
}
- setState(300);
+ setState(281);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(301);
+ setState(282);
match(NAME);
- setState(304);
+ setState(285);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__1) {
{
- setState(302);
+ setState(283);
match(T__1);
- setState(303);
+ setState(284);
expr(0);
}
}
@@ -2138,38 +2027,38 @@ public class KickCParser extends Parser {
public final ForIterationContext forIteration() throws RecognitionException {
ForIterationContext _localctx = new ForIterationContext(_ctx, getState());
- enterRule(_localctx, 38, RULE_forIteration);
+ enterRule(_localctx, 34, RULE_forIteration);
try {
- setState(316);
+ setState(297);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__2:
_localctx = new ForClassicContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(306);
+ setState(287);
match(T__2);
- setState(307);
+ setState(288);
expr(0);
- setState(308);
+ setState(289);
match(T__2);
- setState(309);
+ setState(290);
expr(0);
}
break;
- case T__16:
+ case T__12:
_localctx = new ForRangeContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(311);
- match(T__16);
- setState(312);
+ setState(292);
+ match(T__12);
+ setState(293);
expr(0);
{
- setState(313);
+ setState(294);
match(T__28);
}
- setState(314);
+ setState(295);
expr(0);
}
break;
@@ -2284,14 +2173,14 @@ public class KickCParser extends Parser {
int _parentState = getState();
TypeDeclContext _localctx = new TypeDeclContext(_ctx, _parentState);
TypeDeclContext _prevctx = _localctx;
- int _startState = 40;
- enterRecursionRule(_localctx, 40, RULE_typeDecl, _p);
+ int _startState = 36;
+ enterRecursionRule(_localctx, 36, RULE_typeDecl, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(322);
+ setState(303);
_errHandler.sync(this);
switch (_input.LA(1)) {
case SIMPLETYPE:
@@ -2300,7 +2189,7 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(319);
+ setState(300);
match(SIMPLETYPE);
}
break;
@@ -2309,9 +2198,9 @@ public class KickCParser extends Parser {
_localctx = new TypeSignedSimpleContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(320);
+ setState(301);
match(T__29);
- setState(321);
+ setState(302);
match(SIMPLETYPE);
}
break;
@@ -2319,24 +2208,24 @@ public class KickCParser extends Parser {
throw new NoViableAltException(this);
}
_ctx.stop = _input.LT(-1);
- setState(334);
+ setState(315);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,35,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(332);
+ setState(313);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
case 1:
{
_localctx = new TypePtrContext(new TypeDeclContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_typeDecl);
- setState(324);
+ setState(305);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(325);
+ setState(306);
match(T__30);
}
break;
@@ -2344,30 +2233,30 @@ public class KickCParser extends Parser {
{
_localctx = new TypeArrayContext(new TypeDeclContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_typeDecl);
- setState(326);
+ setState(307);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(327);
+ setState(308);
match(T__31);
- setState(329);
+ setState(310);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (STRING - 70)) | (1L << (CHAR - 70)) | (1L << (BOOLEAN - 70)) | (1L << (NUMBER - 70)) | (1L << (NAME - 70)))) != 0)) {
{
- setState(328);
+ setState(309);
expr(0);
}
}
- setState(331);
+ setState(312);
match(T__32);
}
break;
}
}
}
- setState(336);
+ setState(317);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,35,_ctx);
}
}
}
@@ -2735,27 +2624,27 @@ public class KickCParser extends Parser {
int _parentState = getState();
ExprContext _localctx = new ExprContext(_ctx, _parentState);
ExprContext _prevctx = _localctx;
- int _startState = 42;
- enterRecursionRule(_localctx, 42, RULE_expr, _p);
+ int _startState = 38;
+ enterRecursionRule(_localctx, 38, RULE_expr, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(377);
+ setState(358);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
case 1:
{
_localctx = new ExprParContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(338);
+ setState(319);
match(T__3);
- setState(339);
+ setState(320);
expr(0);
- setState(340);
+ setState(321);
match(T__4);
}
break;
@@ -2764,21 +2653,21 @@ public class KickCParser extends Parser {
_localctx = new ExprCallContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(342);
+ setState(323);
match(NAME);
- setState(343);
+ setState(324);
match(T__3);
- setState(345);
+ setState(326);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__5) | (1L << T__30) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__44) | (1L << T__45))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (STRING - 70)) | (1L << (CHAR - 70)) | (1L << (BOOLEAN - 70)) | (1L << (NUMBER - 70)) | (1L << (NAME - 70)))) != 0)) {
{
- setState(344);
+ setState(325);
parameterList();
}
}
- setState(347);
+ setState(328);
match(T__4);
}
break;
@@ -2787,13 +2676,13 @@ public class KickCParser extends Parser {
_localctx = new ExprCastContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(348);
+ setState(329);
match(T__3);
- setState(349);
+ setState(330);
typeDecl(0);
- setState(350);
+ setState(331);
match(T__4);
- setState(351);
+ setState(332);
expr(23);
}
break;
@@ -2802,7 +2691,7 @@ public class KickCParser extends Parser {
_localctx = new ExprPreModContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(353);
+ setState(334);
_la = _input.LA(1);
if ( !(_la==T__33 || _la==T__34) ) {
_errHandler.recoverInline(this);
@@ -2812,7 +2701,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(354);
+ setState(335);
expr(22);
}
break;
@@ -2821,9 +2710,9 @@ public class KickCParser extends Parser {
_localctx = new ExprPtrContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(355);
+ setState(336);
match(T__30);
- setState(356);
+ setState(337);
expr(20);
}
break;
@@ -2832,7 +2721,7 @@ public class KickCParser extends Parser {
_localctx = new ExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(357);
+ setState(338);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -2842,7 +2731,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(358);
+ setState(339);
expr(19);
}
break;
@@ -2851,7 +2740,7 @@ public class KickCParser extends Parser {
_localctx = new ExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(359);
+ setState(340);
_la = _input.LA(1);
if ( !(_la==T__44 || _la==T__45) ) {
_errHandler.recoverInline(this);
@@ -2861,7 +2750,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(360);
+ setState(341);
expr(15);
}
break;
@@ -2870,27 +2759,27 @@ public class KickCParser extends Parser {
_localctx = new InitListContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(361);
+ setState(342);
match(T__5);
- setState(362);
+ setState(343);
expr(0);
- setState(367);
+ setState(348);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__15) {
+ while (_la==T__8) {
{
{
- setState(363);
- match(T__15);
- setState(364);
+ setState(344);
+ match(T__8);
+ setState(345);
expr(0);
}
}
- setState(369);
+ setState(350);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(370);
+ setState(351);
match(T__6);
}
break;
@@ -2899,7 +2788,7 @@ public class KickCParser extends Parser {
_localctx = new ExprIdContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(372);
+ setState(353);
match(NAME);
}
break;
@@ -2908,7 +2797,7 @@ public class KickCParser extends Parser {
_localctx = new ExprNumberContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(373);
+ setState(354);
match(NUMBER);
}
break;
@@ -2917,7 +2806,7 @@ public class KickCParser extends Parser {
_localctx = new ExprStringContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(374);
+ setState(355);
match(STRING);
}
break;
@@ -2926,7 +2815,7 @@ public class KickCParser extends Parser {
_localctx = new ExprCharContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(375);
+ setState(356);
match(CHAR);
}
break;
@@ -2935,30 +2824,30 @@ public class KickCParser extends Parser {
_localctx = new ExprBoolContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(376);
+ setState(357);
match(BOOLEAN);
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(421);
+ setState(402);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,41,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,40,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(419);
+ setState(400);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
case 1:
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(379);
+ setState(360);
if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)");
- setState(380);
+ setState(361);
_la = _input.LA(1);
if ( !(_la==T__40 || _la==T__41) ) {
_errHandler.recoverInline(this);
@@ -2968,7 +2857,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(381);
+ setState(362);
expr(19);
}
break;
@@ -2976,9 +2865,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(382);
+ setState(363);
if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
- setState(383);
+ setState(364);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__30) | (1L << T__42) | (1L << T__43))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -2988,7 +2877,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(384);
+ setState(365);
expr(18);
}
break;
@@ -2996,9 +2885,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(385);
+ setState(366);
if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)");
- setState(386);
+ setState(367);
_la = _input.LA(1);
if ( !(_la==T__35 || _la==T__36) ) {
_errHandler.recoverInline(this);
@@ -3008,7 +2897,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(387);
+ setState(368);
expr(17);
}
break;
@@ -3016,9 +2905,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(388);
+ setState(369);
if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
- setState(389);
+ setState(370);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__44) | (1L << T__45) | (1L << T__46) | (1L << T__47) | (1L << T__48) | (1L << T__49))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -3028,7 +2917,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(390);
+ setState(371);
expr(15);
}
break;
@@ -3036,13 +2925,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(391);
+ setState(372);
if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
{
- setState(392);
+ setState(373);
match(T__38);
}
- setState(393);
+ setState(374);
expr(14);
}
break;
@@ -3050,13 +2939,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(394);
+ setState(375);
if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
{
- setState(395);
+ setState(376);
match(T__50);
}
- setState(396);
+ setState(377);
expr(13);
}
break;
@@ -3064,13 +2953,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(397);
+ setState(378);
if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
{
- setState(398);
+ setState(379);
match(T__51);
}
- setState(399);
+ setState(380);
expr(12);
}
break;
@@ -3078,13 +2967,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(400);
+ setState(381);
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
{
- setState(401);
+ setState(382);
match(T__52);
}
- setState(402);
+ setState(383);
expr(11);
}
break;
@@ -3092,13 +2981,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(403);
+ setState(384);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
{
- setState(404);
+ setState(385);
match(T__53);
}
- setState(405);
+ setState(386);
expr(10);
}
break;
@@ -3106,11 +2995,11 @@ public class KickCParser extends Parser {
{
_localctx = new ExprAssignmentContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(406);
+ setState(387);
if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
- setState(407);
+ setState(388);
match(T__1);
- setState(408);
+ setState(389);
expr(8);
}
break;
@@ -3118,9 +3007,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprAssignmentCompoundContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(409);
+ setState(390);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(410);
+ setState(391);
_la = _input.LA(1);
if ( !(((((_la - 55)) & ~0x3f) == 0 && ((1L << (_la - 55)) & ((1L << (T__54 - 55)) | (1L << (T__55 - 55)) | (1L << (T__56 - 55)) | (1L << (T__57 - 55)) | (1L << (T__58 - 55)) | (1L << (T__59 - 55)) | (1L << (T__60 - 55)) | (1L << (T__61 - 55)) | (1L << (T__62 - 55)) | (1L << (T__63 - 55)))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -3130,7 +3019,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(411);
+ setState(392);
expr(7);
}
break;
@@ -3138,13 +3027,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprArrayContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(412);
+ setState(393);
if (!(precpred(_ctx, 24))) throw new FailedPredicateException(this, "precpred(_ctx, 24)");
- setState(413);
+ setState(394);
match(T__31);
- setState(414);
+ setState(395);
expr(0);
- setState(415);
+ setState(396);
match(T__32);
}
break;
@@ -3152,9 +3041,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprPostModContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(417);
+ setState(398);
if (!(precpred(_ctx, 21))) throw new FailedPredicateException(this, "precpred(_ctx, 21)");
- setState(418);
+ setState(399);
_la = _input.LA(1);
if ( !(_la==T__33 || _la==T__34) ) {
_errHandler.recoverInline(this);
@@ -3169,9 +3058,9 @@ public class KickCParser extends Parser {
}
}
}
- setState(423);
+ setState(404);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,41,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,40,_ctx);
}
}
}
@@ -3214,26 +3103,26 @@ public class KickCParser extends Parser {
public final ParameterListContext parameterList() throws RecognitionException {
ParameterListContext _localctx = new ParameterListContext(_ctx, getState());
- enterRule(_localctx, 44, RULE_parameterList);
+ enterRule(_localctx, 40, RULE_parameterList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(424);
+ setState(405);
expr(0);
- setState(429);
+ setState(410);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__15) {
+ while (_la==T__8) {
{
{
- setState(425);
- match(T__15);
- setState(426);
+ setState(406);
+ match(T__8);
+ setState(407);
expr(0);
}
}
- setState(431);
+ setState(412);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -3278,22 +3167,22 @@ public class KickCParser extends Parser {
public final AsmLinesContext asmLines() throws RecognitionException {
AsmLinesContext _localctx = new AsmLinesContext(_ctx, getState());
- enterRule(_localctx, 46, RULE_asmLines);
+ enterRule(_localctx, 42, RULE_asmLines);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(435);
+ setState(416);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 38)) & ~0x3f) == 0 && ((1L << (_la - 38)) & ((1L << (T__37 - 38)) | (1L << (T__64 - 38)) | (1L << (MNEMONIC - 38)) | (1L << (NAME - 38)))) != 0)) {
{
{
- setState(432);
+ setState(413);
asmLine();
}
}
- setState(437);
+ setState(418);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -3341,30 +3230,30 @@ public class KickCParser extends Parser {
public final AsmLineContext asmLine() throws RecognitionException {
AsmLineContext _localctx = new AsmLineContext(_ctx, getState());
- enterRule(_localctx, 48, RULE_asmLine);
+ enterRule(_localctx, 44, RULE_asmLine);
try {
- setState(441);
+ setState(422);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__37:
case NAME:
enterOuterAlt(_localctx, 1);
{
- setState(438);
+ setState(419);
asmLabel();
}
break;
case MNEMONIC:
enterOuterAlt(_localctx, 2);
{
- setState(439);
+ setState(420);
asmInstruction();
}
break;
case T__64:
enterOuterAlt(_localctx, 3);
{
- setState(440);
+ setState(421);
asmBytes();
}
break;
@@ -3431,40 +3320,40 @@ public class KickCParser extends Parser {
public final AsmLabelContext asmLabel() throws RecognitionException {
AsmLabelContext _localctx = new AsmLabelContext(_ctx, getState());
- enterRule(_localctx, 50, RULE_asmLabel);
+ enterRule(_localctx, 46, RULE_asmLabel);
int _la;
try {
- setState(450);
+ setState(431);
_errHandler.sync(this);
switch (_input.LA(1)) {
case NAME:
_localctx = new AsmLabelNameContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(443);
+ setState(424);
match(NAME);
- setState(444);
- match(T__16);
+ setState(425);
+ match(T__12);
}
break;
case T__37:
_localctx = new AsmLabelMultiContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(445);
+ setState(426);
match(T__37);
- setState(447);
+ setState(428);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NAME) {
{
- setState(446);
+ setState(427);
match(NAME);
}
}
- setState(449);
- match(T__16);
+ setState(430);
+ match(T__12);
}
break;
default:
@@ -3508,18 +3397,18 @@ public class KickCParser extends Parser {
public final AsmInstructionContext asmInstruction() throws RecognitionException {
AsmInstructionContext _localctx = new AsmInstructionContext(_ctx, getState());
- enterRule(_localctx, 52, RULE_asmInstruction);
+ enterRule(_localctx, 48, RULE_asmInstruction);
try {
enterOuterAlt(_localctx, 1);
{
- setState(452);
+ setState(433);
match(MNEMONIC);
- setState(454);
+ setState(435);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) {
case 1:
{
- setState(453);
+ setState(434);
asmParamMode();
}
break;
@@ -3565,28 +3454,28 @@ public class KickCParser extends Parser {
public final AsmBytesContext asmBytes() throws RecognitionException {
AsmBytesContext _localctx = new AsmBytesContext(_ctx, getState());
- enterRule(_localctx, 54, RULE_asmBytes);
+ enterRule(_localctx, 50, RULE_asmBytes);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(456);
+ setState(437);
match(T__64);
- setState(457);
+ setState(438);
asmExpr(0);
- setState(462);
+ setState(443);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__15) {
+ while (_la==T__8) {
{
{
- setState(458);
- match(T__15);
- setState(459);
+ setState(439);
+ match(T__8);
+ setState(440);
asmExpr(0);
}
}
- setState(464);
+ setState(445);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -3734,16 +3623,16 @@ public class KickCParser extends Parser {
public final AsmParamModeContext asmParamMode() throws RecognitionException {
AsmParamModeContext _localctx = new AsmParamModeContext(_ctx, getState());
- enterRule(_localctx, 56, RULE_asmParamMode);
+ enterRule(_localctx, 52, RULE_asmParamMode);
try {
- setState(488);
+ setState(469);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
case 1:
_localctx = new AsmModeAbsContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(465);
+ setState(446);
asmExpr(0);
}
break;
@@ -3751,9 +3640,9 @@ public class KickCParser extends Parser {
_localctx = new AsmModeImmContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(466);
+ setState(447);
match(T__65);
- setState(467);
+ setState(448);
asmExpr(0);
}
break;
@@ -3761,11 +3650,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeAbsXYContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(468);
+ setState(449);
asmExpr(0);
- setState(469);
- match(T__15);
- setState(470);
+ setState(450);
+ match(T__8);
+ setState(451);
match(NAME);
}
break;
@@ -3773,15 +3662,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndIdxXYContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(472);
+ setState(453);
match(T__3);
- setState(473);
+ setState(454);
asmExpr(0);
- setState(474);
+ setState(455);
match(T__4);
- setState(475);
- match(T__15);
- setState(476);
+ setState(456);
+ match(T__8);
+ setState(457);
match(NAME);
}
break;
@@ -3789,15 +3678,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIdxIndXYContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(478);
+ setState(459);
match(T__3);
- setState(479);
+ setState(460);
asmExpr(0);
- setState(480);
- match(T__15);
- setState(481);
+ setState(461);
+ match(T__8);
+ setState(462);
match(NAME);
- setState(482);
+ setState(463);
match(T__4);
}
break;
@@ -3805,11 +3694,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(484);
+ setState(465);
match(T__3);
- setState(485);
+ setState(466);
asmExpr(0);
- setState(486);
+ setState(467);
match(T__4);
}
break;
@@ -3992,14 +3881,14 @@ public class KickCParser extends Parser {
int _parentState = getState();
AsmExprContext _localctx = new AsmExprContext(_ctx, _parentState);
AsmExprContext _prevctx = _localctx;
- int _startState = 58;
- enterRecursionRule(_localctx, 58, RULE_asmExpr, _p);
+ int _startState = 54;
+ enterRecursionRule(_localctx, 54, RULE_asmExpr, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(504);
+ setState(485);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__31:
@@ -4008,11 +3897,11 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(491);
+ setState(472);
match(T__31);
- setState(492);
+ setState(473);
asmExpr(0);
- setState(493);
+ setState(474);
match(T__32);
}
break;
@@ -4024,7 +3913,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(495);
+ setState(476);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__35) | (1L << T__36) | (1L << T__44) | (1L << T__45))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -4034,7 +3923,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(496);
+ setState(477);
asmExpr(8);
}
break;
@@ -4043,7 +3932,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(497);
+ setState(478);
match(NAME);
}
break;
@@ -4052,7 +3941,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelRelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(498);
+ setState(479);
match(ASMREL);
}
break;
@@ -4061,11 +3950,11 @@ public class KickCParser extends Parser {
_localctx = new AsmExprReplaceContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(499);
+ setState(480);
match(T__5);
- setState(500);
+ setState(481);
match(NAME);
- setState(501);
+ setState(482);
match(T__6);
}
break;
@@ -4074,7 +3963,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprIntContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(502);
+ setState(483);
match(NUMBER);
}
break;
@@ -4083,7 +3972,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprCharContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(503);
+ setState(484);
match(CHAR);
}
break;
@@ -4091,24 +3980,24 @@ public class KickCParser extends Parser {
throw new NoViableAltException(this);
}
_ctx.stop = _input.LT(-1);
- setState(517);
+ setState(498);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,52,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,51,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(515);
+ setState(496);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
case 1:
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(506);
+ setState(487);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
- setState(507);
+ setState(488);
_la = _input.LA(1);
if ( !(_la==T__40 || _la==T__41) ) {
_errHandler.recoverInline(this);
@@ -4118,7 +4007,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(508);
+ setState(489);
asmExpr(10);
}
break;
@@ -4126,9 +4015,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(509);
+ setState(490);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(510);
+ setState(491);
_la = _input.LA(1);
if ( !(_la==T__30 || _la==T__42) ) {
_errHandler.recoverInline(this);
@@ -4138,7 +4027,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(511);
+ setState(492);
asmExpr(8);
}
break;
@@ -4146,9 +4035,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(512);
+ setState(493);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
- setState(513);
+ setState(494);
_la = _input.LA(1);
if ( !(_la==T__35 || _la==T__36) ) {
_errHandler.recoverInline(this);
@@ -4158,16 +4047,16 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(514);
+ setState(495);
asmExpr(7);
}
break;
}
}
}
- setState(519);
+ setState(500);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,52,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,51,_ctx);
}
}
}
@@ -4184,11 +4073,11 @@ public class KickCParser extends Parser {
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
- case 20:
+ case 18:
return typeDecl_sempred((TypeDeclContext)_localctx, predIndex);
- case 21:
+ case 19:
return expr_sempred((ExprContext)_localctx, predIndex);
- case 29:
+ case 27:
return asmExpr_sempred((AsmExprContext)_localctx, predIndex);
}
return true;
@@ -4246,209 +4135,201 @@ public class KickCParser extends Parser {
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3X\u020b\4\2\t\2\4"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3X\u01f8\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
- "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\3\2\3\2\3"+
- "\2\3\2\3\3\3\3\3\3\3\4\7\4G\n\4\f\4\16\4J\13\4\3\5\3\5\3\5\3\6\6\6P\n"+
- "\6\r\6\16\6Q\3\7\3\7\3\7\5\7W\n\7\3\b\7\bZ\n\b\f\b\16\b]\13\b\3\b\3\b"+
- "\7\ba\n\b\f\b\16\bd\13\b\3\b\3\b\3\b\5\bi\n\b\3\b\3\b\3\t\7\tn\n\t\f\t"+
- "\16\tq\13\t\3\t\3\t\7\tu\n\t\f\t\16\tx\13\t\3\t\3\t\3\t\5\t}\n\t\3\t\3"+
- "\t\3\t\5\t\u0082\n\t\3\t\3\t\3\n\3\n\5\n\u0088\n\n\3\n\3\n\3\13\3\13\3"+
- "\13\3\13\7\13\u0090\n\13\f\13\16\13\u0093\13\13\3\13\3\13\3\f\3\f\3\f"+
- "\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u00a3\n\f\3\r\3\r\3\r\7\r\u00a8"+
- "\n\r\f\r\16\r\u00ab\13\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\7\16\u00b4"+
- "\n\16\f\16\16\16\u00b7\13\16\3\17\3\17\3\17\7\17\u00bc\n\17\f\17\16\17"+
- "\u00bf\13\17\3\20\7\20\u00c2\n\20\f\20\16\20\u00c5\13\20\3\20\3\20\7\20"+
- "\u00c9\n\20\f\20\16\20\u00cc\13\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21"+
- "\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u00db\n\21\3\22\6\22\u00de\n\22\r"+
- "\22\16\22\u00df\3\23\3\23\3\23\5\23\u00e5\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\u00f2\n\23\3\23\5\23\u00f5\n\23\3"+
- "\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u00fe\n\23\3\23\3\23\3\23\3\23"+
- "\3\23\3\23\3\23\3\23\3\23\5\23\u0109\n\23\3\23\3\23\3\23\5\23\u010e\n"+
- "\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u0116\n\23\3\23\3\23\3\23\3\23"+
- "\3\23\3\23\3\23\5\23\u011f\n\23\3\24\7\24\u0122\n\24\f\24\16\24\u0125"+
- "\13\24\3\24\5\24\u0128\n\24\3\24\7\24\u012b\n\24\f\24\16\24\u012e\13\24"+
- "\3\24\3\24\3\24\5\24\u0133\n\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+
- "\3\25\3\25\5\25\u013f\n\25\3\26\3\26\3\26\3\26\5\26\u0145\n\26\3\26\3"+
- "\26\3\26\3\26\3\26\5\26\u014c\n\26\3\26\7\26\u014f\n\26\f\26\16\26\u0152"+
- "\13\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\5\27\u015c\n\27\3\27\3"+
- "\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3"+
- "\27\3\27\3\27\7\27\u0170\n\27\f\27\16\27\u0173\13\27\3\27\3\27\3\27\3"+
- "\27\3\27\3\27\3\27\5\27\u017c\n\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
- "\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
- "\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
- "\3\27\3\27\3\27\3\27\3\27\7\27\u01a6\n\27\f\27\16\27\u01a9\13\27\3\30"+
- "\3\30\3\30\7\30\u01ae\n\30\f\30\16\30\u01b1\13\30\3\31\7\31\u01b4\n\31"+
- "\f\31\16\31\u01b7\13\31\3\32\3\32\3\32\5\32\u01bc\n\32\3\33\3\33\3\33"+
- "\3\33\5\33\u01c2\n\33\3\33\5\33\u01c5\n\33\3\34\3\34\5\34\u01c9\n\34\3"+
- "\35\3\35\3\35\3\35\7\35\u01cf\n\35\f\35\16\35\u01d2\13\35\3\36\3\36\3"+
- "\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3"+
- "\36\3\36\3\36\3\36\3\36\3\36\3\36\5\36\u01eb\n\36\3\37\3\37\3\37\3\37"+
- "\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\5\37\u01fb\n\37\3\37"+
- "\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\7\37\u0206\n\37\f\37\16\37\u0209"+
- "\13\37\3\37\2\5*,< \2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60"+
- "\62\64\668:<\2\r\4\2\21\21KK\3\2$%\3\2&*\3\2/\60\3\2+,\4\2!!-.\3\2&\'"+
- "\3\2/\64\3\29B\4\2&\'/\60\4\2!!--\2\u0252\2>\3\2\2\2\4B\3\2\2\2\6H\3\2"+
- "\2\2\bK\3\2\2\2\nO\3\2\2\2\fV\3\2\2\2\16[\3\2\2\2\20o\3\2\2\2\22\u0085"+
- "\3\2\2\2\24\u008b\3\2\2\2\26\u00a2\3\2\2\2\30\u00a4\3\2\2\2\32\u00ac\3"+
- "\2\2\2\34\u00b8\3\2\2\2\36\u00c3\3\2\2\2 \u00da\3\2\2\2\"\u00dd\3\2\2"+
- "\2$\u011e\3\2\2\2&\u0123\3\2\2\2(\u013e\3\2\2\2*\u0144\3\2\2\2,\u017b"+
- "\3\2\2\2.\u01aa\3\2\2\2\60\u01b5\3\2\2\2\62\u01bb\3\2\2\2\64\u01c4\3\2"+
- "\2\2\66\u01c6\3\2\2\28\u01ca\3\2\2\2:\u01ea\3\2\2\2<\u01fa\3\2\2\2>?\5"+
- "\6\4\2?@\5\n\6\2@A\7\2\2\3A\3\3\2\2\2BC\5\60\31\2CD\7\2\2\3D\5\3\2\2\2"+
- "EG\5\b\5\2FE\3\2\2\2GJ\3\2\2\2HF\3\2\2\2HI\3\2\2\2I\7\3\2\2\2JH\3\2\2"+
- "\2KL\7\3\2\2LM\7H\2\2M\t\3\2\2\2NP\5\f\7\2ON\3\2\2\2PQ\3\2\2\2QO\3\2\2"+
- "\2QR\3\2\2\2R\13\3\2\2\2SW\5\16\b\2TW\5\20\t\2UW\5\22\n\2VS\3\2\2\2VT"+
- "\3\2\2\2VU\3\2\2\2W\r\3\2\2\2XZ\5 \21\2YX\3\2\2\2Z]\3\2\2\2[Y\3\2\2\2"+
- "[\\\3\2\2\2\\^\3\2\2\2][\3\2\2\2^b\5*\26\2_a\5 \21\2`_\3\2\2\2ad\3\2\2"+
- "\2b`\3\2\2\2bc\3\2\2\2ce\3\2\2\2db\3\2\2\2eh\7T\2\2fg\7\4\2\2gi\5,\27"+
- "\2hf\3\2\2\2hi\3\2\2\2ij\3\2\2\2jk\7\5\2\2k\17\3\2\2\2ln\5 \21\2ml\3\2"+
- "\2\2nq\3\2\2\2om\3\2\2\2op\3\2\2\2pr\3\2\2\2qo\3\2\2\2rv\5*\26\2su\5 "+
- "\21\2ts\3\2\2\2ux\3\2\2\2vt\3\2\2\2vw\3\2\2\2wy\3\2\2\2xv\3\2\2\2yz\7"+
- "T\2\2z|\7\6\2\2{}\5\34\17\2|{\3\2\2\2|}\3\2\2\2}~\3\2\2\2~\177\7\7\2\2"+
- "\177\u0081\7\b\2\2\u0080\u0082\5\"\22\2\u0081\u0080\3\2\2\2\u0081\u0082"+
- "\3\2\2\2\u0082\u0083\3\2\2\2\u0083\u0084\7\t\2\2\u0084\21\3\2\2\2\u0085"+
- "\u0087\7\n\2\2\u0086\u0088\5\24\13\2\u0087\u0086\3\2\2\2\u0087\u0088\3"+
- "\2\2\2\u0088\u0089\3\2\2\2\u0089\u008a\7F\2\2\u008a\23\3\2\2\2\u008b\u008c"+
- "\7\6\2\2\u008c\u0091\5\26\f\2\u008d\u008e\7\5\2\2\u008e\u0090\5\26\f\2"+
- "\u008f\u008d\3\2\2\2\u0090\u0093\3\2\2\2\u0091\u008f\3\2\2\2\u0091\u0092"+
- "\3\2\2\2\u0092\u0094\3\2\2\2\u0093\u0091\3\2\2\2\u0094\u0095\7\7\2\2\u0095"+
- "\25\3\2\2\2\u0096\u0097\7\13\2\2\u0097\u00a3\5\30\r\2\u0098\u0099\7\f"+
- "\2\2\u0099\u00a3\7H\2\2\u009a\u009b\7\r\2\2\u009b\u00a3\5\32\16\2\u009c"+
- "\u009d\7\16\2\2\u009d\u00a3\7K\2\2\u009e\u009f\7\17\2\2\u009f\u00a3\7"+
- "K\2\2\u00a0\u00a1\7\20\2\2\u00a1\u00a3\t\2\2\2\u00a2\u0096\3\2\2\2\u00a2"+
- "\u0098\3\2\2\2\u00a2\u009a\3\2\2\2\u00a2\u009c\3\2\2\2\u00a2\u009e\3\2"+
- "\2\2\u00a2\u00a0\3\2\2\2\u00a3\27\3\2\2\2\u00a4\u00a9\7H\2\2\u00a5\u00a6"+
- "\7\22\2\2\u00a6\u00a8\7H\2\2\u00a7\u00a5\3\2\2\2\u00a8\u00ab\3\2\2\2\u00a9"+
- "\u00a7\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\31\3\2\2\2\u00ab\u00a9\3\2\2"+
- "\2\u00ac\u00ad\7T\2\2\u00ad\u00ae\7\23\2\2\u00ae\u00b5\5,\27\2\u00af\u00b0"+
- "\7\22\2\2\u00b0\u00b1\7T\2\2\u00b1\u00b2\7\23\2\2\u00b2\u00b4\5,\27\2"+
- "\u00b3\u00af\3\2\2\2\u00b4\u00b7\3\2\2\2\u00b5\u00b3\3\2\2\2\u00b5\u00b6"+
- "\3\2\2\2\u00b6\33\3\2\2\2\u00b7\u00b5\3\2\2\2\u00b8\u00bd\5\36\20\2\u00b9"+
- "\u00ba\7\22\2\2\u00ba\u00bc\5\36\20\2\u00bb\u00b9\3\2\2\2\u00bc\u00bf"+
- "\3\2\2\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be\35\3\2\2\2\u00bf"+
- "\u00bd\3\2\2\2\u00c0\u00c2\5 \21\2\u00c1\u00c0\3\2\2\2\u00c2\u00c5\3\2"+
- "\2\2\u00c3\u00c1\3\2\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c6\3\2\2\2\u00c5"+
- "\u00c3\3\2\2\2\u00c6\u00ca\5*\26\2\u00c7\u00c9\5 \21\2\u00c8\u00c7\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\u00ce\7T\2\2\u00ce\37\3\2\2\2"+
- "\u00cf\u00db\7\24\2\2\u00d0\u00db\7\25\2\2\u00d1\u00d2\7\26\2\2\u00d2"+
- "\u00d3\7\6\2\2\u00d3\u00d4\7K\2\2\u00d4\u00db\7\7\2\2\u00d5\u00d6\7\27"+
- "\2\2\u00d6\u00d7\7\6\2\2\u00d7\u00d8\7T\2\2\u00d8\u00db\7\7\2\2\u00d9"+
- "\u00db\7\21\2\2\u00da\u00cf\3\2\2\2\u00da\u00d0\3\2\2\2\u00da\u00d1\3"+
- "\2\2\2\u00da\u00d5\3\2\2\2\u00da\u00d9\3\2\2\2\u00db!\3\2\2\2\u00dc\u00de"+
- "\5$\23\2\u00dd\u00dc\3\2\2\2\u00de\u00df\3\2\2\2\u00df\u00dd\3\2\2\2\u00df"+
- "\u00e0\3\2\2\2\u00e0#\3\2\2\2\u00e1\u011f\5\16\b\2\u00e2\u00e4\7\b\2\2"+
- "\u00e3\u00e5\5\"\22\2\u00e4\u00e3\3\2\2\2\u00e4\u00e5\3\2\2\2\u00e5\u00e6"+
- "\3\2\2\2\u00e6\u011f\7\t\2\2\u00e7\u00e8\5,\27\2\u00e8\u00e9\7\5\2\2\u00e9"+
- "\u011f\3\2\2\2\u00ea\u00eb\7\30\2\2\u00eb\u00ec\7\6\2\2\u00ec\u00ed\5"+
- ",\27\2\u00ed\u00ee\7\7\2\2\u00ee\u00f1\5$\23\2\u00ef\u00f0\7\31\2\2\u00f0"+
- "\u00f2\5$\23\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2\u011f\3\2"+
- "\2\2\u00f3\u00f5\5 \21\2\u00f4\u00f3\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5"+
- "\u00f6\3\2\2\2\u00f6\u00f7\7\32\2\2\u00f7\u00f8\7\6\2\2\u00f8\u00f9\5"+
- ",\27\2\u00f9\u00fa\7\7\2\2\u00fa\u00fb\5$\23\2\u00fb\u011f\3\2\2\2\u00fc"+
- "\u00fe\5 \21\2\u00fd\u00fc\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe\u00ff\3\2"+
- "\2\2\u00ff\u0100\7\33\2\2\u0100\u0101\5$\23\2\u0101\u0102\7\32\2\2\u0102"+
- "\u0103\7\6\2\2\u0103\u0104\5,\27\2\u0104\u0105\7\7\2\2\u0105\u0106\7\5"+
- "\2\2\u0106\u011f\3\2\2\2\u0107\u0109\5 \21\2\u0108\u0107\3\2\2\2\u0108"+
- "\u0109\3\2\2\2\u0109\u010a\3\2\2\2\u010a\u010b\7\34\2\2\u010b\u010d\7"+
- "\6\2\2\u010c\u010e\5&\24\2\u010d\u010c\3\2\2\2\u010d\u010e\3\2\2\2\u010e"+
- "\u010f\3\2\2\2\u010f\u0110\5(\25\2\u0110\u0111\7\7\2\2\u0111\u0112\5$"+
- "\23\2\u0112\u011f\3\2\2\2\u0113\u0115\7\35\2\2\u0114\u0116\5,\27\2\u0115"+
- "\u0114\3\2\2\2\u0115\u0116\3\2\2\2\u0116\u0117\3\2\2\2\u0117\u011f\7\5"+
- "\2\2\u0118\u0119\7\36\2\2\u0119\u011a\7\b\2\2\u011a\u011b\5\60\31\2\u011b"+
- "\u011c\7\t\2\2\u011c\u011f\3\2\2\2\u011d\u011f\5\22\n\2\u011e\u00e1\3"+
- "\2\2\2\u011e\u00e2\3\2\2\2\u011e\u00e7\3\2\2\2\u011e\u00ea\3\2\2\2\u011e"+
- "\u00f4\3\2\2\2\u011e\u00fd\3\2\2\2\u011e\u0108\3\2\2\2\u011e\u0113\3\2"+
- "\2\2\u011e\u0118\3\2\2\2\u011e\u011d\3\2\2\2\u011f%\3\2\2\2\u0120\u0122"+
- "\5 \21\2\u0121\u0120\3\2\2\2\u0122\u0125\3\2\2\2\u0123\u0121\3\2\2\2\u0123"+
- "\u0124\3\2\2\2\u0124\u0127\3\2\2\2\u0125\u0123\3\2\2\2\u0126\u0128\5*"+
- "\26\2\u0127\u0126\3\2\2\2\u0127\u0128\3\2\2\2\u0128\u012c\3\2\2\2\u0129"+
- "\u012b\5 \21\2\u012a\u0129\3\2\2\2\u012b\u012e\3\2\2\2\u012c\u012a\3\2"+
- "\2\2\u012c\u012d\3\2\2\2\u012d\u012f\3\2\2\2\u012e\u012c\3\2\2\2\u012f"+
- "\u0132\7T\2\2\u0130\u0131\7\4\2\2\u0131\u0133\5,\27\2\u0132\u0130\3\2"+
- "\2\2\u0132\u0133\3\2\2\2\u0133\'\3\2\2\2\u0134\u0135\7\5\2\2\u0135\u0136"+
- "\5,\27\2\u0136\u0137\7\5\2\2\u0137\u0138\5,\27\2\u0138\u013f\3\2\2\2\u0139"+
- "\u013a\7\23\2\2\u013a\u013b\5,\27\2\u013b\u013c\7\37\2\2\u013c\u013d\5"+
- ",\27\2\u013d\u013f\3\2\2\2\u013e\u0134\3\2\2\2\u013e\u0139\3\2\2\2\u013f"+
- ")\3\2\2\2\u0140\u0141\b\26\1\2\u0141\u0145\7G\2\2\u0142\u0143\7 \2\2\u0143"+
- "\u0145\7G\2\2\u0144\u0140\3\2\2\2\u0144\u0142\3\2\2\2\u0145\u0150\3\2"+
- "\2\2\u0146\u0147\f\4\2\2\u0147\u014f\7!\2\2\u0148\u0149\f\3\2\2\u0149"+
- "\u014b\7\"\2\2\u014a\u014c\5,\27\2\u014b\u014a\3\2\2\2\u014b\u014c\3\2"+
- "\2\2\u014c\u014d\3\2\2\2\u014d\u014f\7#\2\2\u014e\u0146\3\2\2\2\u014e"+
- "\u0148\3\2\2\2\u014f\u0152\3\2\2\2\u0150\u014e\3\2\2\2\u0150\u0151\3\2"+
- "\2\2\u0151+\3\2\2\2\u0152\u0150\3\2\2\2\u0153\u0154\b\27\1\2\u0154\u0155"+
- "\7\6\2\2\u0155\u0156\5,\27\2\u0156\u0157\7\7\2\2\u0157\u017c\3\2\2\2\u0158"+
- "\u0159\7T\2\2\u0159\u015b\7\6\2\2\u015a\u015c\5.\30\2\u015b\u015a\3\2"+
- "\2\2\u015b\u015c\3\2\2\2\u015c\u015d\3\2\2\2\u015d\u017c\7\7\2\2\u015e"+
- "\u015f\7\6\2\2\u015f\u0160\5*\26\2\u0160\u0161\7\7\2\2\u0161\u0162\5,"+
- "\27\31\u0162\u017c\3\2\2\2\u0163\u0164\t\3\2\2\u0164\u017c\5,\27\30\u0165"+
- "\u0166\7!\2\2\u0166\u017c\5,\27\26\u0167\u0168\t\4\2\2\u0168\u017c\5,"+
- "\27\25\u0169\u016a\t\5\2\2\u016a\u017c\5,\27\21\u016b\u016c\7\b\2\2\u016c"+
- "\u0171\5,\27\2\u016d\u016e\7\22\2\2\u016e\u0170\5,\27\2\u016f\u016d\3"+
- "\2\2\2\u0170\u0173\3\2\2\2\u0171\u016f\3\2\2\2\u0171\u0172\3\2\2\2\u0172"+
- "\u0174\3\2\2\2\u0173\u0171\3\2\2\2\u0174\u0175\7\t\2\2\u0175\u017c\3\2"+
- "\2\2\u0176\u017c\7T\2\2\u0177\u017c\7K\2\2\u0178\u017c\7H\2\2\u0179\u017c"+
- "\7I\2\2\u017a\u017c\7J\2\2\u017b\u0153\3\2\2\2\u017b\u0158\3\2\2\2\u017b"+
- "\u015e\3\2\2\2\u017b\u0163\3\2\2\2\u017b\u0165\3\2\2\2\u017b\u0167\3\2"+
- "\2\2\u017b\u0169\3\2\2\2\u017b\u016b\3\2\2\2\u017b\u0176\3\2\2\2\u017b"+
- "\u0177\3\2\2\2\u017b\u0178\3\2\2\2\u017b\u0179\3\2\2\2\u017b\u017a\3\2"+
- "\2\2\u017c\u01a7\3\2\2\2\u017d\u017e\f\24\2\2\u017e\u017f\t\6\2\2\u017f"+
- "\u01a6\5,\27\25\u0180\u0181\f\23\2\2\u0181\u0182\t\7\2\2\u0182\u01a6\5"+
- ",\27\24\u0183\u0184\f\22\2\2\u0184\u0185\t\b\2\2\u0185\u01a6\5,\27\23"+
- "\u0186\u0187\f\20\2\2\u0187\u0188\t\t\2\2\u0188\u01a6\5,\27\21\u0189\u018a"+
- "\f\17\2\2\u018a\u018b\7)\2\2\u018b\u01a6\5,\27\20\u018c\u018d\f\16\2\2"+
- "\u018d\u018e\7\65\2\2\u018e\u01a6\5,\27\17\u018f\u0190\f\r\2\2\u0190\u0191"+
- "\7\66\2\2\u0191\u01a6\5,\27\16\u0192\u0193\f\f\2\2\u0193\u0194\7\67\2"+
- "\2\u0194\u01a6\5,\27\r\u0195\u0196\f\13\2\2\u0196\u0197\78\2\2\u0197\u01a6"+
- "\5,\27\f\u0198\u0199\f\n\2\2\u0199\u019a\7\4\2\2\u019a\u01a6\5,\27\n\u019b"+
- "\u019c\f\t\2\2\u019c\u019d\t\n\2\2\u019d\u01a6\5,\27\t\u019e\u019f\f\32"+
- "\2\2\u019f\u01a0\7\"\2\2\u01a0\u01a1\5,\27\2\u01a1\u01a2\7#\2\2\u01a2"+
- "\u01a6\3\2\2\2\u01a3\u01a4\f\27\2\2\u01a4\u01a6\t\3\2\2\u01a5\u017d\3"+
- "\2\2\2\u01a5\u0180\3\2\2\2\u01a5\u0183\3\2\2\2\u01a5\u0186\3\2\2\2\u01a5"+
- "\u0189\3\2\2\2\u01a5\u018c\3\2\2\2\u01a5\u018f\3\2\2\2\u01a5\u0192\3\2"+
- "\2\2\u01a5\u0195\3\2\2\2\u01a5\u0198\3\2\2\2\u01a5\u019b\3\2\2\2\u01a5"+
- "\u019e\3\2\2\2\u01a5\u01a3\3\2\2\2\u01a6\u01a9\3\2\2\2\u01a7\u01a5\3\2"+
- "\2\2\u01a7\u01a8\3\2\2\2\u01a8-\3\2\2\2\u01a9\u01a7\3\2\2\2\u01aa\u01af"+
- "\5,\27\2\u01ab\u01ac\7\22\2\2\u01ac\u01ae\5,\27\2\u01ad\u01ab\3\2\2\2"+
- "\u01ae\u01b1\3\2\2\2\u01af\u01ad\3\2\2\2\u01af\u01b0\3\2\2\2\u01b0/\3"+
- "\2\2\2\u01b1\u01af\3\2\2\2\u01b2\u01b4\5\62\32\2\u01b3\u01b2\3\2\2\2\u01b4"+
- "\u01b7\3\2\2\2\u01b5\u01b3\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\61\3\2\2"+
- "\2\u01b7\u01b5\3\2\2\2\u01b8\u01bc\5\64\33\2\u01b9\u01bc\5\66\34\2\u01ba"+
- "\u01bc\58\35\2\u01bb\u01b8\3\2\2\2\u01bb\u01b9\3\2\2\2\u01bb\u01ba\3\2"+
- "\2\2\u01bc\63\3\2\2\2\u01bd\u01be\7T\2\2\u01be\u01c5\7\23\2\2\u01bf\u01c1"+
- "\7(\2\2\u01c0\u01c2\7T\2\2\u01c1\u01c0\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2"+
- "\u01c3\3\2\2\2\u01c3\u01c5\7\23\2\2\u01c4\u01bd\3\2\2\2\u01c4\u01bf\3"+
- "\2\2\2\u01c5\65\3\2\2\2\u01c6\u01c8\7E\2\2\u01c7\u01c9\5:\36\2\u01c8\u01c7"+
- "\3\2\2\2\u01c8\u01c9\3\2\2\2\u01c9\67\3\2\2\2\u01ca\u01cb\7C\2\2\u01cb"+
- "\u01d0\5<\37\2\u01cc\u01cd\7\22\2\2\u01cd\u01cf\5<\37\2\u01ce\u01cc\3"+
- "\2\2\2\u01cf\u01d2\3\2\2\2\u01d0\u01ce\3\2\2\2\u01d0\u01d1\3\2\2\2\u01d1"+
- "9\3\2\2\2\u01d2\u01d0\3\2\2\2\u01d3\u01eb\5<\37\2\u01d4\u01d5\7D\2\2\u01d5"+
- "\u01eb\5<\37\2\u01d6\u01d7\5<\37\2\u01d7\u01d8\7\22\2\2\u01d8\u01d9\7"+
- "T\2\2\u01d9\u01eb\3\2\2\2\u01da\u01db\7\6\2\2\u01db\u01dc\5<\37\2\u01dc"+
- "\u01dd\7\7\2\2\u01dd\u01de\7\22\2\2\u01de\u01df\7T\2\2\u01df\u01eb\3\2"+
- "\2\2\u01e0\u01e1\7\6\2\2\u01e1\u01e2\5<\37\2\u01e2\u01e3\7\22\2\2\u01e3"+
- "\u01e4\7T\2\2\u01e4\u01e5\7\7\2\2\u01e5\u01eb\3\2\2\2\u01e6\u01e7\7\6"+
- "\2\2\u01e7\u01e8\5<\37\2\u01e8\u01e9\7\7\2\2\u01e9\u01eb\3\2\2\2\u01ea"+
- "\u01d3\3\2\2\2\u01ea\u01d4\3\2\2\2\u01ea\u01d6\3\2\2\2\u01ea\u01da\3\2"+
- "\2\2\u01ea\u01e0\3\2\2\2\u01ea\u01e6\3\2\2\2\u01eb;\3\2\2\2\u01ec\u01ed"+
- "\b\37\1\2\u01ed\u01ee\7\"\2\2\u01ee\u01ef\5<\37\2\u01ef\u01f0\7#\2\2\u01f0"+
- "\u01fb\3\2\2\2\u01f1\u01f2\t\13\2\2\u01f2\u01fb\5<\37\n\u01f3\u01fb\7"+
- "T\2\2\u01f4\u01fb\7U\2\2\u01f5\u01f6\7\b\2\2\u01f6\u01f7\7T\2\2\u01f7"+
- "\u01fb\7\t\2\2\u01f8\u01fb\7K\2\2\u01f9\u01fb\7I\2\2\u01fa\u01ec\3\2\2"+
- "\2\u01fa\u01f1\3\2\2\2\u01fa\u01f3\3\2\2\2\u01fa\u01f4\3\2\2\2\u01fa\u01f5"+
- "\3\2\2\2\u01fa\u01f8\3\2\2\2\u01fa\u01f9\3\2\2\2\u01fb\u0207\3\2\2\2\u01fc"+
- "\u01fd\f\13\2\2\u01fd\u01fe\t\6\2\2\u01fe\u0206\5<\37\f\u01ff\u0200\f"+
- "\t\2\2\u0200\u0201\t\f\2\2\u0201\u0206\5<\37\n\u0202\u0203\f\b\2\2\u0203"+
- "\u0204\t\b\2\2\u0204\u0206\5<\37\t\u0205\u01fc\3\2\2\2\u0205\u01ff\3\2"+
- "\2\2\u0205\u0202\3\2\2\2\u0206\u0209\3\2\2\2\u0207\u0205\3\2\2\2\u0207"+
- "\u0208\3\2\2\2\u0208=\3\2\2\2\u0209\u0207\3\2\2\2\67HQV[bhov|\u0081\u0087"+
- "\u0091\u00a2\u00a9\u00b5\u00bd\u00c3\u00ca\u00da\u00df\u00e4\u00f1\u00f4"+
- "\u00fd\u0108\u010d\u0115\u011e\u0123\u0127\u012c\u0132\u013e\u0144\u014b"+
- "\u014e\u0150\u015b\u0171\u017b\u01a5\u01a7\u01af\u01b5\u01bb\u01c1\u01c4"+
- "\u01c8\u01d0\u01ea\u01fa\u0205\u0207";
+ "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3"+
+ "\4\7\4C\n\4\f\4\16\4F\13\4\3\5\3\5\3\5\3\6\6\6L\n\6\r\6\16\6M\3\7\3\7"+
+ "\3\7\5\7S\n\7\3\b\7\bV\n\b\f\b\16\bY\13\b\3\b\3\b\7\b]\n\b\f\b\16\b`\13"+
+ "\b\3\b\3\b\3\b\5\be\n\b\3\b\3\b\3\t\7\tj\n\t\f\t\16\tm\13\t\3\t\3\t\7"+
+ "\tq\n\t\f\t\16\tt\13\t\3\t\3\t\3\t\5\ty\n\t\3\t\3\t\3\t\5\t~\n\t\3\t\3"+
+ "\t\3\n\3\n\5\n\u0084\n\n\3\n\3\n\3\13\3\13\3\13\3\13\7\13\u008c\n\13\f"+
+ "\13\16\13\u008f\13\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3"+
+ "\f\3\f\3\f\3\f\3\f\3\f\5\f\u00a2\n\f\5\f\u00a4\n\f\3\r\3\r\3\r\7\r\u00a9"+
+ "\n\r\f\r\16\r\u00ac\13\r\3\16\7\16\u00af\n\16\f\16\16\16\u00b2\13\16\3"+
+ "\16\3\16\7\16\u00b6\n\16\f\16\16\16\u00b9\13\16\3\16\3\16\3\17\3\17\3"+
+ "\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u00c8\n\17\3\20\6\20"+
+ "\u00cb\n\20\r\20\16\20\u00cc\3\21\3\21\3\21\5\21\u00d2\n\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\u00df\n\21\3\21\5\21"+
+ "\u00e2\n\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u00eb\n\21\3\21\3"+
+ "\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u00f6\n\21\3\21\3\21\3\21"+
+ "\5\21\u00fb\n\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u0103\n\21\3\21\3"+
+ "\21\3\21\3\21\3\21\3\21\3\21\5\21\u010c\n\21\3\22\7\22\u010f\n\22\f\22"+
+ "\16\22\u0112\13\22\3\22\5\22\u0115\n\22\3\22\7\22\u0118\n\22\f\22\16\22"+
+ "\u011b\13\22\3\22\3\22\3\22\5\22\u0120\n\22\3\23\3\23\3\23\3\23\3\23\3"+
+ "\23\3\23\3\23\3\23\3\23\5\23\u012c\n\23\3\24\3\24\3\24\3\24\5\24\u0132"+
+ "\n\24\3\24\3\24\3\24\3\24\3\24\5\24\u0139\n\24\3\24\7\24\u013c\n\24\f"+
+ "\24\16\24\u013f\13\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25\u0149"+
+ "\n\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+
+ "\3\25\3\25\3\25\3\25\3\25\7\25\u015d\n\25\f\25\16\25\u0160\13\25\3\25"+
+ "\3\25\3\25\3\25\3\25\3\25\3\25\5\25\u0169\n\25\3\25\3\25\3\25\3\25\3\25"+
+ "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+
+ "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+
+ "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\7\25\u0193\n\25\f\25\16\25\u0196\13"+
+ "\25\3\26\3\26\3\26\7\26\u019b\n\26\f\26\16\26\u019e\13\26\3\27\7\27\u01a1"+
+ "\n\27\f\27\16\27\u01a4\13\27\3\30\3\30\3\30\5\30\u01a9\n\30\3\31\3\31"+
+ "\3\31\3\31\5\31\u01af\n\31\3\31\5\31\u01b2\n\31\3\32\3\32\5\32\u01b6\n"+
+ "\32\3\33\3\33\3\33\3\33\7\33\u01bc\n\33\f\33\16\33\u01bf\13\33\3\34\3"+
+ "\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3"+
+ "\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\5\34\u01d8\n\34\3\35\3\35\3\35"+
+ "\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\5\35\u01e8\n\35"+
+ "\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\7\35\u01f3\n\35\f\35\16"+
+ "\35\u01f6\13\35\3\35\2\5&(8\36\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36"+
+ " \"$&(*,.\60\62\64\668\2\f\3\2$%\3\2&*\3\2/\60\3\2+,\4\2!!-.\3\2&\'\3"+
+ "\2/\64\3\29B\4\2&\'/\60\4\2!!--\2\u0240\2:\3\2\2\2\4>\3\2\2\2\6D\3\2\2"+
+ "\2\bG\3\2\2\2\nK\3\2\2\2\fR\3\2\2\2\16W\3\2\2\2\20k\3\2\2\2\22\u0081\3"+
+ "\2\2\2\24\u0087\3\2\2\2\26\u00a3\3\2\2\2\30\u00a5\3\2\2\2\32\u00b0\3\2"+
+ "\2\2\34\u00c7\3\2\2\2\36\u00ca\3\2\2\2 \u010b\3\2\2\2\"\u0110\3\2\2\2"+
+ "$\u012b\3\2\2\2&\u0131\3\2\2\2(\u0168\3\2\2\2*\u0197\3\2\2\2,\u01a2\3"+
+ "\2\2\2.\u01a8\3\2\2\2\60\u01b1\3\2\2\2\62\u01b3\3\2\2\2\64\u01b7\3\2\2"+
+ "\2\66\u01d7\3\2\2\28\u01e7\3\2\2\2:;\5\6\4\2;<\5\n\6\2<=\7\2\2\3=\3\3"+
+ "\2\2\2>?\5,\27\2?@\7\2\2\3@\5\3\2\2\2AC\5\b\5\2BA\3\2\2\2CF\3\2\2\2DB"+
+ "\3\2\2\2DE\3\2\2\2E\7\3\2\2\2FD\3\2\2\2GH\7\3\2\2HI\7H\2\2I\t\3\2\2\2"+
+ "JL\5\f\7\2KJ\3\2\2\2LM\3\2\2\2MK\3\2\2\2MN\3\2\2\2N\13\3\2\2\2OS\5\16"+
+ "\b\2PS\5\20\t\2QS\5\22\n\2RO\3\2\2\2RP\3\2\2\2RQ\3\2\2\2S\r\3\2\2\2TV"+
+ "\5\34\17\2UT\3\2\2\2VY\3\2\2\2WU\3\2\2\2WX\3\2\2\2XZ\3\2\2\2YW\3\2\2\2"+
+ "Z^\5&\24\2[]\5\34\17\2\\[\3\2\2\2]`\3\2\2\2^\\\3\2\2\2^_\3\2\2\2_a\3\2"+
+ "\2\2`^\3\2\2\2ad\7T\2\2bc\7\4\2\2ce\5(\25\2db\3\2\2\2de\3\2\2\2ef\3\2"+
+ "\2\2fg\7\5\2\2g\17\3\2\2\2hj\5\34\17\2ih\3\2\2\2jm\3\2\2\2ki\3\2\2\2k"+
+ "l\3\2\2\2ln\3\2\2\2mk\3\2\2\2nr\5&\24\2oq\5\34\17\2po\3\2\2\2qt\3\2\2"+
+ "\2rp\3\2\2\2rs\3\2\2\2su\3\2\2\2tr\3\2\2\2uv\7T\2\2vx\7\6\2\2wy\5\30\r"+
+ "\2xw\3\2\2\2xy\3\2\2\2yz\3\2\2\2z{\7\7\2\2{}\7\b\2\2|~\5\36\20\2}|\3\2"+
+ "\2\2}~\3\2\2\2~\177\3\2\2\2\177\u0080\7\t\2\2\u0080\21\3\2\2\2\u0081\u0083"+
+ "\7\n\2\2\u0082\u0084\5\24\13\2\u0083\u0082\3\2\2\2\u0083\u0084\3\2\2\2"+
+ "\u0084\u0085\3\2\2\2\u0085\u0086\7F\2\2\u0086\23\3\2\2\2\u0087\u0088\7"+
+ "\6\2\2\u0088\u008d\5\26\f\2\u0089\u008a\7\13\2\2\u008a\u008c\5\26\f\2"+
+ "\u008b\u0089\3\2\2\2\u008c\u008f\3\2\2\2\u008d\u008b\3\2\2\2\u008d\u008e"+
+ "\3\2\2\2\u008e\u0090\3\2\2\2\u008f\u008d\3\2\2\2\u0090\u0091\7\7\2\2\u0091"+
+ "\25\3\2\2\2\u0092\u0093\7\f\2\2\u0093\u00a4\7H\2\2\u0094\u0095\7\r\2\2"+
+ "\u0095\u00a4\7H\2\2\u0096\u0097\7\16\2\2\u0097\u0098\7T\2\2\u0098\u0099"+
+ "\7\17\2\2\u0099\u00a4\5(\25\2\u009a\u009b\7\20\2\2\u009b\u00a4\7K\2\2"+
+ "\u009c\u009d\7\21\2\2\u009d\u00a4\7K\2\2\u009e\u00a1\7\22\2\2\u009f\u00a2"+
+ "\7\23\2\2\u00a0\u00a2\5(\25\2\u00a1\u009f\3\2\2\2\u00a1\u00a0\3\2\2\2"+
+ "\u00a2\u00a4\3\2\2\2\u00a3\u0092\3\2\2\2\u00a3\u0094\3\2\2\2\u00a3\u0096"+
+ "\3\2\2\2\u00a3\u009a\3\2\2\2\u00a3\u009c\3\2\2\2\u00a3\u009e\3\2\2\2\u00a4"+
+ "\27\3\2\2\2\u00a5\u00aa\5\32\16\2\u00a6\u00a7\7\13\2\2\u00a7\u00a9\5\32"+
+ "\16\2\u00a8\u00a6\3\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00aa"+
+ "\u00ab\3\2\2\2\u00ab\31\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ad\u00af\5\34\17"+
+ "\2\u00ae\u00ad\3\2\2\2\u00af\u00b2\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1"+
+ "\3\2\2\2\u00b1\u00b3\3\2\2\2\u00b2\u00b0\3\2\2\2\u00b3\u00b7\5&\24\2\u00b4"+
+ "\u00b6\5\34\17\2\u00b5\u00b4\3\2\2\2\u00b6\u00b9\3\2\2\2\u00b7\u00b5\3"+
+ "\2\2\2\u00b7\u00b8\3\2\2\2\u00b8\u00ba\3\2\2\2\u00b9\u00b7\3\2\2\2\u00ba"+
+ "\u00bb\7T\2\2\u00bb\33\3\2\2\2\u00bc\u00c8\7\24\2\2\u00bd\u00c8\7\25\2"+
+ "\2\u00be\u00bf\7\26\2\2\u00bf\u00c0\7\6\2\2\u00c0\u00c1\7K\2\2\u00c1\u00c8"+
+ "\7\7\2\2\u00c2\u00c3\7\27\2\2\u00c3\u00c4\7\6\2\2\u00c4\u00c5\7T\2\2\u00c5"+
+ "\u00c8\7\7\2\2\u00c6\u00c8\7\23\2\2\u00c7\u00bc\3\2\2\2\u00c7\u00bd\3"+
+ "\2\2\2\u00c7\u00be\3\2\2\2\u00c7\u00c2\3\2\2\2\u00c7\u00c6\3\2\2\2\u00c8"+
+ "\35\3\2\2\2\u00c9\u00cb\5 \21\2\u00ca\u00c9\3\2\2\2\u00cb\u00cc\3\2\2"+
+ "\2\u00cc\u00ca\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\37\3\2\2\2\u00ce\u010c"+
+ "\5\16\b\2\u00cf\u00d1\7\b\2\2\u00d0\u00d2\5\36\20\2\u00d1\u00d0\3\2\2"+
+ "\2\u00d1\u00d2\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3\u010c\7\t\2\2\u00d4\u00d5"+
+ "\5(\25\2\u00d5\u00d6\7\5\2\2\u00d6\u010c\3\2\2\2\u00d7\u00d8\7\30\2\2"+
+ "\u00d8\u00d9\7\6\2\2\u00d9\u00da\5(\25\2\u00da\u00db\7\7\2\2\u00db\u00de"+
+ "\5 \21\2\u00dc\u00dd\7\31\2\2\u00dd\u00df\5 \21\2\u00de\u00dc\3\2\2\2"+
+ "\u00de\u00df\3\2\2\2\u00df\u010c\3\2\2\2\u00e0\u00e2\5\34\17\2\u00e1\u00e0"+
+ "\3\2\2\2\u00e1\u00e2\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e4\7\32\2\2"+
+ "\u00e4\u00e5\7\6\2\2\u00e5\u00e6\5(\25\2\u00e6\u00e7\7\7\2\2\u00e7\u00e8"+
+ "\5 \21\2\u00e8\u010c\3\2\2\2\u00e9\u00eb\5\34\17\2\u00ea\u00e9\3\2\2\2"+
+ "\u00ea\u00eb\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\u00ed\7\33\2\2\u00ed\u00ee"+
+ "\5 \21\2\u00ee\u00ef\7\32\2\2\u00ef\u00f0\7\6\2\2\u00f0\u00f1\5(\25\2"+
+ "\u00f1\u00f2\7\7\2\2\u00f2\u00f3\7\5\2\2\u00f3\u010c\3\2\2\2\u00f4\u00f6"+
+ "\5\34\17\2\u00f5\u00f4\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00f7\3\2\2\2"+
+ "\u00f7\u00f8\7\34\2\2\u00f8\u00fa\7\6\2\2\u00f9\u00fb\5\"\22\2\u00fa\u00f9"+
+ "\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc\u00fd\5$\23\2\u00fd"+
+ "\u00fe\7\7\2\2\u00fe\u00ff\5 \21\2\u00ff\u010c\3\2\2\2\u0100\u0102\7\35"+
+ "\2\2\u0101\u0103\5(\25\2\u0102\u0101\3\2\2\2\u0102\u0103\3\2\2\2\u0103"+
+ "\u0104\3\2\2\2\u0104\u010c\7\5\2\2\u0105\u0106\7\36\2\2\u0106\u0107\7"+
+ "\b\2\2\u0107\u0108\5,\27\2\u0108\u0109\7\t\2\2\u0109\u010c\3\2\2\2\u010a"+
+ "\u010c\5\22\n\2\u010b\u00ce\3\2\2\2\u010b\u00cf\3\2\2\2\u010b\u00d4\3"+
+ "\2\2\2\u010b\u00d7\3\2\2\2\u010b\u00e1\3\2\2\2\u010b\u00ea\3\2\2\2\u010b"+
+ "\u00f5\3\2\2\2\u010b\u0100\3\2\2\2\u010b\u0105\3\2\2\2\u010b\u010a\3\2"+
+ "\2\2\u010c!\3\2\2\2\u010d\u010f\5\34\17\2\u010e\u010d\3\2\2\2\u010f\u0112"+
+ "\3\2\2\2\u0110\u010e\3\2\2\2\u0110\u0111\3\2\2\2\u0111\u0114\3\2\2\2\u0112"+
+ "\u0110\3\2\2\2\u0113\u0115\5&\24\2\u0114\u0113\3\2\2\2\u0114\u0115\3\2"+
+ "\2\2\u0115\u0119\3\2\2\2\u0116\u0118\5\34\17\2\u0117\u0116\3\2\2\2\u0118"+
+ "\u011b\3\2\2\2\u0119\u0117\3\2\2\2\u0119\u011a\3\2\2\2\u011a\u011c\3\2"+
+ "\2\2\u011b\u0119\3\2\2\2\u011c\u011f\7T\2\2\u011d\u011e\7\4\2\2\u011e"+
+ "\u0120\5(\25\2\u011f\u011d\3\2\2\2\u011f\u0120\3\2\2\2\u0120#\3\2\2\2"+
+ "\u0121\u0122\7\5\2\2\u0122\u0123\5(\25\2\u0123\u0124\7\5\2\2\u0124\u0125"+
+ "\5(\25\2\u0125\u012c\3\2\2\2\u0126\u0127\7\17\2\2\u0127\u0128\5(\25\2"+
+ "\u0128\u0129\7\37\2\2\u0129\u012a\5(\25\2\u012a\u012c\3\2\2\2\u012b\u0121"+
+ "\3\2\2\2\u012b\u0126\3\2\2\2\u012c%\3\2\2\2\u012d\u012e\b\24\1\2\u012e"+
+ "\u0132\7G\2\2\u012f\u0130\7 \2\2\u0130\u0132\7G\2\2\u0131\u012d\3\2\2"+
+ "\2\u0131\u012f\3\2\2\2\u0132\u013d\3\2\2\2\u0133\u0134\f\4\2\2\u0134\u013c"+
+ "\7!\2\2\u0135\u0136\f\3\2\2\u0136\u0138\7\"\2\2\u0137\u0139\5(\25\2\u0138"+
+ "\u0137\3\2\2\2\u0138\u0139\3\2\2\2\u0139\u013a\3\2\2\2\u013a\u013c\7#"+
+ "\2\2\u013b\u0133\3\2\2\2\u013b\u0135\3\2\2\2\u013c\u013f\3\2\2\2\u013d"+
+ "\u013b\3\2\2\2\u013d\u013e\3\2\2\2\u013e\'\3\2\2\2\u013f\u013d\3\2\2\2"+
+ "\u0140\u0141\b\25\1\2\u0141\u0142\7\6\2\2\u0142\u0143\5(\25\2\u0143\u0144"+
+ "\7\7\2\2\u0144\u0169\3\2\2\2\u0145\u0146\7T\2\2\u0146\u0148\7\6\2\2\u0147"+
+ "\u0149\5*\26\2\u0148\u0147\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u014a\3\2"+
+ "\2\2\u014a\u0169\7\7\2\2\u014b\u014c\7\6\2\2\u014c\u014d\5&\24\2\u014d"+
+ "\u014e\7\7\2\2\u014e\u014f\5(\25\31\u014f\u0169\3\2\2\2\u0150\u0151\t"+
+ "\2\2\2\u0151\u0169\5(\25\30\u0152\u0153\7!\2\2\u0153\u0169\5(\25\26\u0154"+
+ "\u0155\t\3\2\2\u0155\u0169\5(\25\25\u0156\u0157\t\4\2\2\u0157\u0169\5"+
+ "(\25\21\u0158\u0159\7\b\2\2\u0159\u015e\5(\25\2\u015a\u015b\7\13\2\2\u015b"+
+ "\u015d\5(\25\2\u015c\u015a\3\2\2\2\u015d\u0160\3\2\2\2\u015e\u015c\3\2"+
+ "\2\2\u015e\u015f\3\2\2\2\u015f\u0161\3\2\2\2\u0160\u015e\3\2\2\2\u0161"+
+ "\u0162\7\t\2\2\u0162\u0169\3\2\2\2\u0163\u0169\7T\2\2\u0164\u0169\7K\2"+
+ "\2\u0165\u0169\7H\2\2\u0166\u0169\7I\2\2\u0167\u0169\7J\2\2\u0168\u0140"+
+ "\3\2\2\2\u0168\u0145\3\2\2\2\u0168\u014b\3\2\2\2\u0168\u0150\3\2\2\2\u0168"+
+ "\u0152\3\2\2\2\u0168\u0154\3\2\2\2\u0168\u0156\3\2\2\2\u0168\u0158\3\2"+
+ "\2\2\u0168\u0163\3\2\2\2\u0168\u0164\3\2\2\2\u0168\u0165\3\2\2\2\u0168"+
+ "\u0166\3\2\2\2\u0168\u0167\3\2\2\2\u0169\u0194\3\2\2\2\u016a\u016b\f\24"+
+ "\2\2\u016b\u016c\t\5\2\2\u016c\u0193\5(\25\25\u016d\u016e\f\23\2\2\u016e"+
+ "\u016f\t\6\2\2\u016f\u0193\5(\25\24\u0170\u0171\f\22\2\2\u0171\u0172\t"+
+ "\7\2\2\u0172\u0193\5(\25\23\u0173\u0174\f\20\2\2\u0174\u0175\t\b\2\2\u0175"+
+ "\u0193\5(\25\21\u0176\u0177\f\17\2\2\u0177\u0178\7)\2\2\u0178\u0193\5"+
+ "(\25\20\u0179\u017a\f\16\2\2\u017a\u017b\7\65\2\2\u017b\u0193\5(\25\17"+
+ "\u017c\u017d\f\r\2\2\u017d\u017e\7\66\2\2\u017e\u0193\5(\25\16\u017f\u0180"+
+ "\f\f\2\2\u0180\u0181\7\67\2\2\u0181\u0193\5(\25\r\u0182\u0183\f\13\2\2"+
+ "\u0183\u0184\78\2\2\u0184\u0193\5(\25\f\u0185\u0186\f\n\2\2\u0186\u0187"+
+ "\7\4\2\2\u0187\u0193\5(\25\n\u0188\u0189\f\t\2\2\u0189\u018a\t\t\2\2\u018a"+
+ "\u0193\5(\25\t\u018b\u018c\f\32\2\2\u018c\u018d\7\"\2\2\u018d\u018e\5"+
+ "(\25\2\u018e\u018f\7#\2\2\u018f\u0193\3\2\2\2\u0190\u0191\f\27\2\2\u0191"+
+ "\u0193\t\2\2\2\u0192\u016a\3\2\2\2\u0192\u016d\3\2\2\2\u0192\u0170\3\2"+
+ "\2\2\u0192\u0173\3\2\2\2\u0192\u0176\3\2\2\2\u0192\u0179\3\2\2\2\u0192"+
+ "\u017c\3\2\2\2\u0192\u017f\3\2\2\2\u0192\u0182\3\2\2\2\u0192\u0185\3\2"+
+ "\2\2\u0192\u0188\3\2\2\2\u0192\u018b\3\2\2\2\u0192\u0190\3\2\2\2\u0193"+
+ "\u0196\3\2\2\2\u0194\u0192\3\2\2\2\u0194\u0195\3\2\2\2\u0195)\3\2\2\2"+
+ "\u0196\u0194\3\2\2\2\u0197\u019c\5(\25\2\u0198\u0199\7\13\2\2\u0199\u019b"+
+ "\5(\25\2\u019a\u0198\3\2\2\2\u019b\u019e\3\2\2\2\u019c\u019a\3\2\2\2\u019c"+
+ "\u019d\3\2\2\2\u019d+\3\2\2\2\u019e\u019c\3\2\2\2\u019f\u01a1\5.\30\2"+
+ "\u01a0\u019f\3\2\2\2\u01a1\u01a4\3\2\2\2\u01a2\u01a0\3\2\2\2\u01a2\u01a3"+
+ "\3\2\2\2\u01a3-\3\2\2\2\u01a4\u01a2\3\2\2\2\u01a5\u01a9\5\60\31\2\u01a6"+
+ "\u01a9\5\62\32\2\u01a7\u01a9\5\64\33\2\u01a8\u01a5\3\2\2\2\u01a8\u01a6"+
+ "\3\2\2\2\u01a8\u01a7\3\2\2\2\u01a9/\3\2\2\2\u01aa\u01ab\7T\2\2\u01ab\u01b2"+
+ "\7\17\2\2\u01ac\u01ae\7(\2\2\u01ad\u01af\7T\2\2\u01ae\u01ad\3\2\2\2\u01ae"+
+ "\u01af\3\2\2\2\u01af\u01b0\3\2\2\2\u01b0\u01b2\7\17\2\2\u01b1\u01aa\3"+
+ "\2\2\2\u01b1\u01ac\3\2\2\2\u01b2\61\3\2\2\2\u01b3\u01b5\7E\2\2\u01b4\u01b6"+
+ "\5\66\34\2\u01b5\u01b4\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\63\3\2\2\2\u01b7"+
+ "\u01b8\7C\2\2\u01b8\u01bd\58\35\2\u01b9\u01ba\7\13\2\2\u01ba\u01bc\58"+
+ "\35\2\u01bb\u01b9\3\2\2\2\u01bc\u01bf\3\2\2\2\u01bd\u01bb\3\2\2\2\u01bd"+
+ "\u01be\3\2\2\2\u01be\65\3\2\2\2\u01bf\u01bd\3\2\2\2\u01c0\u01d8\58\35"+
+ "\2\u01c1\u01c2\7D\2\2\u01c2\u01d8\58\35\2\u01c3\u01c4\58\35\2\u01c4\u01c5"+
+ "\7\13\2\2\u01c5\u01c6\7T\2\2\u01c6\u01d8\3\2\2\2\u01c7\u01c8\7\6\2\2\u01c8"+
+ "\u01c9\58\35\2\u01c9\u01ca\7\7\2\2\u01ca\u01cb\7\13\2\2\u01cb\u01cc\7"+
+ "T\2\2\u01cc\u01d8\3\2\2\2\u01cd\u01ce\7\6\2\2\u01ce\u01cf\58\35\2\u01cf"+
+ "\u01d0\7\13\2\2\u01d0\u01d1\7T\2\2\u01d1\u01d2\7\7\2\2\u01d2\u01d8\3\2"+
+ "\2\2\u01d3\u01d4\7\6\2\2\u01d4\u01d5\58\35\2\u01d5\u01d6\7\7\2\2\u01d6"+
+ "\u01d8\3\2\2\2\u01d7\u01c0\3\2\2\2\u01d7\u01c1\3\2\2\2\u01d7\u01c3\3\2"+
+ "\2\2\u01d7\u01c7\3\2\2\2\u01d7\u01cd\3\2\2\2\u01d7\u01d3\3\2\2\2\u01d8"+
+ "\67\3\2\2\2\u01d9\u01da\b\35\1\2\u01da\u01db\7\"\2\2\u01db\u01dc\58\35"+
+ "\2\u01dc\u01dd\7#\2\2\u01dd\u01e8\3\2\2\2\u01de\u01df\t\n\2\2\u01df\u01e8"+
+ "\58\35\n\u01e0\u01e8\7T\2\2\u01e1\u01e8\7U\2\2\u01e2\u01e3\7\b\2\2\u01e3"+
+ "\u01e4\7T\2\2\u01e4\u01e8\7\t\2\2\u01e5\u01e8\7K\2\2\u01e6\u01e8\7I\2"+
+ "\2\u01e7\u01d9\3\2\2\2\u01e7\u01de\3\2\2\2\u01e7\u01e0\3\2\2\2\u01e7\u01e1"+
+ "\3\2\2\2\u01e7\u01e2\3\2\2\2\u01e7\u01e5\3\2\2\2\u01e7\u01e6\3\2\2\2\u01e8"+
+ "\u01f4\3\2\2\2\u01e9\u01ea\f\13\2\2\u01ea\u01eb\t\5\2\2\u01eb\u01f3\5"+
+ "8\35\f\u01ec\u01ed\f\t\2\2\u01ed\u01ee\t\13\2\2\u01ee\u01f3\58\35\n\u01ef"+
+ "\u01f0\f\b\2\2\u01f0\u01f1\t\7\2\2\u01f1\u01f3\58\35\t\u01f2\u01e9\3\2"+
+ "\2\2\u01f2\u01ec\3\2\2\2\u01f2\u01ef\3\2\2\2\u01f3\u01f6\3\2\2\2\u01f4"+
+ "\u01f2\3\2\2\2\u01f4\u01f5\3\2\2\2\u01f59\3\2\2\2\u01f6\u01f4\3\2\2\2"+
+ "\66DMRW^dkrx}\u0083\u008d\u00a1\u00a3\u00aa\u00b0\u00b7\u00c7\u00cc\u00d1"+
+ "\u00de\u00e1\u00ea\u00f5\u00fa\u0102\u010b\u0110\u0114\u0119\u011f\u012b"+
+ "\u0131\u0138\u013b\u013d\u0148\u015e\u0168\u0192\u0194\u019c\u01a2\u01a8"+
+ "\u01ae\u01b1\u01b5\u01bd\u01d7\u01e7\u01f2\u01f4";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java
index 683f428e4..bd297fce5 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java
@@ -65,65 +65,53 @@ public interface KickCVisitor extends ParseTreeVisitor {
*/
T visitDeclKasm(KickCParser.DeclKasmContext ctx);
/**
- * Visit a parse tree produced by {@link KickCParser#kasmParams}.
+ * Visit a parse tree produced by {@link KickCParser#kasmDirectives}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitKasmParams(KickCParser.KasmParamsContext ctx);
+ T visitKasmDirectives(KickCParser.KasmDirectivesContext ctx);
/**
- * Visit a parse tree produced by the {@code kasmParamResources}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Visit a parse tree produced by the {@code kasmDirectiveResource}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitKasmParamResources(KickCParser.KasmParamResourcesContext ctx);
+ T visitKasmDirectiveResource(KickCParser.KasmDirectiveResourceContext ctx);
/**
- * Visit a parse tree produced by the {@code kasmParamClobber}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Visit a parse tree produced by the {@code kasmDirectiveClobber}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitKasmParamClobber(KickCParser.KasmParamClobberContext ctx);
+ T visitKasmDirectiveClobber(KickCParser.KasmDirectiveClobberContext ctx);
/**
- * Visit a parse tree produced by the {@code kasmParamTransfer}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Visit a parse tree produced by the {@code kasmDirectiveTransfer}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitKasmParamTransfer(KickCParser.KasmParamTransferContext ctx);
+ T visitKasmDirectiveTransfer(KickCParser.KasmDirectiveTransferContext ctx);
/**
- * Visit a parse tree produced by the {@code kasmParamBytes}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Visit a parse tree produced by the {@code kasmDirectiveBytes}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitKasmParamBytes(KickCParser.KasmParamBytesContext ctx);
+ T visitKasmDirectiveBytes(KickCParser.KasmDirectiveBytesContext ctx);
/**
- * Visit a parse tree produced by the {@code kasmParamCycles}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Visit a parse tree produced by the {@code kasmDirectiveCycles}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitKasmParamCycles(KickCParser.KasmParamCyclesContext ctx);
+ T visitKasmDirectiveCycles(KickCParser.KasmDirectiveCyclesContext ctx);
/**
- * Visit a parse tree produced by the {@code kasmParamLocation}
- * labeled alternative in {@link KickCParser#kasmParam}.
+ * Visit a parse tree produced by the {@code kasmDirectiveLocation}
+ * labeled alternative in {@link KickCParser#kasmDirective}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitKasmParamLocation(KickCParser.KasmParamLocationContext ctx);
- /**
- * Visit a parse tree produced by {@link KickCParser#kasmResourceList}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitKasmResourceList(KickCParser.KasmResourceListContext ctx);
- /**
- * Visit a parse tree produced by {@link KickCParser#kasmParamList}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitKasmParamList(KickCParser.KasmParamListContext ctx);
+ T visitKasmDirectiveLocation(KickCParser.KasmDirectiveLocationContext ctx);
/**
* Visit a parse tree produced by {@link KickCParser#parameterListDecl}.
* @param ctx the parse tree
diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java
index b33abaed1..cd7e1de8a 100644
--- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java
+++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java
@@ -155,8 +155,8 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor