mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-26 15:30:28 +00:00
Changed ranged loop to only accept constants.
This commit is contained in:
parent
14dfaee552
commit
df631667a0
@ -23,7 +23,7 @@ public class StatementSequence {
|
||||
public String toString(Program program) {
|
||||
StringBuffer out = new StringBuffer();
|
||||
for (Statement statement : statements) {
|
||||
if(!(statement instanceof StatementLabel) ) { //&& !(statement instanceof StatementProcedureBegin) && !(statement instanceof StatementProcedureEnd)) {
|
||||
if(!(statement instanceof StatementLabel) && !(statement instanceof StatementProcedureBegin) && !(statement instanceof StatementProcedureEnd)) {
|
||||
out.append(" ");
|
||||
}
|
||||
out.append(statement.toString(program)+"\n");
|
||||
|
@ -28,7 +28,7 @@ forDeclaration
|
||||
|
||||
forIteration
|
||||
: ';' expr ';' expr? # forClassic
|
||||
| ':' expr ( '..' | '.++.' | '.--.' ) expr #forRange
|
||||
| ':' expr ( '..' ) expr #forRange
|
||||
;
|
||||
|
||||
parameterListDecl
|
||||
|
@ -40,24 +40,22 @@ T__38=39
|
||||
T__39=40
|
||||
T__40=41
|
||||
T__41=42
|
||||
T__42=43
|
||||
T__43=44
|
||||
SIMPLETYPE=45
|
||||
STRING=46
|
||||
BOOLEAN=47
|
||||
NUMBER=48
|
||||
NUMFLOAT=49
|
||||
BINFLOAT=50
|
||||
DECFLOAT=51
|
||||
HEXFLOAT=52
|
||||
NUMINT=53
|
||||
BININTEGER=54
|
||||
DECINTEGER=55
|
||||
HEXINTEGER=56
|
||||
NAME=57
|
||||
WS=58
|
||||
COMMENT_LINE=59
|
||||
COMMENT_BLOCK=60
|
||||
SIMPLETYPE=43
|
||||
STRING=44
|
||||
BOOLEAN=45
|
||||
NUMBER=46
|
||||
NUMFLOAT=47
|
||||
BINFLOAT=48
|
||||
DECFLOAT=49
|
||||
HEXFLOAT=50
|
||||
NUMINT=51
|
||||
BININTEGER=52
|
||||
DECINTEGER=53
|
||||
HEXINTEGER=54
|
||||
NAME=55
|
||||
WS=56
|
||||
COMMENT_LINE=57
|
||||
COMMENT_BLOCK=58
|
||||
'{'=1
|
||||
'}'=2
|
||||
'('=3
|
||||
@ -73,32 +71,30 @@ COMMENT_BLOCK=60
|
||||
'return'=13
|
||||
':'=14
|
||||
'..'=15
|
||||
'.++.'=16
|
||||
'.--.'=17
|
||||
','=18
|
||||
'*'=19
|
||||
'['=20
|
||||
']'=21
|
||||
'--'=22
|
||||
'++'=23
|
||||
'+'=24
|
||||
'-'=25
|
||||
'not'=26
|
||||
'!'=27
|
||||
'&'=28
|
||||
'>>'=29
|
||||
'<<'=30
|
||||
'/'=31
|
||||
'=='=32
|
||||
'!='=33
|
||||
'<>'=34
|
||||
'<'=35
|
||||
'<='=36
|
||||
'=<'=37
|
||||
'>='=38
|
||||
'=>'=39
|
||||
'>'=40
|
||||
'and'=41
|
||||
'&&'=42
|
||||
'or'=43
|
||||
'||'=44
|
||||
','=16
|
||||
'*'=17
|
||||
'['=18
|
||||
']'=19
|
||||
'--'=20
|
||||
'++'=21
|
||||
'+'=22
|
||||
'-'=23
|
||||
'not'=24
|
||||
'!'=25
|
||||
'&'=26
|
||||
'>>'=27
|
||||
'<<'=28
|
||||
'/'=29
|
||||
'=='=30
|
||||
'!='=31
|
||||
'<>'=32
|
||||
'<'=33
|
||||
'<='=34
|
||||
'=<'=35
|
||||
'>='=36
|
||||
'=>'=37
|
||||
'>'=38
|
||||
'and'=39
|
||||
'&&'=40
|
||||
'or'=41
|
||||
'||'=42
|
||||
|
@ -22,10 +22,10 @@ public class KickCLexer extends Lexer {
|
||||
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
|
||||
T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31,
|
||||
T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38,
|
||||
T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, SIMPLETYPE=45,
|
||||
STRING=46, BOOLEAN=47, NUMBER=48, NUMFLOAT=49, BINFLOAT=50, DECFLOAT=51,
|
||||
HEXFLOAT=52, NUMINT=53, BININTEGER=54, DECINTEGER=55, HEXINTEGER=56, NAME=57,
|
||||
WS=58, COMMENT_LINE=59, COMMENT_BLOCK=60;
|
||||
T__38=39, T__39=40, T__40=41, T__41=42, SIMPLETYPE=43, STRING=44, BOOLEAN=45,
|
||||
NUMBER=46, NUMFLOAT=47, BINFLOAT=48, DECFLOAT=49, HEXFLOAT=50, NUMINT=51,
|
||||
BININTEGER=52, DECINTEGER=53, HEXINTEGER=54, NAME=55, WS=56, COMMENT_LINE=57,
|
||||
COMMENT_BLOCK=58;
|
||||
public static String[] channelNames = {
|
||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||
};
|
||||
@ -40,27 +40,26 @@ public class KickCLexer extends Lexer {
|
||||
"T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24",
|
||||
"T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32",
|
||||
"T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40",
|
||||
"T__41", "T__42", "T__43", "SIMPLETYPE", "STRING", "BOOLEAN", "NUMBER",
|
||||
"NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER",
|
||||
"DECINTEGER", "HEXINTEGER", "BINDIGIT", "DECDIGIT", "HEXDIGIT", "NAME",
|
||||
"NAME_START", "NAME_CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK"
|
||||
"T__41", "SIMPLETYPE", "STRING", "BOOLEAN", "NUMBER", "NUMFLOAT", "BINFLOAT",
|
||||
"DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER",
|
||||
"BINDIGIT", "DECDIGIT", "HEXDIGIT", "NAME", "NAME_START", "NAME_CHAR",
|
||||
"WS", "COMMENT_LINE", "COMMENT_BLOCK"
|
||||
};
|
||||
|
||||
private static final String[] _LITERAL_NAMES = {
|
||||
null, "'{'", "'}'", "'('", "')'", "'const'", "'='", "';'", "'if'", "'else'",
|
||||
"'while'", "'do'", "'for'", "'return'", "':'", "'..'", "'.++.'", "'.--.'",
|
||||
"','", "'*'", "'['", "']'", "'--'", "'++'", "'+'", "'-'", "'not'", "'!'",
|
||||
"'&'", "'>>'", "'<<'", "'/'", "'=='", "'!='", "'<>'", "'<'", "'<='", "'=<'",
|
||||
"'>='", "'=>'", "'>'", "'and'", "'&&'", "'or'", "'||'"
|
||||
"'while'", "'do'", "'for'", "'return'", "':'", "'..'", "','", "'*'", "'['",
|
||||
"']'", "'--'", "'++'", "'+'", "'-'", "'not'", "'!'", "'&'", "'>>'", "'<<'",
|
||||
"'/'", "'=='", "'!='", "'<>'", "'<'", "'<='", "'=<'", "'>='", "'=>'",
|
||||
"'>'", "'and'", "'&&'", "'or'", "'||'"
|
||||
};
|
||||
private static final String[] _SYMBOLIC_NAMES = {
|
||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, null, null, "SIMPLETYPE", "STRING",
|
||||
"BOOLEAN", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT", "NUMINT",
|
||||
"BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME", "WS", "COMMENT_LINE",
|
||||
"COMMENT_BLOCK"
|
||||
null, null, null, null, null, null, null, "SIMPLETYPE", "STRING", "BOOLEAN",
|
||||
"NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER",
|
||||
"DECINTEGER", "HEXINTEGER", "NAME", "WS", "COMMENT_LINE", "COMMENT_BLOCK"
|
||||
};
|
||||
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
|
||||
|
||||
@ -120,7 +119,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\2>\u01cc\b\1\4\2\t"+
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2<\u01be\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"+
|
||||
@ -128,157 +127,153 @@ public class KickCLexer extends Lexer {
|
||||
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
|
||||
",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
|
||||
"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
|
||||
"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6"+
|
||||
"\3\6\3\6\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\13"+
|
||||
"\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\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\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3"+
|
||||
"\22\3\22\3\22\3\22\3\22\3\23\3\23\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3"+
|
||||
"\27\3\27\3\30\3\30\3\30\3\31\3\31\3\32\3\32\3\33\3\33\3\33\3\33\3\34\3"+
|
||||
"\34\3\35\3\35\3\36\3\36\3\36\3\37\3\37\3\37\3 \3 \3!\3!\3!\3\"\3\"\3\""+
|
||||
"\3#\3#\3#\3$\3$\3%\3%\3%\3&\3&\3&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3*\3*\3*"+
|
||||
"\3*\3+\3+\3+\3,\3,\3,\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3."+
|
||||
"\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\5.\u0124\n.\3/\3/\3/\3/\7/\u012a"+
|
||||
"\n/\f/\16/\u012d\13/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60"+
|
||||
"\5\60\u013a\n\60\3\61\3\61\5\61\u013e\n\61\3\62\3\62\3\62\5\62\u0143\n"+
|
||||
"\62\3\63\3\63\3\63\3\63\3\63\5\63\u014a\n\63\3\63\7\63\u014d\n\63\f\63"+
|
||||
"\16\63\u0150\13\63\3\63\3\63\6\63\u0154\n\63\r\63\16\63\u0155\3\64\7\64"+
|
||||
"\u0159\n\64\f\64\16\64\u015c\13\64\3\64\3\64\6\64\u0160\n\64\r\64\16\64"+
|
||||
"\u0161\3\65\3\65\3\65\3\65\3\65\5\65\u0169\n\65\3\65\7\65\u016c\n\65\f"+
|
||||
"\65\16\65\u016f\13\65\3\65\3\65\6\65\u0173\n\65\r\65\16\65\u0174\3\66"+
|
||||
"\3\66\3\66\5\66\u017a\n\66\3\67\3\67\3\67\6\67\u017f\n\67\r\67\16\67\u0180"+
|
||||
"\3\67\3\67\6\67\u0185\n\67\r\67\16\67\u0186\5\67\u0189\n\67\38\68\u018c"+
|
||||
"\n8\r8\168\u018d\39\39\39\39\39\59\u0195\n9\39\69\u0198\n9\r9\169\u0199"+
|
||||
"\3:\3:\3;\3;\3<\3<\3=\3=\7=\u01a4\n=\f=\16=\u01a7\13=\3>\3>\3?\3?\3@\6"+
|
||||
"@\u01ae\n@\r@\16@\u01af\3@\3@\3A\3A\3A\3A\7A\u01b8\nA\fA\16A\u01bb\13"+
|
||||
"A\3A\3A\3B\3B\3B\3B\7B\u01c3\nB\fB\16B\u01c6\13B\3B\3B\3B\3B\3B\3\u01c4"+
|
||||
"\2C\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\67"+
|
||||
"m8o9q:s\2u\2w\2y;{\2}\2\177<\u0081=\u0083>\3\2\13\3\2$$\4\2DDdd\3\2\62"+
|
||||
"\63\3\2\62;\5\2\62;CHch\5\2C\\aac|\6\2\62;C\\aac|\5\2\13\f\17\17\"\"\4"+
|
||||
"\2\f\f\17\17\2\u01e7\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/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2"+
|
||||
"\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2"+
|
||||
"\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q"+
|
||||
"\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2"+
|
||||
"\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2"+
|
||||
"\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2y\3\2\2\2\2\177\3\2\2\2"+
|
||||
"\2\u0081\3\2\2\2\2\u0083\3\2\2\2\3\u0085\3\2\2\2\5\u0087\3\2\2\2\7\u0089"+
|
||||
"\3\2\2\2\t\u008b\3\2\2\2\13\u008d\3\2\2\2\r\u0093\3\2\2\2\17\u0095\3\2"+
|
||||
"\2\2\21\u0097\3\2\2\2\23\u009a\3\2\2\2\25\u009f\3\2\2\2\27\u00a5\3\2\2"+
|
||||
"\2\31\u00a8\3\2\2\2\33\u00ac\3\2\2\2\35\u00b3\3\2\2\2\37\u00b5\3\2\2\2"+
|
||||
"!\u00b8\3\2\2\2#\u00bd\3\2\2\2%\u00c2\3\2\2\2\'\u00c4\3\2\2\2)\u00c6\3"+
|
||||
"\2\2\2+\u00c8\3\2\2\2-\u00ca\3\2\2\2/\u00cd\3\2\2\2\61\u00d0\3\2\2\2\63"+
|
||||
"\u00d2\3\2\2\2\65\u00d4\3\2\2\2\67\u00d8\3\2\2\29\u00da\3\2\2\2;\u00dc"+
|
||||
"\3\2\2\2=\u00df\3\2\2\2?\u00e2\3\2\2\2A\u00e4\3\2\2\2C\u00e7\3\2\2\2E"+
|
||||
"\u00ea\3\2\2\2G\u00ed\3\2\2\2I\u00ef\3\2\2\2K\u00f2\3\2\2\2M\u00f5\3\2"+
|
||||
"\2\2O\u00f8\3\2\2\2Q\u00fb\3\2\2\2S\u00fd\3\2\2\2U\u0101\3\2\2\2W\u0104"+
|
||||
"\3\2\2\2Y\u0107\3\2\2\2[\u0123\3\2\2\2]\u0125\3\2\2\2_\u0139\3\2\2\2a"+
|
||||
"\u013d\3\2\2\2c\u0142\3\2\2\2e\u0149\3\2\2\2g\u015a\3\2\2\2i\u0168\3\2"+
|
||||
"\2\2k\u0179\3\2\2\2m\u0188\3\2\2\2o\u018b\3\2\2\2q\u0194\3\2\2\2s\u019b"+
|
||||
"\3\2\2\2u\u019d\3\2\2\2w\u019f\3\2\2\2y\u01a1\3\2\2\2{\u01a8\3\2\2\2}"+
|
||||
"\u01aa\3\2\2\2\177\u01ad\3\2\2\2\u0081\u01b3\3\2\2\2\u0083\u01be\3\2\2"+
|
||||
"\2\u0085\u0086\7}\2\2\u0086\4\3\2\2\2\u0087\u0088\7\177\2\2\u0088\6\3"+
|
||||
"\2\2\2\u0089\u008a\7*\2\2\u008a\b\3\2\2\2\u008b\u008c\7+\2\2\u008c\n\3"+
|
||||
"\2\2\2\u008d\u008e\7e\2\2\u008e\u008f\7q\2\2\u008f\u0090\7p\2\2\u0090"+
|
||||
"\u0091\7u\2\2\u0091\u0092\7v\2\2\u0092\f\3\2\2\2\u0093\u0094\7?\2\2\u0094"+
|
||||
"\16\3\2\2\2\u0095\u0096\7=\2\2\u0096\20\3\2\2\2\u0097\u0098\7k\2\2\u0098"+
|
||||
"\u0099\7h\2\2\u0099\22\3\2\2\2\u009a\u009b\7g\2\2\u009b\u009c\7n\2\2\u009c"+
|
||||
"\u009d\7u\2\2\u009d\u009e\7g\2\2\u009e\24\3\2\2\2\u009f\u00a0\7y\2\2\u00a0"+
|
||||
"\u00a1\7j\2\2\u00a1\u00a2\7k\2\2\u00a2\u00a3\7n\2\2\u00a3\u00a4\7g\2\2"+
|
||||
"\u00a4\26\3\2\2\2\u00a5\u00a6\7f\2\2\u00a6\u00a7\7q\2\2\u00a7\30\3\2\2"+
|
||||
"\2\u00a8\u00a9\7h\2\2\u00a9\u00aa\7q\2\2\u00aa\u00ab\7t\2\2\u00ab\32\3"+
|
||||
"\2\2\2\u00ac\u00ad\7t\2\2\u00ad\u00ae\7g\2\2\u00ae\u00af\7v\2\2\u00af"+
|
||||
"\u00b0\7w\2\2\u00b0\u00b1\7t\2\2\u00b1\u00b2\7p\2\2\u00b2\34\3\2\2\2\u00b3"+
|
||||
"\u00b4\7<\2\2\u00b4\36\3\2\2\2\u00b5\u00b6\7\60\2\2\u00b6\u00b7\7\60\2"+
|
||||
"\2\u00b7 \3\2\2\2\u00b8\u00b9\7\60\2\2\u00b9\u00ba\7-\2\2\u00ba\u00bb"+
|
||||
"\7-\2\2\u00bb\u00bc\7\60\2\2\u00bc\"\3\2\2\2\u00bd\u00be\7\60\2\2\u00be"+
|
||||
"\u00bf\7/\2\2\u00bf\u00c0\7/\2\2\u00c0\u00c1\7\60\2\2\u00c1$\3\2\2\2\u00c2"+
|
||||
"\u00c3\7.\2\2\u00c3&\3\2\2\2\u00c4\u00c5\7,\2\2\u00c5(\3\2\2\2\u00c6\u00c7"+
|
||||
"\7]\2\2\u00c7*\3\2\2\2\u00c8\u00c9\7_\2\2\u00c9,\3\2\2\2\u00ca\u00cb\7"+
|
||||
"/\2\2\u00cb\u00cc\7/\2\2\u00cc.\3\2\2\2\u00cd\u00ce\7-\2\2\u00ce\u00cf"+
|
||||
"\7-\2\2\u00cf\60\3\2\2\2\u00d0\u00d1\7-\2\2\u00d1\62\3\2\2\2\u00d2\u00d3"+
|
||||
"\7/\2\2\u00d3\64\3\2\2\2\u00d4\u00d5\7p\2\2\u00d5\u00d6\7q\2\2\u00d6\u00d7"+
|
||||
"\7v\2\2\u00d7\66\3\2\2\2\u00d8\u00d9\7#\2\2\u00d98\3\2\2\2\u00da\u00db"+
|
||||
"\7(\2\2\u00db:\3\2\2\2\u00dc\u00dd\7@\2\2\u00dd\u00de\7@\2\2\u00de<\3"+
|
||||
"\2\2\2\u00df\u00e0\7>\2\2\u00e0\u00e1\7>\2\2\u00e1>\3\2\2\2\u00e2\u00e3"+
|
||||
"\7\61\2\2\u00e3@\3\2\2\2\u00e4\u00e5\7?\2\2\u00e5\u00e6\7?\2\2\u00e6B"+
|
||||
"\3\2\2\2\u00e7\u00e8\7#\2\2\u00e8\u00e9\7?\2\2\u00e9D\3\2\2\2\u00ea\u00eb"+
|
||||
"\7>\2\2\u00eb\u00ec\7@\2\2\u00ecF\3\2\2\2\u00ed\u00ee\7>\2\2\u00eeH\3"+
|
||||
"\2\2\2\u00ef\u00f0\7>\2\2\u00f0\u00f1\7?\2\2\u00f1J\3\2\2\2\u00f2\u00f3"+
|
||||
"\7?\2\2\u00f3\u00f4\7>\2\2\u00f4L\3\2\2\2\u00f5\u00f6\7@\2\2\u00f6\u00f7"+
|
||||
"\7?\2\2\u00f7N\3\2\2\2\u00f8\u00f9\7?\2\2\u00f9\u00fa\7@\2\2\u00faP\3"+
|
||||
"\2\2\2\u00fb\u00fc\7@\2\2\u00fcR\3\2\2\2\u00fd\u00fe\7c\2\2\u00fe\u00ff"+
|
||||
"\7p\2\2\u00ff\u0100\7f\2\2\u0100T\3\2\2\2\u0101\u0102\7(\2\2\u0102\u0103"+
|
||||
"\7(\2\2\u0103V\3\2\2\2\u0104\u0105\7q\2\2\u0105\u0106\7t\2\2\u0106X\3"+
|
||||
"\2\2\2\u0107\u0108\7~\2\2\u0108\u0109\7~\2\2\u0109Z\3\2\2\2\u010a\u010b"+
|
||||
"\7d\2\2\u010b\u010c\7{\2\2\u010c\u010d\7v\2\2\u010d\u0124\7g\2\2\u010e"+
|
||||
"\u010f\7y\2\2\u010f\u0110\7q\2\2\u0110\u0111\7t\2\2\u0111\u0124\7f\2\2"+
|
||||
"\u0112\u0113\7u\2\2\u0113\u0114\7v\2\2\u0114\u0115\7t\2\2\u0115\u0116"+
|
||||
"\7k\2\2\u0116\u0117\7p\2\2\u0117\u0124\7i\2\2\u0118\u0119\7d\2\2\u0119"+
|
||||
"\u011a\7q\2\2\u011a\u011b\7q\2\2\u011b\u011c\7n\2\2\u011c\u011d\7g\2\2"+
|
||||
"\u011d\u011e\7c\2\2\u011e\u0124\7p\2\2\u011f\u0120\7x\2\2\u0120\u0121"+
|
||||
"\7q\2\2\u0121\u0122\7k\2\2\u0122\u0124\7f\2\2\u0123\u010a\3\2\2\2\u0123"+
|
||||
"\u010e\3\2\2\2\u0123\u0112\3\2\2\2\u0123\u0118\3\2\2\2\u0123\u011f\3\2"+
|
||||
"\2\2\u0124\\\3\2\2\2\u0125\u012b\7$\2\2\u0126\u0127\7^\2\2\u0127\u012a"+
|
||||
"\7$\2\2\u0128\u012a\n\2\2\2\u0129\u0126\3\2\2\2\u0129\u0128\3\2\2\2\u012a"+
|
||||
"\u012d\3\2\2\2\u012b\u0129\3\2\2\2\u012b\u012c\3\2\2\2\u012c\u012e\3\2"+
|
||||
"\2\2\u012d\u012b\3\2\2\2\u012e\u012f\7$\2\2\u012f^\3\2\2\2\u0130\u0131"+
|
||||
"\7v\2\2\u0131\u0132\7t\2\2\u0132\u0133\7w\2\2\u0133\u013a\7g\2\2\u0134"+
|
||||
"\u0135\7h\2\2\u0135\u0136\7c\2\2\u0136\u0137\7n\2\2\u0137\u0138\7u\2\2"+
|
||||
"\u0138\u013a\7g\2\2\u0139\u0130\3\2\2\2\u0139\u0134\3\2\2\2\u013a`\3\2"+
|
||||
"\2\2\u013b\u013e\5c\62\2\u013c\u013e\5k\66\2\u013d\u013b\3\2\2\2\u013d"+
|
||||
"\u013c\3\2\2\2\u013eb\3\2\2\2\u013f\u0143\5e\63\2\u0140\u0143\5g\64\2"+
|
||||
"\u0141\u0143\5i\65\2\u0142\u013f\3\2\2\2\u0142\u0140\3\2\2\2\u0142\u0141"+
|
||||
"\3\2\2\2\u0143d\3\2\2\2\u0144\u014a\7\'\2\2\u0145\u0146\7\62\2\2\u0146"+
|
||||
"\u014a\7d\2\2\u0147\u0148\7\62\2\2\u0148\u014a\7D\2\2\u0149\u0144\3\2"+
|
||||
"\2\2\u0149\u0145\3\2\2\2\u0149\u0147\3\2\2\2\u014a\u014e\3\2\2\2\u014b"+
|
||||
"\u014d\5s:\2\u014c\u014b\3\2\2\2\u014d\u0150\3\2\2\2\u014e\u014c\3\2\2"+
|
||||
"\2\u014e\u014f\3\2\2\2\u014f\u0151\3\2\2\2\u0150\u014e\3\2\2\2\u0151\u0153"+
|
||||
"\7\60\2\2\u0152\u0154\5s:\2\u0153\u0152\3\2\2\2\u0154\u0155\3\2\2\2\u0155"+
|
||||
"\u0153\3\2\2\2\u0155\u0156\3\2\2\2\u0156f\3\2\2\2\u0157\u0159\5u;\2\u0158"+
|
||||
"\u0157\3\2\2\2\u0159\u015c\3\2\2\2\u015a\u0158\3\2\2\2\u015a\u015b\3\2"+
|
||||
"\2\2\u015b\u015d\3\2\2\2\u015c\u015a\3\2\2\2\u015d\u015f\7\60\2\2\u015e"+
|
||||
"\u0160\5u;\2\u015f\u015e\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u015f\3\2\2"+
|
||||
"\2\u0161\u0162\3\2\2\2\u0162h\3\2\2\2\u0163\u0169\7&\2\2\u0164\u0165\7"+
|
||||
"\62\2\2\u0165\u0169\7z\2\2\u0166\u0167\7\62\2\2\u0167\u0169\7Z\2\2\u0168"+
|
||||
"\u0163\3\2\2\2\u0168\u0164\3\2\2\2\u0168\u0166\3\2\2\2\u0169\u016d\3\2"+
|
||||
"\2\2\u016a\u016c\5w<\2\u016b\u016a\3\2\2\2\u016c\u016f\3\2\2\2\u016d\u016b"+
|
||||
"\3\2\2\2\u016d\u016e\3\2\2\2\u016e\u0170\3\2\2\2\u016f\u016d\3\2\2\2\u0170"+
|
||||
"\u0172\7\60\2\2\u0171\u0173\5w<\2\u0172\u0171\3\2\2\2\u0173\u0174\3\2"+
|
||||
"\2\2\u0174\u0172\3\2\2\2\u0174\u0175\3\2\2\2\u0175j\3\2\2\2\u0176\u017a"+
|
||||
"\5o8\2\u0177\u017a\5q9\2\u0178\u017a\5m\67\2\u0179\u0176\3\2\2\2\u0179"+
|
||||
"\u0177\3\2\2\2\u0179\u0178\3\2\2\2\u017al\3\2\2\2\u017b\u017c\7\62\2\2"+
|
||||
"\u017c\u017e\t\3\2\2\u017d\u017f\5s:\2\u017e\u017d\3\2\2\2\u017f\u0180"+
|
||||
"\3\2\2\2\u0180\u017e\3\2\2\2\u0180\u0181\3\2\2\2\u0181\u0189\3\2\2\2\u0182"+
|
||||
"\u0184\7\'\2\2\u0183\u0185\5s:\2\u0184\u0183\3\2\2\2\u0185\u0186\3\2\2"+
|
||||
"\2\u0186\u0184\3\2\2\2\u0186\u0187\3\2\2\2\u0187\u0189\3\2\2\2\u0188\u017b"+
|
||||
"\3\2\2\2\u0188\u0182\3\2\2\2\u0189n\3\2\2\2\u018a\u018c\5u;\2\u018b\u018a"+
|
||||
"\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018b\3\2\2\2\u018d\u018e\3\2\2\2\u018e"+
|
||||
"p\3\2\2\2\u018f\u0195\7&\2\2\u0190\u0191\7\62\2\2\u0191\u0195\7z\2\2\u0192"+
|
||||
"\u0193\7\62\2\2\u0193\u0195\7Z\2\2\u0194\u018f\3\2\2\2\u0194\u0190\3\2"+
|
||||
"\2\2\u0194\u0192\3\2\2\2\u0195\u0197\3\2\2\2\u0196\u0198\5w<\2\u0197\u0196"+
|
||||
"\3\2\2\2\u0198\u0199\3\2\2\2\u0199\u0197\3\2\2\2\u0199\u019a\3\2\2\2\u019a"+
|
||||
"r\3\2\2\2\u019b\u019c\t\4\2\2\u019ct\3\2\2\2\u019d\u019e\t\5\2\2\u019e"+
|
||||
"v\3\2\2\2\u019f\u01a0\t\6\2\2\u01a0x\3\2\2\2\u01a1\u01a5\5{>\2\u01a2\u01a4"+
|
||||
"\5}?\2\u01a3\u01a2\3\2\2\2\u01a4\u01a7\3\2\2\2\u01a5\u01a3\3\2\2\2\u01a5"+
|
||||
"\u01a6\3\2\2\2\u01a6z\3\2\2\2\u01a7\u01a5\3\2\2\2\u01a8\u01a9\t\7\2\2"+
|
||||
"\u01a9|\3\2\2\2\u01aa\u01ab\t\b\2\2\u01ab~\3\2\2\2\u01ac\u01ae\t\t\2\2"+
|
||||
"\u01ad\u01ac\3\2\2\2\u01ae\u01af\3\2\2\2\u01af\u01ad\3\2\2\2\u01af\u01b0"+
|
||||
"\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01b2\b@\2\2\u01b2\u0080\3\2\2\2\u01b3"+
|
||||
"\u01b4\7\61\2\2\u01b4\u01b5\7\61\2\2\u01b5\u01b9\3\2\2\2\u01b6\u01b8\n"+
|
||||
"\n\2\2\u01b7\u01b6\3\2\2\2\u01b8\u01bb\3\2\2\2\u01b9\u01b7\3\2\2\2\u01b9"+
|
||||
"\u01ba\3\2\2\2\u01ba\u01bc\3\2\2\2\u01bb\u01b9\3\2\2\2\u01bc\u01bd\bA"+
|
||||
"\2\2\u01bd\u0082\3\2\2\2\u01be\u01bf\7\61\2\2\u01bf\u01c0\7,\2\2\u01c0"+
|
||||
"\u01c4\3\2\2\2\u01c1\u01c3\13\2\2\2\u01c2\u01c1\3\2\2\2\u01c3\u01c6\3"+
|
||||
"\2\2\2\u01c4\u01c5\3\2\2\2\u01c4\u01c2\3\2\2\2\u01c5\u01c7\3\2\2\2\u01c6"+
|
||||
"\u01c4\3\2\2\2\u01c7\u01c8\7,\2\2\u01c8\u01c9\7\61\2\2\u01c9\u01ca\3\2"+
|
||||
"\2\2\u01ca\u01cb\bB\2\2\u01cb\u0084\3\2\2\2\34\2\u0123\u0129\u012b\u0139"+
|
||||
"\u013d\u0142\u0149\u014e\u0155\u015a\u0161\u0168\u016d\u0174\u0179\u0180"+
|
||||
"\u0186\u0188\u018d\u0194\u0199\u01a5\u01af\u01b9\u01c4\3\b\2\2";
|
||||
"\4>\t>\4?\t?\4@\t@\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6"+
|
||||
"\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3"+
|
||||
"\13\3\13\3\13\3\f\3\f\3\f\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\20\3\20\3\20\3\21\3\21\3\22\3\22\3\23\3\23\3\24\3\24"+
|
||||
"\3\25\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3\30\3\30\3\31\3\31\3\31\3\31"+
|
||||
"\3\32\3\32\3\33\3\33\3\34\3\34\3\34\3\35\3\35\3\35\3\36\3\36\3\37\3\37"+
|
||||
"\3\37\3 \3 \3 \3!\3!\3!\3\"\3\"\3#\3#\3#\3$\3$\3$\3%\3%\3%\3&\3&\3&\3"+
|
||||
"\'\3\'\3(\3(\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3,"+
|
||||
"\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\5,\u0116\n,\3-\3-"+
|
||||
"\3-\3-\7-\u011c\n-\f-\16-\u011f\13-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3.\3.\5"+
|
||||
".\u012c\n.\3/\3/\5/\u0130\n/\3\60\3\60\3\60\5\60\u0135\n\60\3\61\3\61"+
|
||||
"\3\61\3\61\3\61\5\61\u013c\n\61\3\61\7\61\u013f\n\61\f\61\16\61\u0142"+
|
||||
"\13\61\3\61\3\61\6\61\u0146\n\61\r\61\16\61\u0147\3\62\7\62\u014b\n\62"+
|
||||
"\f\62\16\62\u014e\13\62\3\62\3\62\6\62\u0152\n\62\r\62\16\62\u0153\3\63"+
|
||||
"\3\63\3\63\3\63\3\63\5\63\u015b\n\63\3\63\7\63\u015e\n\63\f\63\16\63\u0161"+
|
||||
"\13\63\3\63\3\63\6\63\u0165\n\63\r\63\16\63\u0166\3\64\3\64\3\64\5\64"+
|
||||
"\u016c\n\64\3\65\3\65\3\65\6\65\u0171\n\65\r\65\16\65\u0172\3\65\3\65"+
|
||||
"\6\65\u0177\n\65\r\65\16\65\u0178\5\65\u017b\n\65\3\66\6\66\u017e\n\66"+
|
||||
"\r\66\16\66\u017f\3\67\3\67\3\67\3\67\3\67\5\67\u0187\n\67\3\67\6\67\u018a"+
|
||||
"\n\67\r\67\16\67\u018b\38\38\39\39\3:\3:\3;\3;\7;\u0196\n;\f;\16;\u0199"+
|
||||
"\13;\3<\3<\3=\3=\3>\6>\u01a0\n>\r>\16>\u01a1\3>\3>\3?\3?\3?\3?\7?\u01aa"+
|
||||
"\n?\f?\16?\u01ad\13?\3?\3?\3@\3@\3@\3@\7@\u01b5\n@\f@\16@\u01b8\13@\3"+
|
||||
"@\3@\3@\3@\3@\3\u01b6\2A\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\62"+
|
||||
"c\63e\64g\65i\66k\67m8o\2q\2s\2u9w\2y\2{:};\177<\3\2\13\3\2$$\4\2DDdd"+
|
||||
"\3\2\62\63\3\2\62;\5\2\62;CHch\5\2C\\aac|\6\2\62;C\\aac|\5\2\13\f\17\17"+
|
||||
"\"\"\4\2\f\f\17\17\2\u01d9\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/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67"+
|
||||
"\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2"+
|
||||
"\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2"+
|
||||
"\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]"+
|
||||
"\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2"+
|
||||
"\2\2\2k\3\2\2\2\2m\3\2\2\2\2u\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2"+
|
||||
"\2\2\3\u0081\3\2\2\2\5\u0083\3\2\2\2\7\u0085\3\2\2\2\t\u0087\3\2\2\2\13"+
|
||||
"\u0089\3\2\2\2\r\u008f\3\2\2\2\17\u0091\3\2\2\2\21\u0093\3\2\2\2\23\u0096"+
|
||||
"\3\2\2\2\25\u009b\3\2\2\2\27\u00a1\3\2\2\2\31\u00a4\3\2\2\2\33\u00a8\3"+
|
||||
"\2\2\2\35\u00af\3\2\2\2\37\u00b1\3\2\2\2!\u00b4\3\2\2\2#\u00b6\3\2\2\2"+
|
||||
"%\u00b8\3\2\2\2\'\u00ba\3\2\2\2)\u00bc\3\2\2\2+\u00bf\3\2\2\2-\u00c2\3"+
|
||||
"\2\2\2/\u00c4\3\2\2\2\61\u00c6\3\2\2\2\63\u00ca\3\2\2\2\65\u00cc\3\2\2"+
|
||||
"\2\67\u00ce\3\2\2\29\u00d1\3\2\2\2;\u00d4\3\2\2\2=\u00d6\3\2\2\2?\u00d9"+
|
||||
"\3\2\2\2A\u00dc\3\2\2\2C\u00df\3\2\2\2E\u00e1\3\2\2\2G\u00e4\3\2\2\2I"+
|
||||
"\u00e7\3\2\2\2K\u00ea\3\2\2\2M\u00ed\3\2\2\2O\u00ef\3\2\2\2Q\u00f3\3\2"+
|
||||
"\2\2S\u00f6\3\2\2\2U\u00f9\3\2\2\2W\u0115\3\2\2\2Y\u0117\3\2\2\2[\u012b"+
|
||||
"\3\2\2\2]\u012f\3\2\2\2_\u0134\3\2\2\2a\u013b\3\2\2\2c\u014c\3\2\2\2e"+
|
||||
"\u015a\3\2\2\2g\u016b\3\2\2\2i\u017a\3\2\2\2k\u017d\3\2\2\2m\u0186\3\2"+
|
||||
"\2\2o\u018d\3\2\2\2q\u018f\3\2\2\2s\u0191\3\2\2\2u\u0193\3\2\2\2w\u019a"+
|
||||
"\3\2\2\2y\u019c\3\2\2\2{\u019f\3\2\2\2}\u01a5\3\2\2\2\177\u01b0\3\2\2"+
|
||||
"\2\u0081\u0082\7}\2\2\u0082\4\3\2\2\2\u0083\u0084\7\177\2\2\u0084\6\3"+
|
||||
"\2\2\2\u0085\u0086\7*\2\2\u0086\b\3\2\2\2\u0087\u0088\7+\2\2\u0088\n\3"+
|
||||
"\2\2\2\u0089\u008a\7e\2\2\u008a\u008b\7q\2\2\u008b\u008c\7p\2\2\u008c"+
|
||||
"\u008d\7u\2\2\u008d\u008e\7v\2\2\u008e\f\3\2\2\2\u008f\u0090\7?\2\2\u0090"+
|
||||
"\16\3\2\2\2\u0091\u0092\7=\2\2\u0092\20\3\2\2\2\u0093\u0094\7k\2\2\u0094"+
|
||||
"\u0095\7h\2\2\u0095\22\3\2\2\2\u0096\u0097\7g\2\2\u0097\u0098\7n\2\2\u0098"+
|
||||
"\u0099\7u\2\2\u0099\u009a\7g\2\2\u009a\24\3\2\2\2\u009b\u009c\7y\2\2\u009c"+
|
||||
"\u009d\7j\2\2\u009d\u009e\7k\2\2\u009e\u009f\7n\2\2\u009f\u00a0\7g\2\2"+
|
||||
"\u00a0\26\3\2\2\2\u00a1\u00a2\7f\2\2\u00a2\u00a3\7q\2\2\u00a3\30\3\2\2"+
|
||||
"\2\u00a4\u00a5\7h\2\2\u00a5\u00a6\7q\2\2\u00a6\u00a7\7t\2\2\u00a7\32\3"+
|
||||
"\2\2\2\u00a8\u00a9\7t\2\2\u00a9\u00aa\7g\2\2\u00aa\u00ab\7v\2\2\u00ab"+
|
||||
"\u00ac\7w\2\2\u00ac\u00ad\7t\2\2\u00ad\u00ae\7p\2\2\u00ae\34\3\2\2\2\u00af"+
|
||||
"\u00b0\7<\2\2\u00b0\36\3\2\2\2\u00b1\u00b2\7\60\2\2\u00b2\u00b3\7\60\2"+
|
||||
"\2\u00b3 \3\2\2\2\u00b4\u00b5\7.\2\2\u00b5\"\3\2\2\2\u00b6\u00b7\7,\2"+
|
||||
"\2\u00b7$\3\2\2\2\u00b8\u00b9\7]\2\2\u00b9&\3\2\2\2\u00ba\u00bb\7_\2\2"+
|
||||
"\u00bb(\3\2\2\2\u00bc\u00bd\7/\2\2\u00bd\u00be\7/\2\2\u00be*\3\2\2\2\u00bf"+
|
||||
"\u00c0\7-\2\2\u00c0\u00c1\7-\2\2\u00c1,\3\2\2\2\u00c2\u00c3\7-\2\2\u00c3"+
|
||||
".\3\2\2\2\u00c4\u00c5\7/\2\2\u00c5\60\3\2\2\2\u00c6\u00c7\7p\2\2\u00c7"+
|
||||
"\u00c8\7q\2\2\u00c8\u00c9\7v\2\2\u00c9\62\3\2\2\2\u00ca\u00cb\7#\2\2\u00cb"+
|
||||
"\64\3\2\2\2\u00cc\u00cd\7(\2\2\u00cd\66\3\2\2\2\u00ce\u00cf\7@\2\2\u00cf"+
|
||||
"\u00d0\7@\2\2\u00d08\3\2\2\2\u00d1\u00d2\7>\2\2\u00d2\u00d3\7>\2\2\u00d3"+
|
||||
":\3\2\2\2\u00d4\u00d5\7\61\2\2\u00d5<\3\2\2\2\u00d6\u00d7\7?\2\2\u00d7"+
|
||||
"\u00d8\7?\2\2\u00d8>\3\2\2\2\u00d9\u00da\7#\2\2\u00da\u00db\7?\2\2\u00db"+
|
||||
"@\3\2\2\2\u00dc\u00dd\7>\2\2\u00dd\u00de\7@\2\2\u00deB\3\2\2\2\u00df\u00e0"+
|
||||
"\7>\2\2\u00e0D\3\2\2\2\u00e1\u00e2\7>\2\2\u00e2\u00e3\7?\2\2\u00e3F\3"+
|
||||
"\2\2\2\u00e4\u00e5\7?\2\2\u00e5\u00e6\7>\2\2\u00e6H\3\2\2\2\u00e7\u00e8"+
|
||||
"\7@\2\2\u00e8\u00e9\7?\2\2\u00e9J\3\2\2\2\u00ea\u00eb\7?\2\2\u00eb\u00ec"+
|
||||
"\7@\2\2\u00ecL\3\2\2\2\u00ed\u00ee\7@\2\2\u00eeN\3\2\2\2\u00ef\u00f0\7"+
|
||||
"c\2\2\u00f0\u00f1\7p\2\2\u00f1\u00f2\7f\2\2\u00f2P\3\2\2\2\u00f3\u00f4"+
|
||||
"\7(\2\2\u00f4\u00f5\7(\2\2\u00f5R\3\2\2\2\u00f6\u00f7\7q\2\2\u00f7\u00f8"+
|
||||
"\7t\2\2\u00f8T\3\2\2\2\u00f9\u00fa\7~\2\2\u00fa\u00fb\7~\2\2\u00fbV\3"+
|
||||
"\2\2\2\u00fc\u00fd\7d\2\2\u00fd\u00fe\7{\2\2\u00fe\u00ff\7v\2\2\u00ff"+
|
||||
"\u0116\7g\2\2\u0100\u0101\7y\2\2\u0101\u0102\7q\2\2\u0102\u0103\7t\2\2"+
|
||||
"\u0103\u0116\7f\2\2\u0104\u0105\7u\2\2\u0105\u0106\7v\2\2\u0106\u0107"+
|
||||
"\7t\2\2\u0107\u0108\7k\2\2\u0108\u0109\7p\2\2\u0109\u0116\7i\2\2\u010a"+
|
||||
"\u010b\7d\2\2\u010b\u010c\7q\2\2\u010c\u010d\7q\2\2\u010d\u010e\7n\2\2"+
|
||||
"\u010e\u010f\7g\2\2\u010f\u0110\7c\2\2\u0110\u0116\7p\2\2\u0111\u0112"+
|
||||
"\7x\2\2\u0112\u0113\7q\2\2\u0113\u0114\7k\2\2\u0114\u0116\7f\2\2\u0115"+
|
||||
"\u00fc\3\2\2\2\u0115\u0100\3\2\2\2\u0115\u0104\3\2\2\2\u0115\u010a\3\2"+
|
||||
"\2\2\u0115\u0111\3\2\2\2\u0116X\3\2\2\2\u0117\u011d\7$\2\2\u0118\u0119"+
|
||||
"\7^\2\2\u0119\u011c\7$\2\2\u011a\u011c\n\2\2\2\u011b\u0118\3\2\2\2\u011b"+
|
||||
"\u011a\3\2\2\2\u011c\u011f\3\2\2\2\u011d\u011b\3\2\2\2\u011d\u011e\3\2"+
|
||||
"\2\2\u011e\u0120\3\2\2\2\u011f\u011d\3\2\2\2\u0120\u0121\7$\2\2\u0121"+
|
||||
"Z\3\2\2\2\u0122\u0123\7v\2\2\u0123\u0124\7t\2\2\u0124\u0125\7w\2\2\u0125"+
|
||||
"\u012c\7g\2\2\u0126\u0127\7h\2\2\u0127\u0128\7c\2\2\u0128\u0129\7n\2\2"+
|
||||
"\u0129\u012a\7u\2\2\u012a\u012c\7g\2\2\u012b\u0122\3\2\2\2\u012b\u0126"+
|
||||
"\3\2\2\2\u012c\\\3\2\2\2\u012d\u0130\5_\60\2\u012e\u0130\5g\64\2\u012f"+
|
||||
"\u012d\3\2\2\2\u012f\u012e\3\2\2\2\u0130^\3\2\2\2\u0131\u0135\5a\61\2"+
|
||||
"\u0132\u0135\5c\62\2\u0133\u0135\5e\63\2\u0134\u0131\3\2\2\2\u0134\u0132"+
|
||||
"\3\2\2\2\u0134\u0133\3\2\2\2\u0135`\3\2\2\2\u0136\u013c\7\'\2\2\u0137"+
|
||||
"\u0138\7\62\2\2\u0138\u013c\7d\2\2\u0139\u013a\7\62\2\2\u013a\u013c\7"+
|
||||
"D\2\2\u013b\u0136\3\2\2\2\u013b\u0137\3\2\2\2\u013b\u0139\3\2\2\2\u013c"+
|
||||
"\u0140\3\2\2\2\u013d\u013f\5o8\2\u013e\u013d\3\2\2\2\u013f\u0142\3\2\2"+
|
||||
"\2\u0140\u013e\3\2\2\2\u0140\u0141\3\2\2\2\u0141\u0143\3\2\2\2\u0142\u0140"+
|
||||
"\3\2\2\2\u0143\u0145\7\60\2\2\u0144\u0146\5o8\2\u0145\u0144\3\2\2\2\u0146"+
|
||||
"\u0147\3\2\2\2\u0147\u0145\3\2\2\2\u0147\u0148\3\2\2\2\u0148b\3\2\2\2"+
|
||||
"\u0149\u014b\5q9\2\u014a\u0149\3\2\2\2\u014b\u014e\3\2\2\2\u014c\u014a"+
|
||||
"\3\2\2\2\u014c\u014d\3\2\2\2\u014d\u014f\3\2\2\2\u014e\u014c\3\2\2\2\u014f"+
|
||||
"\u0151\7\60\2\2\u0150\u0152\5q9\2\u0151\u0150\3\2\2\2\u0152\u0153\3\2"+
|
||||
"\2\2\u0153\u0151\3\2\2\2\u0153\u0154\3\2\2\2\u0154d\3\2\2\2\u0155\u015b"+
|
||||
"\7&\2\2\u0156\u0157\7\62\2\2\u0157\u015b\7z\2\2\u0158\u0159\7\62\2\2\u0159"+
|
||||
"\u015b\7Z\2\2\u015a\u0155\3\2\2\2\u015a\u0156\3\2\2\2\u015a\u0158\3\2"+
|
||||
"\2\2\u015b\u015f\3\2\2\2\u015c\u015e\5s:\2\u015d\u015c\3\2\2\2\u015e\u0161"+
|
||||
"\3\2\2\2\u015f\u015d\3\2\2\2\u015f\u0160\3\2\2\2\u0160\u0162\3\2\2\2\u0161"+
|
||||
"\u015f\3\2\2\2\u0162\u0164\7\60\2\2\u0163\u0165\5s:\2\u0164\u0163\3\2"+
|
||||
"\2\2\u0165\u0166\3\2\2\2\u0166\u0164\3\2\2\2\u0166\u0167\3\2\2\2\u0167"+
|
||||
"f\3\2\2\2\u0168\u016c\5k\66\2\u0169\u016c\5m\67\2\u016a\u016c\5i\65\2"+
|
||||
"\u016b\u0168\3\2\2\2\u016b\u0169\3\2\2\2\u016b\u016a\3\2\2\2\u016ch\3"+
|
||||
"\2\2\2\u016d\u016e\7\62\2\2\u016e\u0170\t\3\2\2\u016f\u0171\5o8\2\u0170"+
|
||||
"\u016f\3\2\2\2\u0171\u0172\3\2\2\2\u0172\u0170\3\2\2\2\u0172\u0173\3\2"+
|
||||
"\2\2\u0173\u017b\3\2\2\2\u0174\u0176\7\'\2\2\u0175\u0177\5o8\2\u0176\u0175"+
|
||||
"\3\2\2\2\u0177\u0178\3\2\2\2\u0178\u0176\3\2\2\2\u0178\u0179\3\2\2\2\u0179"+
|
||||
"\u017b\3\2\2\2\u017a\u016d\3\2\2\2\u017a\u0174\3\2\2\2\u017bj\3\2\2\2"+
|
||||
"\u017c\u017e\5q9\2\u017d\u017c\3\2\2\2\u017e\u017f\3\2\2\2\u017f\u017d"+
|
||||
"\3\2\2\2\u017f\u0180\3\2\2\2\u0180l\3\2\2\2\u0181\u0187\7&\2\2\u0182\u0183"+
|
||||
"\7\62\2\2\u0183\u0187\7z\2\2\u0184\u0185\7\62\2\2\u0185\u0187\7Z\2\2\u0186"+
|
||||
"\u0181\3\2\2\2\u0186\u0182\3\2\2\2\u0186\u0184\3\2\2\2\u0187\u0189\3\2"+
|
||||
"\2\2\u0188\u018a\5s:\2\u0189\u0188\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u0189"+
|
||||
"\3\2\2\2\u018b\u018c\3\2\2\2\u018cn\3\2\2\2\u018d\u018e\t\4\2\2\u018e"+
|
||||
"p\3\2\2\2\u018f\u0190\t\5\2\2\u0190r\3\2\2\2\u0191\u0192\t\6\2\2\u0192"+
|
||||
"t\3\2\2\2\u0193\u0197\5w<\2\u0194\u0196\5y=\2\u0195\u0194\3\2\2\2\u0196"+
|
||||
"\u0199\3\2\2\2\u0197\u0195\3\2\2\2\u0197\u0198\3\2\2\2\u0198v\3\2\2\2"+
|
||||
"\u0199\u0197\3\2\2\2\u019a\u019b\t\7\2\2\u019bx\3\2\2\2\u019c\u019d\t"+
|
||||
"\b\2\2\u019dz\3\2\2\2\u019e\u01a0\t\t\2\2\u019f\u019e\3\2\2\2\u01a0\u01a1"+
|
||||
"\3\2\2\2\u01a1\u019f\3\2\2\2\u01a1\u01a2\3\2\2\2\u01a2\u01a3\3\2\2\2\u01a3"+
|
||||
"\u01a4\b>\2\2\u01a4|\3\2\2\2\u01a5\u01a6\7\61\2\2\u01a6\u01a7\7\61\2\2"+
|
||||
"\u01a7\u01ab\3\2\2\2\u01a8\u01aa\n\n\2\2\u01a9\u01a8\3\2\2\2\u01aa\u01ad"+
|
||||
"\3\2\2\2\u01ab\u01a9\3\2\2\2\u01ab\u01ac\3\2\2\2\u01ac\u01ae\3\2\2\2\u01ad"+
|
||||
"\u01ab\3\2\2\2\u01ae\u01af\b?\2\2\u01af~\3\2\2\2\u01b0\u01b1\7\61\2\2"+
|
||||
"\u01b1\u01b2\7,\2\2\u01b2\u01b6\3\2\2\2\u01b3\u01b5\13\2\2\2\u01b4\u01b3"+
|
||||
"\3\2\2\2\u01b5\u01b8\3\2\2\2\u01b6\u01b7\3\2\2\2\u01b6\u01b4\3\2\2\2\u01b7"+
|
||||
"\u01b9\3\2\2\2\u01b8\u01b6\3\2\2\2\u01b9\u01ba\7,\2\2\u01ba\u01bb\7\61"+
|
||||
"\2\2\u01bb\u01bc\3\2\2\2\u01bc\u01bd\b@\2\2\u01bd\u0080\3\2\2\2\34\2\u0115"+
|
||||
"\u011b\u011d\u012b\u012f\u0134\u013b\u0140\u0147\u014c\u0153\u015a\u015f"+
|
||||
"\u0166\u016b\u0172\u0178\u017a\u017f\u0186\u018b\u0197\u01a1\u01ab\u01b6"+
|
||||
"\3\b\2\2";
|
||||
public static final ATN _ATN =
|
||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||
static {
|
||||
|
@ -40,24 +40,22 @@ T__38=39
|
||||
T__39=40
|
||||
T__40=41
|
||||
T__41=42
|
||||
T__42=43
|
||||
T__43=44
|
||||
SIMPLETYPE=45
|
||||
STRING=46
|
||||
BOOLEAN=47
|
||||
NUMBER=48
|
||||
NUMFLOAT=49
|
||||
BINFLOAT=50
|
||||
DECFLOAT=51
|
||||
HEXFLOAT=52
|
||||
NUMINT=53
|
||||
BININTEGER=54
|
||||
DECINTEGER=55
|
||||
HEXINTEGER=56
|
||||
NAME=57
|
||||
WS=58
|
||||
COMMENT_LINE=59
|
||||
COMMENT_BLOCK=60
|
||||
SIMPLETYPE=43
|
||||
STRING=44
|
||||
BOOLEAN=45
|
||||
NUMBER=46
|
||||
NUMFLOAT=47
|
||||
BINFLOAT=48
|
||||
DECFLOAT=49
|
||||
HEXFLOAT=50
|
||||
NUMINT=51
|
||||
BININTEGER=52
|
||||
DECINTEGER=53
|
||||
HEXINTEGER=54
|
||||
NAME=55
|
||||
WS=56
|
||||
COMMENT_LINE=57
|
||||
COMMENT_BLOCK=58
|
||||
'{'=1
|
||||
'}'=2
|
||||
'('=3
|
||||
@ -73,32 +71,30 @@ COMMENT_BLOCK=60
|
||||
'return'=13
|
||||
':'=14
|
||||
'..'=15
|
||||
'.++.'=16
|
||||
'.--.'=17
|
||||
','=18
|
||||
'*'=19
|
||||
'['=20
|
||||
']'=21
|
||||
'--'=22
|
||||
'++'=23
|
||||
'+'=24
|
||||
'-'=25
|
||||
'not'=26
|
||||
'!'=27
|
||||
'&'=28
|
||||
'>>'=29
|
||||
'<<'=30
|
||||
'/'=31
|
||||
'=='=32
|
||||
'!='=33
|
||||
'<>'=34
|
||||
'<'=35
|
||||
'<='=36
|
||||
'=<'=37
|
||||
'>='=38
|
||||
'=>'=39
|
||||
'>'=40
|
||||
'and'=41
|
||||
'&&'=42
|
||||
'or'=43
|
||||
'||'=44
|
||||
','=16
|
||||
'*'=17
|
||||
'['=18
|
||||
']'=19
|
||||
'--'=20
|
||||
'++'=21
|
||||
'+'=22
|
||||
'-'=23
|
||||
'not'=24
|
||||
'!'=25
|
||||
'&'=26
|
||||
'>>'=27
|
||||
'<<'=28
|
||||
'/'=29
|
||||
'=='=30
|
||||
'!='=31
|
||||
'<>'=32
|
||||
'<'=33
|
||||
'<='=34
|
||||
'=<'=35
|
||||
'>='=36
|
||||
'=>'=37
|
||||
'>'=38
|
||||
'and'=39
|
||||
'&&'=40
|
||||
'or'=41
|
||||
'||'=42
|
||||
|
@ -22,10 +22,10 @@ public class KickCParser extends Parser {
|
||||
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
|
||||
T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31,
|
||||
T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38,
|
||||
T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, SIMPLETYPE=45,
|
||||
STRING=46, BOOLEAN=47, NUMBER=48, NUMFLOAT=49, BINFLOAT=50, DECFLOAT=51,
|
||||
HEXFLOAT=52, NUMINT=53, BININTEGER=54, DECINTEGER=55, HEXINTEGER=56, NAME=57,
|
||||
WS=58, COMMENT_LINE=59, COMMENT_BLOCK=60;
|
||||
T__38=39, T__39=40, T__40=41, T__41=42, SIMPLETYPE=43, STRING=44, BOOLEAN=45,
|
||||
NUMBER=46, NUMFLOAT=47, BINFLOAT=48, DECFLOAT=49, HEXFLOAT=50, NUMINT=51,
|
||||
BININTEGER=52, DECINTEGER=53, HEXINTEGER=54, NAME=55, WS=56, COMMENT_LINE=57,
|
||||
COMMENT_BLOCK=58;
|
||||
public static final int
|
||||
RULE_file = 0, RULE_stmtSeq = 1, RULE_stmt = 2, RULE_forDeclaration = 3,
|
||||
RULE_forIteration = 4, RULE_parameterListDecl = 5, RULE_parameterDecl = 6,
|
||||
@ -38,19 +38,18 @@ public class KickCParser extends Parser {
|
||||
|
||||
private static final String[] _LITERAL_NAMES = {
|
||||
null, "'{'", "'}'", "'('", "')'", "'const'", "'='", "';'", "'if'", "'else'",
|
||||
"'while'", "'do'", "'for'", "'return'", "':'", "'..'", "'.++.'", "'.--.'",
|
||||
"','", "'*'", "'['", "']'", "'--'", "'++'", "'+'", "'-'", "'not'", "'!'",
|
||||
"'&'", "'>>'", "'<<'", "'/'", "'=='", "'!='", "'<>'", "'<'", "'<='", "'=<'",
|
||||
"'>='", "'=>'", "'>'", "'and'", "'&&'", "'or'", "'||'"
|
||||
"'while'", "'do'", "'for'", "'return'", "':'", "'..'", "','", "'*'", "'['",
|
||||
"']'", "'--'", "'++'", "'+'", "'-'", "'not'", "'!'", "'&'", "'>>'", "'<<'",
|
||||
"'/'", "'=='", "'!='", "'<>'", "'<'", "'<='", "'=<'", "'>='", "'=>'",
|
||||
"'>'", "'and'", "'&&'", "'or'", "'||'"
|
||||
};
|
||||
private static final String[] _SYMBOLIC_NAMES = {
|
||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, null, null, "SIMPLETYPE", "STRING",
|
||||
"BOOLEAN", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT", "NUMINT",
|
||||
"BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME", "WS", "COMMENT_LINE",
|
||||
"COMMENT_BLOCK"
|
||||
null, null, null, null, null, null, null, "SIMPLETYPE", "STRING", "BOOLEAN",
|
||||
"NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER",
|
||||
"DECINTEGER", "HEXINTEGER", "NAME", "WS", "COMMENT_LINE", "COMMENT_BLOCK"
|
||||
};
|
||||
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
|
||||
|
||||
@ -194,7 +193,7 @@ public class KickCParser extends Parser {
|
||||
setState(30);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__2) | (1L << T__4) | (1L << T__7) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__18) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0) );
|
||||
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__2) | (1L << T__4) | (1L << T__7) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__16) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0) );
|
||||
}
|
||||
}
|
||||
catch (RecognitionException re) {
|
||||
@ -459,7 +458,7 @@ public class KickCParser extends Parser {
|
||||
setState(34);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__2) | (1L << T__4) | (1L << T__7) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__18) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__2) | (1L << T__4) | (1L << T__7) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__16) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
{
|
||||
setState(33);
|
||||
stmtSeq();
|
||||
@ -497,7 +496,7 @@ public class KickCParser extends Parser {
|
||||
setState(46);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__2) | (1L << T__4) | (1L << T__7) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__18) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__2) | (1L << T__4) | (1L << T__7) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__16) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
{
|
||||
setState(45);
|
||||
stmtSeq();
|
||||
@ -663,7 +662,7 @@ public class KickCParser extends Parser {
|
||||
setState(102);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__18) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__16) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
{
|
||||
setState(101);
|
||||
expr(0);
|
||||
@ -844,7 +843,7 @@ public class KickCParser extends Parser {
|
||||
setState(119);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__18) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__16) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
{
|
||||
setState(118);
|
||||
expr(0);
|
||||
@ -861,15 +860,9 @@ public class KickCParser extends Parser {
|
||||
match(T__13);
|
||||
setState(122);
|
||||
expr(0);
|
||||
{
|
||||
setState(123);
|
||||
_la = _input.LA(1);
|
||||
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__15) | (1L << T__16))) != 0)) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
|
||||
_errHandler.reportMatch(this);
|
||||
consume();
|
||||
match(T__14);
|
||||
}
|
||||
setState(124);
|
||||
expr(0);
|
||||
@ -928,11 +921,11 @@ public class KickCParser extends Parser {
|
||||
setState(133);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
while (_la==T__17) {
|
||||
while (_la==T__15) {
|
||||
{
|
||||
{
|
||||
setState(129);
|
||||
match(T__17);
|
||||
match(T__15);
|
||||
setState(130);
|
||||
parameterDecl();
|
||||
}
|
||||
@ -1114,7 +1107,7 @@ public class KickCParser extends Parser {
|
||||
setState(142);
|
||||
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
|
||||
setState(143);
|
||||
match(T__18);
|
||||
match(T__16);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@ -1124,11 +1117,11 @@ public class KickCParser extends Parser {
|
||||
setState(144);
|
||||
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
|
||||
setState(145);
|
||||
match(T__19);
|
||||
match(T__17);
|
||||
setState(147);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__18) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__16) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
{
|
||||
setState(146);
|
||||
expr(0);
|
||||
@ -1136,7 +1129,7 @@ public class KickCParser extends Parser {
|
||||
}
|
||||
|
||||
setState(149);
|
||||
match(T__20);
|
||||
match(T__18);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1221,14 +1214,14 @@ public class KickCParser extends Parser {
|
||||
_errHandler.sync(this);
|
||||
switch (_input.LA(1)) {
|
||||
case T__2:
|
||||
case T__18:
|
||||
case T__16:
|
||||
case T__19:
|
||||
case T__20:
|
||||
case T__21:
|
||||
case T__22:
|
||||
case T__23:
|
||||
case T__24:
|
||||
case T__25:
|
||||
case T__26:
|
||||
case T__27:
|
||||
case STRING:
|
||||
case BOOLEAN:
|
||||
case NUMBER:
|
||||
@ -1251,11 +1244,11 @@ public class KickCParser extends Parser {
|
||||
setState(162);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
while (_la==T__17) {
|
||||
while (_la==T__15) {
|
||||
{
|
||||
{
|
||||
setState(158);
|
||||
match(T__17);
|
||||
match(T__15);
|
||||
setState(159);
|
||||
initializer();
|
||||
}
|
||||
@ -1413,13 +1406,13 @@ public class KickCParser extends Parser {
|
||||
match(NAME);
|
||||
}
|
||||
break;
|
||||
case T__18:
|
||||
case T__16:
|
||||
{
|
||||
_localctx = new LvaluePtrContext(_localctx);
|
||||
_ctx = _localctx;
|
||||
_prevctx = _localctx;
|
||||
setState(175);
|
||||
match(T__18);
|
||||
match(T__16);
|
||||
setState(176);
|
||||
lvalue(2);
|
||||
}
|
||||
@ -1442,11 +1435,11 @@ public class KickCParser extends Parser {
|
||||
setState(179);
|
||||
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
|
||||
setState(180);
|
||||
match(T__19);
|
||||
match(T__17);
|
||||
setState(181);
|
||||
expr(0);
|
||||
setState(182);
|
||||
match(T__20);
|
||||
match(T__18);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1754,7 +1747,7 @@ public class KickCParser extends Parser {
|
||||
setState(197);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__18) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__16) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << STRING) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) {
|
||||
{
|
||||
setState(196);
|
||||
parameterList();
|
||||
@ -1787,7 +1780,7 @@ public class KickCParser extends Parser {
|
||||
_prevctx = _localctx;
|
||||
setState(205);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==T__21 || _la==T__22) ) {
|
||||
if ( !(_la==T__19 || _la==T__20) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1806,7 +1799,7 @@ public class KickCParser extends Parser {
|
||||
_prevctx = _localctx;
|
||||
setState(207);
|
||||
_la = _input.LA(1);
|
||||
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__18) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27))) != 0)) ) {
|
||||
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__16) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25))) != 0)) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1875,7 +1868,7 @@ public class KickCParser extends Parser {
|
||||
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
|
||||
setState(216);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==T__28 || _la==T__29) ) {
|
||||
if ( !(_la==T__26 || _la==T__27) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1895,7 +1888,7 @@ public class KickCParser extends Parser {
|
||||
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
|
||||
setState(219);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==T__18 || _la==T__30) ) {
|
||||
if ( !(_la==T__16 || _la==T__28) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1915,7 +1908,7 @@ public class KickCParser extends Parser {
|
||||
if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
|
||||
setState(222);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==T__23 || _la==T__24) ) {
|
||||
if ( !(_la==T__21 || _la==T__22) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1935,7 +1928,7 @@ public class KickCParser extends Parser {
|
||||
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
|
||||
setState(225);
|
||||
_la = _input.LA(1);
|
||||
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__31) | (1L << T__32) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39))) != 0)) ) {
|
||||
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__29) | (1L << T__30) | (1L << T__31) | (1L << T__32) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37))) != 0)) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1955,7 +1948,7 @@ public class KickCParser extends Parser {
|
||||
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
|
||||
setState(228);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==T__40 || _la==T__41) ) {
|
||||
if ( !(_la==T__38 || _la==T__39) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1975,7 +1968,7 @@ public class KickCParser extends Parser {
|
||||
if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
|
||||
setState(231);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==T__42 || _la==T__43) ) {
|
||||
if ( !(_la==T__40 || _la==T__41) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -1994,11 +1987,11 @@ public class KickCParser extends Parser {
|
||||
setState(233);
|
||||
if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
|
||||
setState(234);
|
||||
match(T__19);
|
||||
match(T__17);
|
||||
setState(235);
|
||||
expr(0);
|
||||
setState(236);
|
||||
match(T__20);
|
||||
match(T__18);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
@ -2009,7 +2002,7 @@ public class KickCParser extends Parser {
|
||||
if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
|
||||
setState(239);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==T__21 || _la==T__22) ) {
|
||||
if ( !(_la==T__19 || _la==T__20) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -2077,11 +2070,11 @@ public class KickCParser extends Parser {
|
||||
setState(250);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
while (_la==T__17) {
|
||||
while (_la==T__15) {
|
||||
{
|
||||
{
|
||||
setState(246);
|
||||
match(T__17);
|
||||
match(T__15);
|
||||
setState(247);
|
||||
expr(0);
|
||||
}
|
||||
@ -2153,7 +2146,7 @@ public class KickCParser extends Parser {
|
||||
}
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3>\u0100\4\2\t\2\4"+
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3<\u0100\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\3\2\3\2\3\2\3\3\6\3\37\n\3\r\3\16\3 \3\4\3\4\5\4%"+
|
||||
"\n\4\3\4\3\4\3\4\3\4\3\4\5\4,\n\4\3\4\3\4\3\4\5\4\61\n\4\3\4\3\4\3\4\5"+
|
||||
@ -2171,17 +2164,17 @@ public class KickCParser extends Parser {
|
||||
"\u00d8\n\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\3\f"+
|
||||
"\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\7\f\u00f3\n\f\f\f\16\f\u00f6"+
|
||||
"\13\f\3\r\3\r\3\r\7\r\u00fb\n\r\f\r\16\r\u00fe\13\r\3\r\2\5\20\24\26\16"+
|
||||
"\2\4\6\b\n\f\16\20\22\24\26\30\2\13\3\2\21\23\3\2\30\31\4\2\25\25\32\36"+
|
||||
"\3\2\37 \4\2\25\25!!\3\2\32\33\3\2\"*\3\2+,\3\2-.\2\u0124\2\32\3\2\2\2"+
|
||||
"\4\36\3\2\2\2\6k\3\2\2\2\bn\3\2\2\2\n\u0080\3\2\2\2\f\u0082\3\2\2\2\16"+
|
||||
"\u008a\3\2\2\2\20\u008d\3\2\2\2\22\u00a9\3\2\2\2\24\u00b3\3\2\2\2\26\u00d7"+
|
||||
"\3\2\2\2\30\u00f7\3\2\2\2\32\33\5\4\3\2\33\34\7\2\2\3\34\3\3\2\2\2\35"+
|
||||
"\37\5\6\4\2\36\35\3\2\2\2\37 \3\2\2\2 \36\3\2\2\2 !\3\2\2\2!\5\3\2\2\2"+
|
||||
"\"$\7\3\2\2#%\5\4\3\2$#\3\2\2\2$%\3\2\2\2%&\3\2\2\2&l\7\4\2\2\'(\5\20"+
|
||||
"\t\2()\7;\2\2)+\7\5\2\2*,\5\f\7\2+*\3\2\2\2+,\3\2\2\2,-\3\2\2\2-.\7\6"+
|
||||
"\2\2.\60\7\3\2\2/\61\5\4\3\2\60/\3\2\2\2\60\61\3\2\2\2\61\62\3\2\2\2\62"+
|
||||
"\2\4\6\b\n\f\16\20\22\24\26\30\2\n\3\2\26\27\4\2\23\23\30\34\3\2\35\36"+
|
||||
"\4\2\23\23\37\37\3\2\30\31\3\2 (\3\2)*\3\2+,\2\u0124\2\32\3\2\2\2\4\36"+
|
||||
"\3\2\2\2\6k\3\2\2\2\bn\3\2\2\2\n\u0080\3\2\2\2\f\u0082\3\2\2\2\16\u008a"+
|
||||
"\3\2\2\2\20\u008d\3\2\2\2\22\u00a9\3\2\2\2\24\u00b3\3\2\2\2\26\u00d7\3"+
|
||||
"\2\2\2\30\u00f7\3\2\2\2\32\33\5\4\3\2\33\34\7\2\2\3\34\3\3\2\2\2\35\37"+
|
||||
"\5\6\4\2\36\35\3\2\2\2\37 \3\2\2\2 \36\3\2\2\2 !\3\2\2\2!\5\3\2\2\2\""+
|
||||
"$\7\3\2\2#%\5\4\3\2$#\3\2\2\2$%\3\2\2\2%&\3\2\2\2&l\7\4\2\2\'(\5\20\t"+
|
||||
"\2()\79\2\2)+\7\5\2\2*,\5\f\7\2+*\3\2\2\2+,\3\2\2\2,-\3\2\2\2-.\7\6\2"+
|
||||
"\2.\60\7\3\2\2/\61\5\4\3\2\60/\3\2\2\2\60\61\3\2\2\2\61\62\3\2\2\2\62"+
|
||||
"\63\7\4\2\2\63l\3\2\2\2\64\66\7\7\2\2\65\64\3\2\2\2\65\66\3\2\2\2\66\67"+
|
||||
"\3\2\2\2\678\5\20\t\28;\7;\2\29:\7\b\2\2:<\5\22\n\2;9\3\2\2\2;<\3\2\2"+
|
||||
"\3\2\2\2\678\5\20\t\28;\79\2\29:\7\b\2\2:<\5\22\n\2;9\3\2\2\2;<\3\2\2"+
|
||||
"\2<=\3\2\2\2=>\7\t\2\2>l\3\2\2\2?@\5\24\13\2@A\7\b\2\2AB\5\26\f\2BC\7"+
|
||||
"\t\2\2Cl\3\2\2\2DE\5\26\f\2EF\7\t\2\2Fl\3\2\2\2GH\7\n\2\2HI\7\5\2\2IJ"+
|
||||
"\5\26\f\2JK\7\6\2\2KN\5\6\4\2LM\7\13\2\2MO\5\6\4\2NL\3\2\2\2NO\3\2\2\2"+
|
||||
@ -2191,52 +2184,52 @@ public class KickCParser extends Parser {
|
||||
"\5\n\6\2cd\7\6\2\2de\5\6\4\2el\3\2\2\2fh\7\17\2\2gi\5\26\f\2hg\3\2\2\2"+
|
||||
"hi\3\2\2\2ij\3\2\2\2jl\7\t\2\2k\"\3\2\2\2k\'\3\2\2\2k\65\3\2\2\2k?\3\2"+
|
||||
"\2\2kD\3\2\2\2kG\3\2\2\2kP\3\2\2\2kV\3\2\2\2k]\3\2\2\2kf\3\2\2\2l\7\3"+
|
||||
"\2\2\2mo\5\20\t\2nm\3\2\2\2no\3\2\2\2op\3\2\2\2ps\7;\2\2qr\7\b\2\2rt\5"+
|
||||
"\2\2\2mo\5\20\t\2nm\3\2\2\2no\3\2\2\2op\3\2\2\2ps\79\2\2qr\7\b\2\2rt\5"+
|
||||
"\22\n\2sq\3\2\2\2st\3\2\2\2t\t\3\2\2\2uv\7\t\2\2vw\5\26\f\2wy\7\t\2\2"+
|
||||
"xz\5\26\f\2yx\3\2\2\2yz\3\2\2\2z\u0081\3\2\2\2{|\7\20\2\2|}\5\26\f\2}"+
|
||||
"~\t\2\2\2~\177\5\26\f\2\177\u0081\3\2\2\2\u0080u\3\2\2\2\u0080{\3\2\2"+
|
||||
"\2\u0081\13\3\2\2\2\u0082\u0087\5\16\b\2\u0083\u0084\7\24\2\2\u0084\u0086"+
|
||||
"~\7\21\2\2~\177\5\26\f\2\177\u0081\3\2\2\2\u0080u\3\2\2\2\u0080{\3\2\2"+
|
||||
"\2\u0081\13\3\2\2\2\u0082\u0087\5\16\b\2\u0083\u0084\7\22\2\2\u0084\u0086"+
|
||||
"\5\16\b\2\u0085\u0083\3\2\2\2\u0086\u0089\3\2\2\2\u0087\u0085\3\2\2\2"+
|
||||
"\u0087\u0088\3\2\2\2\u0088\r\3\2\2\2\u0089\u0087\3\2\2\2\u008a\u008b\5"+
|
||||
"\20\t\2\u008b\u008c\7;\2\2\u008c\17\3\2\2\2\u008d\u008e\b\t\1\2\u008e"+
|
||||
"\u008f\7/\2\2\u008f\u009a\3\2\2\2\u0090\u0091\f\4\2\2\u0091\u0099\7\25"+
|
||||
"\2\2\u0092\u0093\f\3\2\2\u0093\u0095\7\26\2\2\u0094\u0096\5\26\f\2\u0095"+
|
||||
"\u0094\3\2\2\2\u0095\u0096\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u0099\7\27"+
|
||||
"\20\t\2\u008b\u008c\79\2\2\u008c\17\3\2\2\2\u008d\u008e\b\t\1\2\u008e"+
|
||||
"\u008f\7-\2\2\u008f\u009a\3\2\2\2\u0090\u0091\f\4\2\2\u0091\u0099\7\23"+
|
||||
"\2\2\u0092\u0093\f\3\2\2\u0093\u0095\7\24\2\2\u0094\u0096\5\26\f\2\u0095"+
|
||||
"\u0094\3\2\2\2\u0095\u0096\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u0099\7\25"+
|
||||
"\2\2\u0098\u0090\3\2\2\2\u0098\u0092\3\2\2\2\u0099\u009c\3\2\2\2\u009a"+
|
||||
"\u0098\3\2\2\2\u009a\u009b\3\2\2\2\u009b\21\3\2\2\2\u009c\u009a\3\2\2"+
|
||||
"\2\u009d\u00aa\5\26\f\2\u009e\u009f\7\3\2\2\u009f\u00a4\5\22\n\2\u00a0"+
|
||||
"\u00a1\7\24\2\2\u00a1\u00a3\5\22\n\2\u00a2\u00a0\3\2\2\2\u00a3\u00a6\3"+
|
||||
"\u00a1\7\22\2\2\u00a1\u00a3\5\22\n\2\u00a2\u00a0\3\2\2\2\u00a3\u00a6\3"+
|
||||
"\2\2\2\u00a4\u00a2\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5\u00a7\3\2\2\2\u00a6"+
|
||||
"\u00a4\3\2\2\2\u00a7\u00a8\7\4\2\2\u00a8\u00aa\3\2\2\2\u00a9\u009d\3\2"+
|
||||
"\2\2\u00a9\u009e\3\2\2\2\u00aa\23\3\2\2\2\u00ab\u00ac\b\13\1\2\u00ac\u00ad"+
|
||||
"\7\5\2\2\u00ad\u00ae\5\24\13\2\u00ae\u00af\7\6\2\2\u00af\u00b4\3\2\2\2"+
|
||||
"\u00b0\u00b4\7;\2\2\u00b1\u00b2\7\25\2\2\u00b2\u00b4\5\24\13\4\u00b3\u00ab"+
|
||||
"\u00b0\u00b4\79\2\2\u00b1\u00b2\7\23\2\2\u00b2\u00b4\5\24\13\4\u00b3\u00ab"+
|
||||
"\3\2\2\2\u00b3\u00b0\3\2\2\2\u00b3\u00b1\3\2\2\2\u00b4\u00bc\3\2\2\2\u00b5"+
|
||||
"\u00b6\f\3\2\2\u00b6\u00b7\7\26\2\2\u00b7\u00b8\5\26\f\2\u00b8\u00b9\7"+
|
||||
"\27\2\2\u00b9\u00bb\3\2\2\2\u00ba\u00b5\3\2\2\2\u00bb\u00be\3\2\2\2\u00bc"+
|
||||
"\u00b6\f\3\2\2\u00b6\u00b7\7\24\2\2\u00b7\u00b8\5\26\f\2\u00b8\u00b9\7"+
|
||||
"\25\2\2\u00b9\u00bb\3\2\2\2\u00ba\u00b5\3\2\2\2\u00bb\u00be\3\2\2\2\u00bc"+
|
||||
"\u00ba\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd\25\3\2\2\2\u00be\u00bc\3\2\2"+
|
||||
"\2\u00bf\u00c0\b\f\1\2\u00c0\u00c1\7\5\2\2\u00c1\u00c2\5\26\f\2\u00c2"+
|
||||
"\u00c3\7\6\2\2\u00c3\u00d8\3\2\2\2\u00c4\u00c5\7;\2\2\u00c5\u00c7\7\5"+
|
||||
"\u00c3\7\6\2\2\u00c3\u00d8\3\2\2\2\u00c4\u00c5\79\2\2\u00c5\u00c7\7\5"+
|
||||
"\2\2\u00c6\u00c8\5\30\r\2\u00c7\u00c6\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8"+
|
||||
"\u00c9\3\2\2\2\u00c9\u00d8\7\6\2\2\u00ca\u00cb\7\5\2\2\u00cb\u00cc\5\20"+
|
||||
"\t\2\u00cc\u00cd\7\6\2\2\u00cd\u00ce\5\26\f\21\u00ce\u00d8\3\2\2\2\u00cf"+
|
||||
"\u00d0\t\3\2\2\u00d0\u00d8\5\26\f\17\u00d1\u00d2\t\4\2\2\u00d2\u00d8\5"+
|
||||
"\26\f\r\u00d3\u00d8\7;\2\2\u00d4\u00d8\7\62\2\2\u00d5\u00d8\7\60\2\2\u00d6"+
|
||||
"\u00d8\7\61\2\2\u00d7\u00bf\3\2\2\2\u00d7\u00c4\3\2\2\2\u00d7\u00ca\3"+
|
||||
"\2\2\2\u00d7\u00cf\3\2\2\2\u00d7\u00d1\3\2\2\2\u00d7\u00d3\3\2\2\2\u00d7"+
|
||||
"\u00d0\t\2\2\2\u00d0\u00d8\5\26\f\17\u00d1\u00d2\t\3\2\2\u00d2\u00d8\5"+
|
||||
"\26\f\r\u00d3\u00d8\79\2\2\u00d4\u00d8\7\60\2\2\u00d5\u00d8\7.\2\2\u00d6"+
|
||||
"\u00d8\7/\2\2\u00d7\u00bf\3\2\2\2\u00d7\u00c4\3\2\2\2\u00d7\u00ca\3\2"+
|
||||
"\2\2\u00d7\u00cf\3\2\2\2\u00d7\u00d1\3\2\2\2\u00d7\u00d3\3\2\2\2\u00d7"+
|
||||
"\u00d4\3\2\2\2\u00d7\u00d5\3\2\2\2\u00d7\u00d6\3\2\2\2\u00d8\u00f4\3\2"+
|
||||
"\2\2\u00d9\u00da\f\f\2\2\u00da\u00db\t\5\2\2\u00db\u00f3\5\26\f\r\u00dc"+
|
||||
"\u00dd\f\13\2\2\u00dd\u00de\t\6\2\2\u00de\u00f3\5\26\f\f\u00df\u00e0\f"+
|
||||
"\n\2\2\u00e0\u00e1\t\7\2\2\u00e1\u00f3\5\26\f\13\u00e2\u00e3\f\t\2\2\u00e3"+
|
||||
"\u00e4\t\b\2\2\u00e4\u00f3\5\26\f\n\u00e5\u00e6\f\b\2\2\u00e6\u00e7\t"+
|
||||
"\t\2\2\u00e7\u00f3\5\26\f\t\u00e8\u00e9\f\7\2\2\u00e9\u00ea\t\n\2\2\u00ea"+
|
||||
"\u00f3\5\26\f\b\u00eb\u00ec\f\20\2\2\u00ec\u00ed\7\26\2\2\u00ed\u00ee"+
|
||||
"\5\26\f\2\u00ee\u00ef\7\27\2\2\u00ef\u00f3\3\2\2\2\u00f0\u00f1\f\16\2"+
|
||||
"\2\u00f1\u00f3\t\3\2\2\u00f2\u00d9\3\2\2\2\u00f2\u00dc\3\2\2\2\u00f2\u00df"+
|
||||
"\2\2\u00d9\u00da\f\f\2\2\u00da\u00db\t\4\2\2\u00db\u00f3\5\26\f\r\u00dc"+
|
||||
"\u00dd\f\13\2\2\u00dd\u00de\t\5\2\2\u00de\u00f3\5\26\f\f\u00df\u00e0\f"+
|
||||
"\n\2\2\u00e0\u00e1\t\6\2\2\u00e1\u00f3\5\26\f\13\u00e2\u00e3\f\t\2\2\u00e3"+
|
||||
"\u00e4\t\7\2\2\u00e4\u00f3\5\26\f\n\u00e5\u00e6\f\b\2\2\u00e6\u00e7\t"+
|
||||
"\b\2\2\u00e7\u00f3\5\26\f\t\u00e8\u00e9\f\7\2\2\u00e9\u00ea\t\t\2\2\u00ea"+
|
||||
"\u00f3\5\26\f\b\u00eb\u00ec\f\20\2\2\u00ec\u00ed\7\24\2\2\u00ed\u00ee"+
|
||||
"\5\26\f\2\u00ee\u00ef\7\25\2\2\u00ef\u00f3\3\2\2\2\u00f0\u00f1\f\16\2"+
|
||||
"\2\u00f1\u00f3\t\2\2\2\u00f2\u00d9\3\2\2\2\u00f2\u00dc\3\2\2\2\u00f2\u00df"+
|
||||
"\3\2\2\2\u00f2\u00e2\3\2\2\2\u00f2\u00e5\3\2\2\2\u00f2\u00e8\3\2\2\2\u00f2"+
|
||||
"\u00eb\3\2\2\2\u00f2\u00f0\3\2\2\2\u00f3\u00f6\3\2\2\2\u00f4\u00f2\3\2"+
|
||||
"\2\2\u00f4\u00f5\3\2\2\2\u00f5\27\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f7\u00fc"+
|
||||
"\5\26\f\2\u00f8\u00f9\7\24\2\2\u00f9\u00fb\5\26\f\2\u00fa\u00f8\3\2\2"+
|
||||
"\5\26\f\2\u00f8\u00f9\7\22\2\2\u00f9\u00fb\5\26\f\2\u00fa\u00f8\3\2\2"+
|
||||
"\2\u00fb\u00fe\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd\31"+
|
||||
"\3\2\2\2\u00fe\u00fc\3\2\2\2\35 $+\60\65;N`hknsy\u0080\u0087\u0095\u0098"+
|
||||
"\u009a\u00a4\u00a9\u00b3\u00bc\u00c7\u00d7\u00f2\u00f4\u00fc";
|
||||
|
@ -51,17 +51,17 @@ public class ParseTreeConstantEvaluator extends KickCBaseVisitor<Constant> {
|
||||
|
||||
@Override
|
||||
public Constant visitExprCall(KickCParser.ExprCallContext ctx) {
|
||||
throw new RuntimeException("Not implemented!");
|
||||
throw new NotConstantException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Constant visitExprArray(KickCParser.ExprArrayContext ctx) {
|
||||
throw new RuntimeException("Not implemented!");
|
||||
throw new NotConstantException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Constant visitExprId(KickCParser.ExprIdContext ctx) {
|
||||
throw new RuntimeException("Not implemented!");
|
||||
throw new NotConstantException();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -71,7 +71,7 @@ public class ParseTreeConstantEvaluator extends KickCBaseVisitor<Constant> {
|
||||
|
||||
@Override
|
||||
public Constant visitInitList(KickCParser.InitListContext ctx) {
|
||||
throw new RuntimeException("Not implemented!");
|
||||
throw new NotConstantException();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -90,4 +90,15 @@ public class ParseTreeConstantEvaluator extends KickCBaseVisitor<Constant> {
|
||||
Operator operator = new Operator(op);
|
||||
return Pass2ConstantPropagation.calculateBinary(operator, left, right);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** Thrown if the expression is not a constant. */
|
||||
public static class NotConstantException extends RuntimeException {
|
||||
|
||||
public NotConstantException() {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -214,25 +214,15 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
} else {
|
||||
lValue = getCurrentSymbols().getVariable(varName);
|
||||
}
|
||||
String rangeOp = ((TerminalNode) ctx.getChild(2)).getSymbol().getText();
|
||||
KickCParser.ExprContext rangeFirstCtx = ctx.expr(0);
|
||||
KickCParser.ExprContext rangeLastCtx = ctx.expr(1);
|
||||
// If iteration direction is not explicit - find it automatically by evaluating first/last as constants
|
||||
if(rangeOp.equals("..")) {
|
||||
ConstantInteger rangeFirst = (ConstantInteger) ParseTreeConstantEvaluator.evaluate(rangeFirstCtx);
|
||||
ConstantInteger rangeLast = (ConstantInteger) ParseTreeConstantEvaluator.evaluate(rangeLastCtx);
|
||||
if(rangeFirst.getNumber()<rangeLast.getNumber()) {
|
||||
rangeOp = ".++.";
|
||||
} else {
|
||||
rangeOp = ".--.";
|
||||
}
|
||||
}
|
||||
// Find the iteration first/last & direction by evaluating first/last as constants
|
||||
ConstantInteger rangeFirst = (ConstantInteger) ParseTreeConstantEvaluator.evaluate(rangeFirstCtx);
|
||||
ConstantInteger rangeLast = (ConstantInteger) ParseTreeConstantEvaluator.evaluate(rangeLastCtx);
|
||||
// Assign loop variable with first value
|
||||
PrePostModifierHandler.addPreModifiers(this, rangeFirstCtx);
|
||||
RValue rValue = (RValue) visit(rangeFirstCtx);
|
||||
Statement stmtInit = new StatementAssignment(lValue, rValue);
|
||||
sequence.addStatement(stmtInit);
|
||||
PrePostModifierHandler.addPostModifiers(this, rangeFirstCtx);
|
||||
// Add label
|
||||
Label repeatLabel = getCurrentSymbols().addLabelIntermediate();
|
||||
StatementLabel repeatTarget = new StatementLabel(repeatLabel.getRef());
|
||||
@ -242,20 +232,29 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
this.visit(stmtForCtx.stmt());
|
||||
}
|
||||
// Add increment
|
||||
if(rangeOp.equals(".--.")) {
|
||||
ConstantInteger beyondLastVal;
|
||||
if(rangeFirst.getNumber()>rangeLast.getNumber()) {
|
||||
Statement stmtInc = new StatementAssignment(lValue.getRef(), new Operator("--"), lValue.getRef());
|
||||
sequence.addStatement(stmtInc);
|
||||
if(rangeLast.getNumber()==0) {
|
||||
beyondLastVal = new ConstantInteger(255);
|
||||
} else {
|
||||
beyondLastVal = new ConstantInteger(rangeLast.getNumber()-1);
|
||||
}
|
||||
} else {
|
||||
Statement stmtInc = new StatementAssignment(lValue.getRef(), new Operator("++"), lValue.getRef());
|
||||
sequence.addStatement(stmtInc);
|
||||
if(rangeLast.getNumber()==255) {
|
||||
beyondLastVal = new ConstantInteger(0);
|
||||
} else {
|
||||
beyondLastVal = new ConstantInteger(rangeLast.getNumber()+1);
|
||||
}
|
||||
}
|
||||
// Add condition
|
||||
PrePostModifierHandler.addPreModifiers(this, rangeLastCtx);
|
||||
RValue rValueLast = (RValue) this.visit(rangeLastCtx);
|
||||
PrePostModifierHandler.addPostModifiers(this, rangeLastCtx);
|
||||
|
||||
// Add condition i<last+1 or i<last-1
|
||||
VariableIntermediate tmpVar = getCurrentSymbols().addVariableIntermediate();
|
||||
VariableRef tmpVarRef = tmpVar.getRef();
|
||||
Statement stmtTmpVar = new StatementAssignment(tmpVarRef, lValue.getRef(), new Operator("!="), rValueLast);
|
||||
Statement stmtTmpVar = new StatementAssignment(tmpVarRef, lValue.getRef(), new Operator("!="), beyondLastVal);
|
||||
sequence.addStatement(stmtTmpVar);
|
||||
// Add jump if condition was met
|
||||
Statement doJmpStmt = new StatementConditionalJump(tmpVarRef, repeatLabel.getRef());
|
||||
|
@ -8,54 +8,46 @@ main();
|
||||
void main() {
|
||||
prepare();
|
||||
do {
|
||||
byte c = 25;
|
||||
do{
|
||||
do { } while(*RASTER!=254)
|
||||
do { } while(*RASTER!=255)
|
||||
c--;
|
||||
} while(c!=0)
|
||||
flip();
|
||||
plot();
|
||||
for( byte c : 25..1) {
|
||||
do { } while(*RASTER!=254)
|
||||
do { } while(*RASTER!=255)
|
||||
}
|
||||
flip();
|
||||
plot();
|
||||
} while(true)
|
||||
}
|
||||
|
||||
// Prepare buffer
|
||||
void prepare() {
|
||||
byte i=0;
|
||||
do {
|
||||
for( byte i : 0..255) {
|
||||
buffer1[i] = i;
|
||||
} while (++i!=0)
|
||||
}
|
||||
}
|
||||
|
||||
// Flip buffer
|
||||
void flip() {
|
||||
byte srcIdx = 0;
|
||||
byte dstIdx = 15;
|
||||
byte r=16;
|
||||
do {
|
||||
byte c = 16;
|
||||
do {
|
||||
for( byte r : 16..1) {
|
||||
for( byte c : 16..1) {
|
||||
buffer2[dstIdx] = buffer1[srcIdx++];
|
||||
dstIdx = dstIdx+16;
|
||||
} while(--c!=0)
|
||||
}
|
||||
dstIdx--;
|
||||
} while(--r!=0)
|
||||
byte i=0;
|
||||
do {
|
||||
}
|
||||
for(byte i : 0..255) {
|
||||
buffer1[i] = buffer2[i];
|
||||
} while (++i!=0)
|
||||
}
|
||||
}
|
||||
|
||||
// Plot buffer on screen
|
||||
void plot() {
|
||||
byte* line = SCREEN+5*40+12;
|
||||
byte y=16;
|
||||
byte i=0;
|
||||
do {
|
||||
byte x=0;
|
||||
do {
|
||||
line[x] = buffer1[i++];
|
||||
} while(++x<16)
|
||||
line = line+40;
|
||||
} while(--y!=0)
|
||||
for(byte y : 16..1) {
|
||||
for(byte x=0; x<16; x++ ) {
|
||||
line[x] = buffer1[i++];
|
||||
}
|
||||
line = line+40;
|
||||
}
|
||||
}
|
@ -1,14 +1,16 @@
|
||||
|
||||
// Minimal range based for() loop
|
||||
|
||||
byte* SCREEN = $0400;
|
||||
byte* SCREEN1 = $0400;
|
||||
byte* SCREEN2 = $0500;
|
||||
|
||||
void main() {
|
||||
for(byte i : 0..255) {
|
||||
SCREEN1[i] = i;
|
||||
}
|
||||
byte j;
|
||||
for(byte i : 100..1) {
|
||||
for(j : 0.++.i) {
|
||||
SCREEN[i] = j;
|
||||
}
|
||||
for(j : 100..0) {
|
||||
SCREEN2[j] = j;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@ Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
|
||||
PROGRAM
|
||||
(byte[15]) fibs ← (word) 4352
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
*((byte[15]) fibs + (byte) 0) ← (byte) 0
|
||||
*((byte[15]) fibs + (byte) 1) ← (byte) 1
|
||||
(byte) main::i ← (byte) 0
|
||||
@ -30,7 +30,7 @@ main::@1:
|
||||
if((boolean~) main::$5) goto main::@1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
endproc // main()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -8,74 +8,60 @@ main();
|
||||
void main() {
|
||||
prepare();
|
||||
do {
|
||||
byte c = 25;
|
||||
do{
|
||||
do { } while(*RASTER!=254)
|
||||
do { } while(*RASTER!=255)
|
||||
c--;
|
||||
} while(c!=0)
|
||||
flip();
|
||||
plot();
|
||||
for( byte c : 25..1) {
|
||||
do { } while(*RASTER!=254)
|
||||
do { } while(*RASTER!=255)
|
||||
}
|
||||
flip();
|
||||
plot();
|
||||
} while(true)
|
||||
}
|
||||
|
||||
// Prepare buffer
|
||||
void prepare() {
|
||||
byte i=0;
|
||||
do {
|
||||
for( byte i : 0..255) {
|
||||
buffer1[i] = i;
|
||||
} while (++i!=0)
|
||||
}
|
||||
}
|
||||
|
||||
// Flip buffer
|
||||
void flip() {
|
||||
byte srcIdx = 0;
|
||||
byte dstIdx = 15;
|
||||
byte r=16;
|
||||
do {
|
||||
byte c = 16;
|
||||
do {
|
||||
for( byte r : 16..1) {
|
||||
for( byte c : 16..1) {
|
||||
buffer2[dstIdx] = buffer1[srcIdx++];
|
||||
dstIdx = dstIdx+16;
|
||||
} while(--c!=0)
|
||||
}
|
||||
dstIdx--;
|
||||
} while(--r!=0)
|
||||
byte i=0;
|
||||
do {
|
||||
}
|
||||
for(byte i : 0..255) {
|
||||
buffer1[i] = buffer2[i];
|
||||
} while (++i!=0)
|
||||
}
|
||||
}
|
||||
|
||||
// Plot buffer on screen
|
||||
void plot() {
|
||||
byte* line = SCREEN+5*40+12;
|
||||
byte y=16;
|
||||
byte i=0;
|
||||
do {
|
||||
byte x=0;
|
||||
do {
|
||||
line[x] = buffer1[i++];
|
||||
} while(++x<16)
|
||||
line = line+40;
|
||||
} while(--y!=0)
|
||||
for(byte y : 16..1) {
|
||||
for(byte x=0; x<16; x++ ) {
|
||||
line[x] = buffer1[i++];
|
||||
}
|
||||
line = line+40;
|
||||
}
|
||||
}
|
||||
Adding pre/post-modifier (byte) main::c ← -- (byte) main::c
|
||||
Adding pre/post-modifier (byte) prepare::i ← ++ (byte) prepare::i
|
||||
Adding pre/post-modifier (byte) flip::srcIdx ← ++ (byte) flip::srcIdx
|
||||
Adding pre/post-modifier (byte) flip::c ← -- (byte) flip::c
|
||||
Adding pre/post-modifier (byte) flip::dstIdx ← -- (byte) flip::dstIdx
|
||||
Adding pre/post-modifier (byte) flip::r ← -- (byte) flip::r
|
||||
Adding pre/post-modifier (byte) flip::i ← ++ (byte) flip::i
|
||||
Adding pre/post-modifier (byte) plot::i ← ++ (byte) plot::i
|
||||
Adding pre/post-modifier (byte) plot::x ← ++ (byte) plot::x
|
||||
Adding pre/post-modifier (byte) plot::y ← -- (byte) plot::y
|
||||
PROGRAM
|
||||
(byte[1000]) SCREEN ← (word) 1024
|
||||
(byte[256]) buffer1 ← (word) 4096
|
||||
(byte[256]) buffer2 ← (word) 4352
|
||||
(byte*) RASTER ← (word) 53266
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(void~) main::$0 ← call prepare
|
||||
main::@1:
|
||||
(byte) main::c ← (byte) 25
|
||||
@ -96,8 +82,8 @@ main::@4:
|
||||
if(true) goto main::@1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (void()) prepare()
|
||||
endproc // main()
|
||||
proc (void()) prepare()
|
||||
(byte) prepare::i ← (byte) 0
|
||||
prepare::@1:
|
||||
*((byte[256]) buffer1 + (byte) prepare::i) ← (byte) prepare::i
|
||||
@ -106,8 +92,8 @@ prepare::@1:
|
||||
if((boolean~) prepare::$0) goto prepare::@1
|
||||
prepare::@return:
|
||||
return
|
||||
endproc // prepare()
|
||||
proc (void()) flip()
|
||||
endproc // prepare()
|
||||
proc (void()) flip()
|
||||
(byte) flip::srcIdx ← (byte) 0
|
||||
(byte) flip::dstIdx ← (byte) 15
|
||||
(byte) flip::r ← (byte) 16
|
||||
@ -135,14 +121,14 @@ flip::@3:
|
||||
if((boolean~) flip::$5) goto flip::@3
|
||||
flip::@return:
|
||||
return
|
||||
endproc // flip()
|
||||
proc (void()) plot()
|
||||
endproc // flip()
|
||||
proc (void()) plot()
|
||||
(byte~) plot::$0 ← (byte) 5 * (byte) 40
|
||||
(byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12
|
||||
(byte*) plot::line ← (byte*~) plot::$2
|
||||
(byte) plot::y ← (byte) 16
|
||||
(byte) plot::i ← (byte) 0
|
||||
(byte) plot::y ← (byte) 16
|
||||
plot::@1:
|
||||
(byte) plot::x ← (byte) 0
|
||||
plot::@2:
|
||||
@ -159,7 +145,7 @@ plot::@2:
|
||||
if((boolean~) plot::$6) goto plot::@1
|
||||
plot::@return:
|
||||
return
|
||||
endproc // plot()
|
||||
endproc // plot()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
@ -326,8 +312,8 @@ plot: scope:[plot] from
|
||||
(byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12
|
||||
(byte*) plot::line ← (byte*~) plot::$2
|
||||
(byte) plot::y ← (byte) 16
|
||||
(byte) plot::i ← (byte) 0
|
||||
(byte) plot::y ← (byte) 16
|
||||
to:plot::@1
|
||||
plot::@1: scope:[plot] from plot plot::@3
|
||||
(byte) plot::x ← (byte) 0
|
||||
@ -458,8 +444,8 @@ plot: scope:[plot] from
|
||||
(byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12
|
||||
(byte*) plot::line ← (byte*~) plot::$2
|
||||
(byte) plot::y ← (byte) 16
|
||||
(byte) plot::i ← (byte) 0
|
||||
(byte) plot::y ← (byte) 16
|
||||
to:plot::@1
|
||||
plot::@1: scope:[plot] from plot plot::@3
|
||||
(byte) plot::x ← (byte) 0
|
||||
@ -587,8 +573,8 @@ plot: scope:[plot] from main::@10
|
||||
(byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12
|
||||
(byte*) plot::line ← (byte*~) plot::$2
|
||||
(byte) plot::y ← (byte) 16
|
||||
(byte) plot::i ← (byte) 0
|
||||
(byte) plot::y ← (byte) 16
|
||||
to:plot::@1
|
||||
plot::@1: scope:[plot] from plot plot::@3
|
||||
(byte) plot::x ← (byte) 0
|
||||
@ -796,8 +782,8 @@ plot: scope:[plot] from main::@10
|
||||
(byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12
|
||||
(byte*) plot::line#0 ← (byte*~) plot::$2
|
||||
(byte) plot::y#0 ← (byte) 16
|
||||
(byte) plot::i#0 ← (byte) 0
|
||||
(byte) plot::y#0 ← (byte) 16
|
||||
to:plot::@1
|
||||
plot::@1: scope:[plot] from plot plot::@3
|
||||
(byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 )
|
||||
@ -1008,8 +994,8 @@ plot: scope:[plot] from main::@10
|
||||
(byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12
|
||||
(byte*) plot::line#0 ← (byte*~) plot::$2
|
||||
(byte) plot::y#0 ← (byte) 16
|
||||
(byte) plot::i#0 ← (byte) 0
|
||||
(byte) plot::y#0 ← (byte) 16
|
||||
to:plot::@1
|
||||
plot::@1: scope:[plot] from plot plot::@3
|
||||
(byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 )
|
||||
@ -1220,8 +1206,8 @@ plot: scope:[plot] from main::@10
|
||||
(byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12
|
||||
(byte*) plot::line#0 ← (byte*~) plot::$2
|
||||
(byte) plot::y#0 ← (byte) 16
|
||||
(byte) plot::i#0 ← (byte) 0
|
||||
(byte) plot::y#0 ← (byte) 16
|
||||
to:plot::@1
|
||||
plot::@1: scope:[plot] from plot plot::@3
|
||||
(byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 )
|
||||
@ -1271,8 +1257,8 @@ Constant (byte) flip::r#0 (byte) 16
|
||||
Constant (byte) flip::c#0 (byte) 16
|
||||
Constant (byte) flip::i#0 (byte) 0
|
||||
Constant (byte~) plot::$0 (byte) 200
|
||||
Constant (byte) plot::y#0 (byte) 16
|
||||
Constant (byte) plot::i#0 (byte) 0
|
||||
Constant (byte) plot::y#0 (byte) 16
|
||||
Constant (byte) plot::x#0 (byte) 0
|
||||
Succesful SSA optimization Pass2ConstantPropagation
|
||||
CONTROL FLOW GRAPH
|
||||
|
@ -14,7 +14,7 @@ main();
|
||||
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
|
||||
PROGRAM
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(byte) main::i ← (byte) 0
|
||||
main::@1:
|
||||
*((byte*) SCREEN + (byte) main::i) ← (byte) main::i
|
||||
@ -23,7 +23,7 @@ main::@1:
|
||||
if((boolean~) main::$0) goto main::@1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
endproc // main()
|
||||
(void~) $0 ← call main
|
||||
|
||||
SYMBOLS
|
||||
|
@ -1,17 +1,18 @@
|
||||
jsr main
|
||||
main: {
|
||||
ldx #$64
|
||||
ldx #$0
|
||||
b1:
|
||||
lda #$0
|
||||
b2:
|
||||
txa
|
||||
sta $400,x
|
||||
clc
|
||||
adc #$1
|
||||
sta $ff
|
||||
cpx $ff
|
||||
bne b2
|
||||
dex
|
||||
cpx #$1
|
||||
inx
|
||||
cpx #$0
|
||||
bne b1
|
||||
ldx #$64
|
||||
b2:
|
||||
txa
|
||||
sta $500,x
|
||||
dex
|
||||
cpx #$ff
|
||||
bne b2
|
||||
rts
|
||||
}
|
||||
|
@ -6,19 +6,18 @@
|
||||
@end: scope:[] from @1
|
||||
main: scope:[main] from @1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@3
|
||||
[1] (byte) main::i#2 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) [ main::i#2 ]
|
||||
main::@1: scope:[main] from main main::@1
|
||||
[1] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ]
|
||||
[2] *((word) 1024 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ]
|
||||
[3] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ]
|
||||
[4] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ]
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
[2] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#2 main::j#2 ]
|
||||
[3] *((word) 1024 + (byte) main::i#2) ← (byte) main::j#2 [ main::i#2 main::j#2 ]
|
||||
[4] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 main::i#2 ]
|
||||
[5] if((byte) main::j#1!=(byte) main::i#2) goto main::@2 [ main::j#1 main::i#2 ]
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
[6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ]
|
||||
[7] if((byte) main::i#1!=(byte) 1) goto main::@1 [ main::i#1 ]
|
||||
[5] (byte) main::j#2 ← phi( main::@1/(byte) 100 main::@2/(byte) main::j#1 ) [ main::j#2 ]
|
||||
[6] *((word) 1280 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ]
|
||||
[7] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ]
|
||||
[8] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ]
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
[8] return [ ]
|
||||
main::@return: scope:[main] from main::@2
|
||||
[9] return [ ]
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,18 +1,18 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN1
|
||||
(byte*) SCREEN2
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 44.8
|
||||
(byte) main::i#2 reg byte x 22.0
|
||||
(byte) main::j
|
||||
(byte) main::j#1 reg byte a 151.5
|
||||
(byte) main::j#2 reg byte a 151.5
|
||||
(byte) main::j#1 reg byte x 16.5
|
||||
(byte) main::j#2 reg byte x 22.0
|
||||
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
reg byte a [ main::j#2 main::j#1 ]
|
||||
reg byte x [ main::j#2 main::j#1 ]
|
||||
|
@ -15,7 +15,7 @@ Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
|
||||
PROGRAM
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(byte) main::i ← (byte) 0
|
||||
main::@1:
|
||||
(boolean~) main::$0 ← (byte) main::i < (byte) 50
|
||||
@ -28,7 +28,7 @@ main::@2:
|
||||
if((boolean~) main::$2) goto main::@1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
endproc // main()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -21,7 +21,7 @@ Adding pre/post-modifier (byte) nest::j ← -- (byte) nest::j
|
||||
PROGRAM
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(byte) main::i ← (byte) 100
|
||||
main::@1:
|
||||
(void~) main::$0 ← call nest
|
||||
@ -30,8 +30,8 @@ main::@1:
|
||||
if((boolean~) main::$1) goto main::@1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (void()) nest()
|
||||
endproc // main()
|
||||
proc (void()) nest()
|
||||
(byte) nest::j ← (byte) 100
|
||||
nest::@1:
|
||||
*((byte*) SCREEN) ← (byte) nest::j
|
||||
@ -40,7 +40,7 @@ nest::@1:
|
||||
if((boolean~) nest::$0) goto nest::@1
|
||||
nest::@return:
|
||||
return
|
||||
endproc // nest()
|
||||
endproc // nest()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -41,7 +41,7 @@ Adding pre/post-modifier (byte) nest2::i ← -- (byte) nest2::i
|
||||
PROGRAM
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(byte) main::i ← (byte) 100
|
||||
main::@1:
|
||||
(byte) main::j ← (byte) 100
|
||||
@ -55,8 +55,8 @@ main::@2:
|
||||
if((boolean~) main::$2) goto main::@1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (void()) nest1()
|
||||
endproc // main()
|
||||
proc (void()) nest1()
|
||||
(byte) nest1::i ← (byte) 100
|
||||
nest1::@1:
|
||||
(byte) nest1::j ← (byte) 100
|
||||
@ -70,8 +70,8 @@ nest1::@2:
|
||||
if((boolean~) nest1::$2) goto nest1::@1
|
||||
nest1::@return:
|
||||
return
|
||||
endproc // nest1()
|
||||
proc (void()) nest2()
|
||||
endproc // nest1()
|
||||
proc (void()) nest2()
|
||||
(byte) nest2::i ← (byte) 100
|
||||
nest2::@1:
|
||||
(byte) nest2::j ← (byte) 100
|
||||
@ -85,7 +85,7 @@ nest2::@2:
|
||||
if((boolean~) nest2::$1) goto nest2::@1
|
||||
nest2::@return:
|
||||
return
|
||||
endproc // nest2()
|
||||
endproc // nest2()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -17,7 +17,7 @@ Adding pre/post-modifier (byte) main::s ← ++ (byte) main::s
|
||||
Adding pre/post-modifier (byte) main::s ← -- (byte) main::s
|
||||
PROGRAM
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(byte) main::i ← (byte) 100
|
||||
(byte) main::s ← (byte) 0
|
||||
main::@1:
|
||||
@ -38,7 +38,7 @@ main::@5:
|
||||
main::@3:
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
endproc // main()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -27,7 +27,7 @@ PROGRAM
|
||||
(byte) cnt2 ← (byte) 0
|
||||
(byte[256]) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(byte~) main::$0 ← call inccnt
|
||||
*((byte[256]) SCREEN + (byte) 0) ← (byte~) main::$0
|
||||
(byte) cnt ← ++ (byte) cnt
|
||||
@ -35,8 +35,8 @@ PROGRAM
|
||||
*((byte[256]) SCREEN + (byte) 1) ← (byte~) main::$1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (byte()) inccnt()
|
||||
endproc // main()
|
||||
proc (byte()) inccnt()
|
||||
(byte) cnt ← ++ (byte) cnt
|
||||
(byte) cnt2 ← ++ (byte) cnt2
|
||||
(byte) inccnt::return ← (byte) cnt
|
||||
@ -44,7 +44,7 @@ main::@return:
|
||||
inccnt::@return:
|
||||
(byte) inccnt::return ← (byte) inccnt::return
|
||||
return (byte) inccnt::return
|
||||
endproc // inccnt()
|
||||
endproc // inccnt()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -24,7 +24,7 @@ PROGRAM
|
||||
(byte) cnt ← (byte) 0
|
||||
(byte[256]) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(void~) main::$0 ← call inccnt
|
||||
*((byte[256]) SCREEN + (byte) 0) ← (byte) cnt
|
||||
(byte) cnt ← ++ (byte) cnt
|
||||
@ -33,12 +33,12 @@ PROGRAM
|
||||
*((byte[256]) SCREEN + (byte) 1) ← (byte) cnt
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (void()) inccnt()
|
||||
endproc // main()
|
||||
proc (void()) inccnt()
|
||||
(byte) cnt ← ++ (byte) cnt
|
||||
inccnt::@return:
|
||||
return
|
||||
endproc // inccnt()
|
||||
endproc // inccnt()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -82,15 +82,15 @@ Adding pre/post-modifier (byte*) rvaluevar::screen ← ++ (byte*) rvaluevar::scr
|
||||
Adding pre/post-modifier (byte) rvaluevar::i ← ++ (byte) rvaluevar::i
|
||||
PROGRAM
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(void~) main::$0 ← call lvalue
|
||||
(void~) main::$1 ← call rvalue
|
||||
(void~) main::$2 ← call rvaluevar
|
||||
(void~) main::$3 ← call lvaluevar
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (void()) lvalue()
|
||||
endproc // main()
|
||||
proc (void()) lvalue()
|
||||
(byte[1024]) lvalue::SCREEN ← (word) 1024
|
||||
*((byte[1024]) lvalue::SCREEN) ← (byte) 1
|
||||
*((byte[1024]) lvalue::SCREEN + (byte) 1) ← (byte) 2
|
||||
@ -106,8 +106,8 @@ lvalue::@2:
|
||||
lvalue::@3:
|
||||
lvalue::@return:
|
||||
return
|
||||
endproc // lvalue()
|
||||
proc (void()) rvalue()
|
||||
endproc // lvalue()
|
||||
proc (void()) rvalue()
|
||||
(byte[1024]) rvalue::SCREEN ← (word) 1024
|
||||
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN
|
||||
(byte) rvalue::b ← (byte~) rvalue::$0
|
||||
@ -126,8 +126,8 @@ rvalue::@2:
|
||||
rvalue::@3:
|
||||
rvalue::@return:
|
||||
return
|
||||
endproc // rvalue()
|
||||
proc (void()) lvaluevar()
|
||||
endproc // rvalue()
|
||||
proc (void()) lvaluevar()
|
||||
(byte*) lvaluevar::screen ← (word) 1024
|
||||
(byte) lvaluevar::b ← (byte) 4
|
||||
(byte) lvaluevar::i ← (byte) 2
|
||||
@ -143,8 +143,8 @@ lvaluevar::@2:
|
||||
lvaluevar::@3:
|
||||
lvaluevar::@return:
|
||||
return
|
||||
endproc // lvaluevar()
|
||||
proc (void()) rvaluevar()
|
||||
endproc // lvaluevar()
|
||||
proc (void()) rvaluevar()
|
||||
(byte*) rvaluevar::screen ← (word) 1024
|
||||
(byte) rvaluevar::i ← (byte) 2
|
||||
rvaluevar::@1:
|
||||
@ -160,7 +160,7 @@ rvaluevar::@2:
|
||||
rvaluevar::@3:
|
||||
rvaluevar::@return:
|
||||
return
|
||||
endproc // rvaluevar()
|
||||
endproc // rvaluevar()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -20,7 +20,7 @@ void main() {
|
||||
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
|
||||
PROGRAM
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(byte[1024]) main::SCREEN ← (word) 1024
|
||||
(byte) main::i ← (byte) 2
|
||||
main::@1:
|
||||
@ -35,7 +35,7 @@ main::@2:
|
||||
main::@3:
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
endproc // main()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -16,14 +16,14 @@ PROGRAM
|
||||
(byte~) $3 ← (byte) s1 + (byte) s2
|
||||
(byte~) $4 ← (byte~) $3 + (byte) s3
|
||||
(byte) s4 ← (byte~) $4
|
||||
proc (byte()) sum((byte) sum::a , (byte) sum::b)
|
||||
proc (byte()) sum((byte) sum::a , (byte) sum::b)
|
||||
(byte~) sum::$0 ← (byte) sum::a + (byte) sum::b
|
||||
(byte) sum::return ← (byte~) sum::$0
|
||||
goto sum::@return
|
||||
sum::@return:
|
||||
(byte) sum::return ← (byte) sum::return
|
||||
return (byte) sum::return
|
||||
endproc // sum()
|
||||
endproc // sum()
|
||||
|
||||
SYMBOLS
|
||||
(byte~) $0
|
||||
|
@ -7,11 +7,11 @@ void main() {
|
||||
PROGRAM
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
*((byte*) SCREEN) ← (byte) 1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
endproc // main()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
@ -129,7 +129,7 @@ PROGRAM
|
||||
(byte[256]) YPOS ← (word) 4352
|
||||
(byte[256]) COLS ← (word) 4608
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
proc (void()) main()
|
||||
(void~) main::$0 ← call addpoint (byte) 5 (byte) 5 (byte) 1
|
||||
(void~) main::$1 ← call addpoint (byte) 15 (byte) 8 (byte) 2
|
||||
(void~) main::$2 ← call addpoint (byte) 6 (byte) 14 (byte) 3
|
||||
@ -143,8 +143,8 @@ main::@1:
|
||||
if(true) goto main::@1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (void()) animate()
|
||||
endproc // main()
|
||||
proc (void()) animate()
|
||||
(byte~) animate::$0 ← (byte[256]) XPOS *idx (byte) 0
|
||||
(byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1
|
||||
*((byte[256]) XPOS + (byte) 0) ← (byte~) animate::$1
|
||||
@ -203,16 +203,16 @@ animate::@6:
|
||||
animate::@5:
|
||||
animate::@return:
|
||||
return
|
||||
endproc // animate()
|
||||
proc (void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c)
|
||||
endproc // animate()
|
||||
proc (void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c)
|
||||
*((byte[256]) XPOS + (byte) numpoints) ← (byte) addpoint::x
|
||||
*((byte[256]) YPOS + (byte) numpoints) ← (byte) addpoint::y
|
||||
*((byte[256]) COLS + (byte) numpoints) ← (byte) addpoint::c
|
||||
(byte) numpoints ← ++ (byte) numpoints
|
||||
addpoint::@return:
|
||||
return
|
||||
endproc // addpoint()
|
||||
proc (void()) initscreen()
|
||||
endproc // addpoint()
|
||||
proc (void()) initscreen()
|
||||
(byte*) initscreen::screen ← (byte*) SCREEN
|
||||
initscreen::@1:
|
||||
*((byte*) initscreen::screen) ← (byte) FILL
|
||||
@ -222,8 +222,8 @@ initscreen::@1:
|
||||
if((boolean~) initscreen::$1) goto initscreen::@1
|
||||
initscreen::@return:
|
||||
return
|
||||
endproc // initscreen()
|
||||
proc (void()) render()
|
||||
endproc // initscreen()
|
||||
proc (void()) render()
|
||||
(byte*) render::colline ← (byte*) COLORS
|
||||
(byte) render::y ← (byte) 0
|
||||
render::@1:
|
||||
@ -242,8 +242,8 @@ render::@2:
|
||||
if((boolean~) render::$3) goto render::@1
|
||||
render::@return:
|
||||
return
|
||||
endproc // render()
|
||||
proc (byte()) findcol((byte) findcol::x , (byte) findcol::y)
|
||||
endproc // render()
|
||||
proc (byte()) findcol((byte) findcol::x , (byte) findcol::y)
|
||||
(byte) findcol::mindiff ← (byte) 255
|
||||
(byte) findcol::mincol ← (byte) 0
|
||||
(byte) findcol::i ← (byte) 0
|
||||
@ -299,7 +299,7 @@ findcol::@8:
|
||||
findcol::@return:
|
||||
(byte) findcol::return ← (byte) findcol::return
|
||||
return (byte) findcol::return
|
||||
endproc // findcol()
|
||||
endproc // findcol()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
|
Loading…
x
Reference in New Issue
Block a user