mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-09 08:54:40 +00:00
Added support for #error. Closes #440
This commit is contained in:
parent
1786d85ea5
commit
0041a4d07c
@ -133,6 +133,7 @@ IFIF: '#if' ;
|
||||
ELIF: '#elif' ;
|
||||
IFELSE: '#else' ;
|
||||
ENDIF: '#endif' ;
|
||||
ERROR: '#error' ;
|
||||
|
||||
// Numbers
|
||||
NUMBER : NUMFLOAT | NUMINT ;
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -106,62 +106,63 @@ IFIF=105
|
||||
ELIF=106
|
||||
IFELSE=107
|
||||
ENDIF=108
|
||||
NUMBER=109
|
||||
NUMFLOAT=110
|
||||
BINFLOAT=111
|
||||
DECFLOAT=112
|
||||
HEXFLOAT=113
|
||||
NUMINT=114
|
||||
BININTEGER=115
|
||||
DECINTEGER=116
|
||||
HEXINTEGER=117
|
||||
NAME=118
|
||||
STRING=119
|
||||
CHAR=120
|
||||
WS=121
|
||||
COMMENT_LINE=122
|
||||
COMMENT_BLOCK=123
|
||||
ASM_BYTE=124
|
||||
ASM_MNEMONIC=125
|
||||
ASM_IMM=126
|
||||
ASM_COLON=127
|
||||
ASM_COMMA=128
|
||||
ASM_PAR_BEGIN=129
|
||||
ASM_PAR_END=130
|
||||
ASM_BRACKET_BEGIN=131
|
||||
ASM_BRACKET_END=132
|
||||
ASM_DOT=133
|
||||
ASM_SHIFT_LEFT=134
|
||||
ASM_SHIFT_RIGHT=135
|
||||
ASM_PLUS=136
|
||||
ASM_MINUS=137
|
||||
ASM_LESS_THAN=138
|
||||
ASM_GREATER_THAN=139
|
||||
ASM_MULTIPLY=140
|
||||
ASM_DIVIDE=141
|
||||
ASM_CURLY_BEGIN=142
|
||||
ASM_CURLY_END=143
|
||||
ASM_NUMBER=144
|
||||
ASM_NUMFLOAT=145
|
||||
ASM_BINFLOAT=146
|
||||
ASM_DECFLOAT=147
|
||||
ASM_HEXFLOAT=148
|
||||
ASM_NUMINT=149
|
||||
ASM_BININTEGER=150
|
||||
ASM_DECINTEGER=151
|
||||
ASM_HEXINTEGER=152
|
||||
ASM_CHAR=153
|
||||
ASM_MULTI_REL=154
|
||||
ASM_MULTI_NAME=155
|
||||
ASM_NAME=156
|
||||
ASM_WS=157
|
||||
ASM_COMMENT_LINE=158
|
||||
ASM_COMMENT_BLOCK=159
|
||||
IMPORT_SYSTEMFILE=160
|
||||
IMPORT_LOCALFILE=161
|
||||
IMPORT_WS=162
|
||||
IMPORT_COMMENT_LINE=163
|
||||
IMPORT_COMMENT_BLOCK=164
|
||||
ERROR=109
|
||||
NUMBER=110
|
||||
NUMFLOAT=111
|
||||
BINFLOAT=112
|
||||
DECFLOAT=113
|
||||
HEXFLOAT=114
|
||||
NUMINT=115
|
||||
BININTEGER=116
|
||||
DECINTEGER=117
|
||||
HEXINTEGER=118
|
||||
NAME=119
|
||||
STRING=120
|
||||
CHAR=121
|
||||
WS=122
|
||||
COMMENT_LINE=123
|
||||
COMMENT_BLOCK=124
|
||||
ASM_BYTE=125
|
||||
ASM_MNEMONIC=126
|
||||
ASM_IMM=127
|
||||
ASM_COLON=128
|
||||
ASM_COMMA=129
|
||||
ASM_PAR_BEGIN=130
|
||||
ASM_PAR_END=131
|
||||
ASM_BRACKET_BEGIN=132
|
||||
ASM_BRACKET_END=133
|
||||
ASM_DOT=134
|
||||
ASM_SHIFT_LEFT=135
|
||||
ASM_SHIFT_RIGHT=136
|
||||
ASM_PLUS=137
|
||||
ASM_MINUS=138
|
||||
ASM_LESS_THAN=139
|
||||
ASM_GREATER_THAN=140
|
||||
ASM_MULTIPLY=141
|
||||
ASM_DIVIDE=142
|
||||
ASM_CURLY_BEGIN=143
|
||||
ASM_CURLY_END=144
|
||||
ASM_NUMBER=145
|
||||
ASM_NUMFLOAT=146
|
||||
ASM_BINFLOAT=147
|
||||
ASM_DECFLOAT=148
|
||||
ASM_HEXFLOAT=149
|
||||
ASM_NUMINT=150
|
||||
ASM_BININTEGER=151
|
||||
ASM_DECINTEGER=152
|
||||
ASM_HEXINTEGER=153
|
||||
ASM_CHAR=154
|
||||
ASM_MULTI_REL=155
|
||||
ASM_MULTI_NAME=156
|
||||
ASM_NAME=157
|
||||
ASM_WS=158
|
||||
ASM_COMMENT_LINE=159
|
||||
ASM_COMMENT_BLOCK=160
|
||||
IMPORT_SYSTEMFILE=161
|
||||
IMPORT_LOCALFILE=162
|
||||
IMPORT_WS=163
|
||||
IMPORT_COMMENT_LINE=164
|
||||
IMPORT_COMMENT_BLOCK=165
|
||||
';'=8
|
||||
'..'=11
|
||||
'...'=12
|
||||
@ -245,5 +246,6 @@ IMPORT_COMMENT_BLOCK=164
|
||||
'#elif'=106
|
||||
'#else'=107
|
||||
'#endif'=108
|
||||
'.byte'=124
|
||||
'#'=126
|
||||
'#error'=109
|
||||
'.byte'=125
|
||||
'#'=127
|
||||
|
File diff suppressed because one or more lines are too long
@ -36,20 +36,20 @@ public class KickCParser extends Parser {
|
||||
USES=88, CLOBBERS=89, BYTES=90, CYCLES=91, LOGIC_NOT=92, SIGNEDNESS=93,
|
||||
SIMPLETYPE=94, BOOLEAN=95, KICKASM_BODY=96, IMPORT=97, INCLUDE=98, PRAGMA=99,
|
||||
DEFINE=100, DEFINE_CONTINUE=101, UNDEF=102, IFDEF=103, IFNDEF=104, IFIF=105,
|
||||
ELIF=106, IFELSE=107, ENDIF=108, NUMBER=109, NUMFLOAT=110, BINFLOAT=111,
|
||||
DECFLOAT=112, HEXFLOAT=113, NUMINT=114, BININTEGER=115, DECINTEGER=116,
|
||||
HEXINTEGER=117, NAME=118, STRING=119, CHAR=120, WS=121, COMMENT_LINE=122,
|
||||
COMMENT_BLOCK=123, ASM_BYTE=124, ASM_MNEMONIC=125, ASM_IMM=126, ASM_COLON=127,
|
||||
ASM_COMMA=128, ASM_PAR_BEGIN=129, ASM_PAR_END=130, ASM_BRACKET_BEGIN=131,
|
||||
ASM_BRACKET_END=132, ASM_DOT=133, ASM_SHIFT_LEFT=134, ASM_SHIFT_RIGHT=135,
|
||||
ASM_PLUS=136, ASM_MINUS=137, ASM_LESS_THAN=138, ASM_GREATER_THAN=139,
|
||||
ASM_MULTIPLY=140, ASM_DIVIDE=141, ASM_CURLY_BEGIN=142, ASM_CURLY_END=143,
|
||||
ASM_NUMBER=144, ASM_NUMFLOAT=145, ASM_BINFLOAT=146, ASM_DECFLOAT=147,
|
||||
ASM_HEXFLOAT=148, ASM_NUMINT=149, ASM_BININTEGER=150, ASM_DECINTEGER=151,
|
||||
ASM_HEXINTEGER=152, ASM_CHAR=153, ASM_MULTI_REL=154, ASM_MULTI_NAME=155,
|
||||
ASM_NAME=156, ASM_WS=157, ASM_COMMENT_LINE=158, ASM_COMMENT_BLOCK=159,
|
||||
IMPORT_SYSTEMFILE=160, IMPORT_LOCALFILE=161, IMPORT_WS=162, IMPORT_COMMENT_LINE=163,
|
||||
IMPORT_COMMENT_BLOCK=164;
|
||||
ELIF=106, IFELSE=107, ENDIF=108, ERROR=109, NUMBER=110, NUMFLOAT=111,
|
||||
BINFLOAT=112, DECFLOAT=113, HEXFLOAT=114, NUMINT=115, BININTEGER=116,
|
||||
DECINTEGER=117, HEXINTEGER=118, NAME=119, STRING=120, CHAR=121, WS=122,
|
||||
COMMENT_LINE=123, COMMENT_BLOCK=124, ASM_BYTE=125, ASM_MNEMONIC=126, ASM_IMM=127,
|
||||
ASM_COLON=128, ASM_COMMA=129, ASM_PAR_BEGIN=130, ASM_PAR_END=131, ASM_BRACKET_BEGIN=132,
|
||||
ASM_BRACKET_END=133, ASM_DOT=134, ASM_SHIFT_LEFT=135, ASM_SHIFT_RIGHT=136,
|
||||
ASM_PLUS=137, ASM_MINUS=138, ASM_LESS_THAN=139, ASM_GREATER_THAN=140,
|
||||
ASM_MULTIPLY=141, ASM_DIVIDE=142, ASM_CURLY_BEGIN=143, ASM_CURLY_END=144,
|
||||
ASM_NUMBER=145, ASM_NUMFLOAT=146, ASM_BINFLOAT=147, ASM_DECFLOAT=148,
|
||||
ASM_HEXFLOAT=149, ASM_NUMINT=150, ASM_BININTEGER=151, ASM_DECINTEGER=152,
|
||||
ASM_HEXINTEGER=153, ASM_CHAR=154, ASM_MULTI_REL=155, ASM_MULTI_NAME=156,
|
||||
ASM_NAME=157, ASM_WS=158, ASM_COMMENT_LINE=159, ASM_COMMENT_BLOCK=160,
|
||||
IMPORT_SYSTEMFILE=161, IMPORT_LOCALFILE=162, IMPORT_WS=163, IMPORT_COMMENT_LINE=164,
|
||||
IMPORT_COMMENT_BLOCK=165;
|
||||
public static final int
|
||||
RULE_file = 0, RULE_asmFile = 1, RULE_declSeq = 2, RULE_declOrImport = 3,
|
||||
RULE_importDecl = 4, RULE_decl = 5, RULE_declVariables = 6, RULE_declVariableList = 7,
|
||||
@ -96,8 +96,9 @@ public class KickCParser extends Parser {
|
||||
"'kickasm'", "'resource'", "'uses'", "'clobbers'", "'bytes'", "'cycles'",
|
||||
"'!'", null, null, null, null, "'#import'", "'#include'", "'#pragma'",
|
||||
"'#define'", null, "'#undef'", "'#ifdef'", "'#ifndef'", "'#if'", "'#elif'",
|
||||
"'#else'", "'#endif'", null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, "'.byte'", null, "'#'"
|
||||
"'#else'", "'#endif'", "'#error'", null, null, null, null, null, null,
|
||||
null, null, null, null, null, null, null, null, null, "'.byte'", null,
|
||||
"'#'"
|
||||
};
|
||||
}
|
||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||
@ -119,11 +120,11 @@ public class KickCParser extends Parser {
|
||||
"RESOURCE", "USES", "CLOBBERS", "BYTES", "CYCLES", "LOGIC_NOT", "SIGNEDNESS",
|
||||
"SIMPLETYPE", "BOOLEAN", "KICKASM_BODY", "IMPORT", "INCLUDE", "PRAGMA",
|
||||
"DEFINE", "DEFINE_CONTINUE", "UNDEF", "IFDEF", "IFNDEF", "IFIF", "ELIF",
|
||||
"IFELSE", "ENDIF", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT",
|
||||
"NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME", "STRING",
|
||||
"CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE", "ASM_MNEMONIC",
|
||||
"ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN", "ASM_PAR_END",
|
||||
"ASM_BRACKET_BEGIN", "ASM_BRACKET_END", "ASM_DOT", "ASM_SHIFT_LEFT",
|
||||
"IFELSE", "ENDIF", "ERROR", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT",
|
||||
"HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME",
|
||||
"STRING", "CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE",
|
||||
"ASM_MNEMONIC", "ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN",
|
||||
"ASM_PAR_END", "ASM_BRACKET_BEGIN", "ASM_BRACKET_END", "ASM_DOT", "ASM_SHIFT_LEFT",
|
||||
"ASM_SHIFT_RIGHT", "ASM_PLUS", "ASM_MINUS", "ASM_LESS_THAN", "ASM_GREATER_THAN",
|
||||
"ASM_MULTIPLY", "ASM_DIVIDE", "ASM_CURLY_BEGIN", "ASM_CURLY_END", "ASM_NUMBER",
|
||||
"ASM_NUMFLOAT", "ASM_BINFLOAT", "ASM_DECFLOAT", "ASM_HEXFLOAT", "ASM_NUMINT",
|
||||
@ -6566,7 +6567,7 @@ public class KickCParser extends Parser {
|
||||
setState(826);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
while (((((_la - 124)) & ~0x3f) == 0 && ((1L << (_la - 124)) & ((1L << (ASM_BYTE - 124)) | (1L << (ASM_MNEMONIC - 124)) | (1L << (ASM_MULTI_NAME - 124)) | (1L << (ASM_NAME - 124)))) != 0)) {
|
||||
while (((((_la - 125)) & ~0x3f) == 0 && ((1L << (_la - 125)) & ((1L << (ASM_BYTE - 125)) | (1L << (ASM_MNEMONIC - 125)) | (1L << (ASM_MULTI_NAME - 125)) | (1L << (ASM_NAME - 125)))) != 0)) {
|
||||
{
|
||||
{
|
||||
setState(823);
|
||||
@ -7327,7 +7328,7 @@ public class KickCParser extends Parser {
|
||||
_prevctx = _localctx;
|
||||
setState(883);
|
||||
_la = _input.LA(1);
|
||||
if ( !(((((_la - 136)) & ~0x3f) == 0 && ((1L << (_la - 136)) & ((1L << (ASM_PLUS - 136)) | (1L << (ASM_MINUS - 136)) | (1L << (ASM_LESS_THAN - 136)) | (1L << (ASM_GREATER_THAN - 136)))) != 0)) ) {
|
||||
if ( !(((((_la - 137)) & ~0x3f) == 0 && ((1L << (_la - 137)) & ((1L << (ASM_PLUS - 137)) | (1L << (ASM_MINUS - 137)) | (1L << (ASM_LESS_THAN - 137)) | (1L << (ASM_GREATER_THAN - 137)))) != 0)) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
@ -7609,7 +7610,7 @@ public class KickCParser extends Parser {
|
||||
}
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u00a6\u0392\4\2\t"+
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u00a7\u0392\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"+
|
||||
@ -7676,8 +7677,8 @@ public class KickCParser extends Parser {
|
||||
"\3\61\3\61\3\61\7\61\u038d\n\61\f\61\16\61\u0390\13\61\3\61\2\t\20\34"+
|
||||
"\36*HJ`\62\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\66"+
|
||||
"8:<>@BDFHJLNPRTVXZ\\^`\2\r\3\2\27\30\5\2\22\23\31\32^^\4\2!!$$\3\2\35"+
|
||||
"\36\3\2\24\26\3\2\22\23\3\2\37$\3\2\u008a\u008d\3\2\u0088\u0089\3\2\u008e"+
|
||||
"\u008f\3\2\u008a\u008b\2\u0417\2b\3\2\2\2\4e\3\2\2\2\6k\3\2\2\2\bp\3\2"+
|
||||
"\36\3\2\24\26\3\2\22\23\3\2\37$\3\2\u008b\u008e\3\2\u0089\u008a\3\2\u008f"+
|
||||
"\u0090\3\2\u008b\u008c\2\u0417\2b\3\2\2\2\4e\3\2\2\2\6k\3\2\2\2\bp\3\2"+
|
||||
"\2\2\nx\3\2\2\2\f\u0089\3\2\2\2\16\u008b\3\2\2\2\20\u008e\3\2\2\2\22\u00a5"+
|
||||
"\3\2\2\2\24\u00ca\3\2\2\2\26\u00cf\3\2\2\2\30\u00d9\3\2\2\2\32\u00e0\3"+
|
||||
"\2\2\2\34\u00e6\3\2\2\2\36\u0105\3\2\2\2 \u0115\3\2\2\2\"\u0118\3\2\2"+
|
||||
@ -7690,8 +7691,8 @@ public class KickCParser extends Parser {
|
||||
"\3\2\2\2\\\u034e\3\2\2\2^\u036e\3\2\2\2`\u037e\3\2\2\2bc\5\6\4\2cd\7\2"+
|
||||
"\2\3d\3\3\2\2\2ef\5T+\2fg\7\2\2\3g\5\3\2\2\2hj\5\b\5\2ih\3\2\2\2jm\3\2"+
|
||||
"\2\2ki\3\2\2\2kl\3\2\2\2l\7\3\2\2\2mk\3\2\2\2nq\5\f\7\2oq\5\n\6\2pn\3"+
|
||||
"\2\2\2po\3\2\2\2q\t\3\2\2\2rs\7c\2\2sy\7\u00a3\2\2tu\7d\2\2uy\7\u00a3"+
|
||||
"\2\2vw\7d\2\2wy\7\u00a2\2\2xr\3\2\2\2xt\3\2\2\2xv\3\2\2\2y\13\3\2\2\2"+
|
||||
"\2\2\2po\3\2\2\2q\t\3\2\2\2rs\7c\2\2sy\7\u00a4\2\2tu\7d\2\2uy\7\u00a4"+
|
||||
"\2\2vw\7d\2\2wy\7\u00a3\2\2xr\3\2\2\2xt\3\2\2\2xv\3\2\2\2y\13\3\2\2\2"+
|
||||
"z{\5\16\b\2{|\7\n\2\2|\u008a\3\2\2\2}~\5\"\22\2~\177\7\n\2\2\177\u008a"+
|
||||
"\3\2\2\2\u0080\u0081\5(\25\2\u0081\u0082\7\n\2\2\u0082\u008a\3\2\2\2\u0083"+
|
||||
"\u008a\5.\30\2\u0084\u008a\5N(\2\u0085\u008a\5\66\34\2\u0086\u0087\5\22"+
|
||||
@ -7708,14 +7709,14 @@ public class KickCParser extends Parser {
|
||||
"\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\21\3\2\2\2\u00a4\u00a2\3\2\2\2\u00a5"+
|
||||
"\u00a6\7)\2\2\u00a6\u00aa\5\26\f\2\u00a7\u00a9\5\30\r\2\u00a8\u00a7\3"+
|
||||
"\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab"+
|
||||
"\u00ad\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ad\u00b1\7x\2\2\u00ae\u00b0\5\32"+
|
||||
"\u00ad\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ad\u00b1\7y\2\2\u00ae\u00b0\5\32"+
|
||||
"\16\2\u00af\u00ae\3\2\2\2\u00b0\u00b3\3\2\2\2\u00b1\u00af\3\2\2\2\u00b1"+
|
||||
"\u00b2\3\2\2\2\u00b2\u00b4\3\2\2\2\u00b3\u00b1\3\2\2\2\u00b4\u00b5\b\n"+
|
||||
"\1\2\u00b5\23\3\2\2\2\u00b6\u00ba\7x\2\2\u00b7\u00b9\5\32\16\2\u00b8\u00b7"+
|
||||
"\1\2\u00b5\23\3\2\2\2\u00b6\u00ba\7y\2\2\u00b7\u00b9\5\32\16\2\u00b8\u00b7"+
|
||||
"\3\2\2\2\u00b9\u00bc\3\2\2\2\u00ba\u00b8\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb"+
|
||||
"\u00bf\3\2\2\2\u00bc\u00ba\3\2\2\2\u00bd\u00be\7\'\2\2\u00be\u00c0\5J"+
|
||||
"&\2\u00bf\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00cb\3\2\2\2\u00c1"+
|
||||
"\u00c5\7x\2\2\u00c2\u00c4\5\32\16\2\u00c3\u00c2\3\2\2\2\u00c4\u00c7\3"+
|
||||
"\u00c5\7y\2\2\u00c2\u00c4\5\32\16\2\u00c3\u00c2\3\2\2\2\u00c4\u00c7\3"+
|
||||
"\2\2\2\u00c5\u00c3\3\2\2\2\u00c5\u00c6\3\2\2\2\u00c6\u00c8\3\2\2\2\u00c7"+
|
||||
"\u00c5\3\2\2\2\u00c8\u00c9\7\'\2\2\u00c9\u00cb\5N(\2\u00ca\u00b6\3\2\2"+
|
||||
"\2\u00ca\u00c1\3\2\2\2\u00cb\25\3\2\2\2\u00cc\u00ce\5:\36\2\u00cd\u00cc"+
|
||||
@ -7744,23 +7745,23 @@ public class KickCParser extends Parser {
|
||||
"\2\u010c\u0111\7\7\2\2\u010d\u010e\f\b\2\2\u010e\u010f\7\b\2\2\u010f\u0111"+
|
||||
"\7\t\2\2\u0110\u0107\3\2\2\2\u0110\u010d\3\2\2\2\u0111\u0114\3\2\2\2\u0112"+
|
||||
"\u0110\3\2\2\2\u0112\u0113\3\2\2\2\u0113\37\3\2\2\2\u0114\u0112\3\2\2"+
|
||||
"\2\u0115\u0116\7S\2\2\u0116\u0117\7x\2\2\u0117!\3\2\2\2\u0118\u011a\7"+
|
||||
"S\2\2\u0119\u011b\7x\2\2\u011a\u0119\3\2\2\2\u011a\u011b\3\2\2\2\u011b"+
|
||||
"\2\u0115\u0116\7S\2\2\u0116\u0117\7y\2\2\u0117!\3\2\2\2\u0118\u011a\7"+
|
||||
"S\2\2\u0119\u011b\7y\2\2\u011a\u0119\3\2\2\2\u011a\u011b\3\2\2\2\u011b"+
|
||||
"\u011c\3\2\2\2\u011c\u011e\7\4\2\2\u011d\u011f\5$\23\2\u011e\u011d\3\2"+
|
||||
"\2\2\u011f\u0120\3\2\2\2\u0120\u011e\3\2\2\2\u0120\u0121\3\2\2\2\u0121"+
|
||||
"\u0122\3\2\2\2\u0122\u0123\7\5\2\2\u0123#\3\2\2\2\u0124\u0125\5\16\b\2"+
|
||||
"\u0125\u0126\7\n\2\2\u0126%\3\2\2\2\u0127\u0128\7T\2\2\u0128\u0129\7x"+
|
||||
"\2\2\u0129\'\3\2\2\2\u012a\u012c\7T\2\2\u012b\u012d\7x\2\2\u012c\u012b"+
|
||||
"\u0125\u0126\7\n\2\2\u0126%\3\2\2\2\u0127\u0128\7T\2\2\u0128\u0129\7y"+
|
||||
"\2\2\u0129\'\3\2\2\2\u012a\u012c\7T\2\2\u012b\u012d\7y\2\2\u012c\u012b"+
|
||||
"\3\2\2\2\u012c\u012d\3\2\2\2\u012d\u012e\3\2\2\2\u012e\u012f\7\4\2\2\u012f"+
|
||||
"\u0130\5*\26\2\u0130\u0131\7\5\2\2\u0131)\3\2\2\2\u0132\u0133\b\26\1\2"+
|
||||
"\u0133\u0134\5,\27\2\u0134\u013a\3\2\2\2\u0135\u0136\f\3\2\2\u0136\u0137"+
|
||||
"\7\f\2\2\u0137\u0139\5,\27\2\u0138\u0135\3\2\2\2\u0139\u013c\3\2\2\2\u013a"+
|
||||
"\u0138\3\2\2\2\u013a\u013b\3\2\2\2\u013b+\3\2\2\2\u013c\u013a\3\2\2\2"+
|
||||
"\u013d\u0140\7x\2\2\u013e\u013f\7\'\2\2\u013f\u0141\5J&\2\u0140\u013e"+
|
||||
"\u013d\u0140\7y\2\2\u013e\u013f\7\'\2\2\u013f\u0141\5J&\2\u0140\u013e"+
|
||||
"\3\2\2\2\u0140\u0141\3\2\2\2\u0141-\3\2\2\2\u0142\u0146\5\26\f\2\u0143"+
|
||||
"\u0145\5\30\r\2\u0144\u0143\3\2\2\2\u0145\u0148\3\2\2\2\u0146\u0144\3"+
|
||||
"\2\2\2\u0146\u0147\3\2\2\2\u0147\u0149\3\2\2\2\u0148\u0146\3\2\2\2\u0149"+
|
||||
"\u014a\7x\2\2\u014a\u014c\7\b\2\2\u014b\u014d\5\62\32\2\u014c\u014b\3"+
|
||||
"\u014a\7y\2\2\u014a\u014c\7\b\2\2\u014b\u014d\5\62\32\2\u014c\u014b\3"+
|
||||
"\2\2\2\u014c\u014d\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u0151\7\t\2\2\u014f"+
|
||||
"\u0152\5\60\31\2\u0150\u0152\7\n\2\2\u0151\u014f\3\2\2\2\u0151\u0150\3"+
|
||||
"\2\2\2\u0152/\3\2\2\2\u0153\u0155\7\4\2\2\u0154\u0156\5<\37\2\u0155\u0154"+
|
||||
@ -7770,46 +7771,46 @@ public class KickCParser extends Parser {
|
||||
"\u015f\3\2\2\2\u015f\63\3\2\2\2\u0160\u015e\3\2\2\2\u0161\u0165\5\26\f"+
|
||||
"\2\u0162\u0164\5\30\r\2\u0163\u0162\3\2\2\2\u0164\u0167\3\2\2\2\u0165"+
|
||||
"\u0163\3\2\2\2\u0165\u0166\3\2\2\2\u0166\u0168\3\2\2\2\u0167\u0165\3\2"+
|
||||
"\2\2\u0168\u0169\7x\2\2\u0169\u016d\3\2\2\2\u016a\u016d\7`\2\2\u016b\u016d"+
|
||||
"\2\2\u0168\u0169\7y\2\2\u0169\u016d\3\2\2\2\u016a\u016d\7`\2\2\u016b\u016d"+
|
||||
"\7\16\2\2\u016c\u0161\3\2\2\2\u016c\u016a\3\2\2\2\u016c\u016b\3\2\2\2"+
|
||||
"\u016d\65\3\2\2\2\u016e\u016f\7e\2\2\u016f\u0170\7,\2\2\u0170\u0171\3"+
|
||||
"\2\2\2\u0171\u0172\7\b\2\2\u0172\u0173\7x\2\2\u0173\u01c6\7\t\2\2\u0174"+
|
||||
"\2\2\2\u0171\u0172\7\b\2\2\u0172\u0173\7y\2\2\u0173\u01c6\7\t\2\2\u0174"+
|
||||
"\u0175\7e\2\2\u0175\u0176\7\60\2\2\u0176\u0177\3\2\2\2\u0177\u0178\7\b"+
|
||||
"\2\2\u0178\u0179\7x\2\2\u0179\u01c6\7\t\2\2\u017a\u017b\7e\2\2\u017b\u017c"+
|
||||
"\7-\2\2\u017c\u017d\3\2\2\2\u017d\u017e\7\b\2\2\u017e\u017f\7y\2\2\u017f"+
|
||||
"\2\2\u0178\u0179\7y\2\2\u0179\u01c6\7\t\2\2\u017a\u017b\7e\2\2\u017b\u017c"+
|
||||
"\7-\2\2\u017c\u017d\3\2\2\2\u017d\u017e\7\b\2\2\u017e\u017f\7z\2\2\u017f"+
|
||||
"\u01c6\7\t\2\2\u0180\u0181\7e\2\2\u0181\u0182\7.\2\2\u0182\u0183\3\2\2"+
|
||||
"\2\u0183\u0184\7\b\2\2\u0184\u0185\7y\2\2\u0185\u01c6\7\t\2\2\u0186\u0187"+
|
||||
"\2\u0183\u0184\7\b\2\2\u0184\u0185\7z\2\2\u0185\u01c6\7\t\2\2\u0186\u0187"+
|
||||
"\7e\2\2\u0187\u0188\7/\2\2\u0188\u0189\3\2\2\2\u0189\u018a\7\b\2\2\u018a"+
|
||||
"\u018b\7y\2\2\u018b\u01c6\7\t\2\2\u018c\u018d\7e\2\2\u018d\u018e\7*\2"+
|
||||
"\u018b\7z\2\2\u018b\u01c6\7\t\2\2\u018c\u018d\7e\2\2\u018d\u018e\7*\2"+
|
||||
"\2\u018e\u018f\3\2\2\2\u018f\u0190\7\b\2\2\u0190\u0195\58\35\2\u0191\u0192"+
|
||||
"\7\f\2\2\u0192\u0194\58\35\2\u0193\u0191\3\2\2\2\u0194\u0197\3\2\2\2\u0195"+
|
||||
"\u0193\3\2\2\2\u0195\u0196\3\2\2\2\u0196\u0198\3\2\2\2\u0197\u0195\3\2"+
|
||||
"\2\2\u0198\u0199\7\t\2\2\u0199\u01c6\3\2\2\2\u019a\u019b\7e\2\2\u019b"+
|
||||
"\u019c\7+\2\2\u019c\u019d\3\2\2\2\u019d\u019e\7\b\2\2\u019e\u019f\7o\2"+
|
||||
"\u019c\7+\2\2\u019c\u019d\3\2\2\2\u019d\u019e\7\b\2\2\u019e\u019f\7p\2"+
|
||||
"\2\u019f\u01c6\7\t\2\2\u01a0\u01a1\7e\2\2\u01a1\u01a2\7\61\2\2\u01a2\u01a3"+
|
||||
"\3\2\2\2\u01a3\u01a4\7\b\2\2\u01a4\u01a5\7x\2\2\u01a5\u01c6\7\t\2\2\u01a6"+
|
||||
"\3\2\2\2\u01a3\u01a4\7\b\2\2\u01a4\u01a5\7y\2\2\u01a5\u01c6\7\t\2\2\u01a6"+
|
||||
"\u01a7\7e\2\2\u01a7\u01a8\7\62\2\2\u01a8\u01a9\3\2\2\2\u01a9\u01aa\7\b"+
|
||||
"\2\2\u01aa\u01ab\7x\2\2\u01ab\u01c6\7\t\2\2\u01ac\u01ad\7e\2\2\u01ad\u01ae"+
|
||||
"\7\63\2\2\u01ae\u01af\3\2\2\2\u01af\u01b0\7\b\2\2\u01b0\u01b1\7x\2\2\u01b1"+
|
||||
"\2\2\u01aa\u01ab\7y\2\2\u01ab\u01c6\7\t\2\2\u01ac\u01ad\7e\2\2\u01ad\u01ae"+
|
||||
"\7\63\2\2\u01ae\u01af\3\2\2\2\u01af\u01b0\7\b\2\2\u01b0\u01b1\7y\2\2\u01b1"+
|
||||
"\u01c6\7\t\2\2\u01b2\u01b3\7e\2\2\u01b3\u01b4\7D\2\2\u01b4\u01b5\3\2\2"+
|
||||
"\2\u01b5\u01b6\7\b\2\2\u01b6\u01b7\7E\2\2\u01b7\u01c6\7\t\2\2\u01b8\u01b9"+
|
||||
"\7e\2\2\u01b9\u01ba\7F\2\2\u01ba\u01bb\3\2\2\2\u01bb\u01bc\7\b\2\2\u01bc"+
|
||||
"\u01c1\7x\2\2\u01bd\u01be\7\f\2\2\u01be\u01c0\7x\2\2\u01bf\u01bd\3\2\2"+
|
||||
"\u01c1\7y\2\2\u01bd\u01be\7\f\2\2\u01be\u01c0\7y\2\2\u01bf\u01bd\3\2\2"+
|
||||
"\2\u01c0\u01c3\3\2\2\2\u01c1\u01bf\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2\u01c4"+
|
||||
"\3\2\2\2\u01c3\u01c1\3\2\2\2\u01c4\u01c6\7\t\2\2\u01c5\u016e\3\2\2\2\u01c5"+
|
||||
"\u0174\3\2\2\2\u01c5\u017a\3\2\2\2\u01c5\u0180\3\2\2\2\u01c5\u0186\3\2"+
|
||||
"\2\2\u01c5\u018c\3\2\2\2\u01c5\u019a\3\2\2\2\u01c5\u01a0\3\2\2\2\u01c5"+
|
||||
"\u01a6\3\2\2\2\u01c5\u01ac\3\2\2\2\u01c5\u01b2\3\2\2\2\u01c5\u01b8\3\2"+
|
||||
"\2\2\u01c6\67\3\2\2\2\u01c7\u01ca\7o\2\2\u01c8\u01c9\7\r\2\2\u01c9\u01cb"+
|
||||
"\7o\2\2\u01ca\u01c8\3\2\2\2\u01ca\u01cb\3\2\2\2\u01cb9\3\2\2\2\u01cc\u01f9"+
|
||||
"\7\64\2\2\u01cd\u01ce\7\67\2\2\u01ce\u01cf\7\b\2\2\u01cf\u01d0\7o\2\2"+
|
||||
"\2\2\u01c6\67\3\2\2\2\u01c7\u01ca\7p\2\2\u01c8\u01c9\7\r\2\2\u01c9\u01cb"+
|
||||
"\7p\2\2\u01ca\u01c8\3\2\2\2\u01ca\u01cb\3\2\2\2\u01cb9\3\2\2\2\u01cc\u01f9"+
|
||||
"\7\64\2\2\u01cd\u01ce\7\67\2\2\u01ce\u01cf\7\b\2\2\u01cf\u01d0\7p\2\2"+
|
||||
"\u01d0\u01f9\7\t\2\2\u01d1\u01d5\7<\2\2\u01d2\u01d3\7\b\2\2\u01d3\u01d4"+
|
||||
"\7x\2\2\u01d4\u01d6\7\t\2\2\u01d5\u01d2\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6"+
|
||||
"\7y\2\2\u01d4\u01d6\7\t\2\2\u01d5\u01d2\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6"+
|
||||
"\u01f9\3\2\2\2\u01d7\u01f9\7?\2\2\u01d8\u01f9\7@\2\2\u01d9\u01da\7>\2"+
|
||||
"\2\u01da\u01db\7\b\2\2\u01db\u01dc\7o\2\2\u01dc\u01f9\7\t\2\2\u01dd\u01f9"+
|
||||
"\2\u01da\u01db\7\b\2\2\u01db\u01dc\7p\2\2\u01dc\u01f9\7\t\2\2\u01dd\u01f9"+
|
||||
"\79\2\2\u01de\u01f9\7:\2\2\u01df\u01f9\7A\2\2\u01e0\u01f9\7B\2\2\u01e1"+
|
||||
"\u01f9\7\65\2\2\u01e2\u01f9\7\66\2\2\u01e3\u01f9\78\2\2\u01e4\u01f9\7"+
|
||||
"C\2\2\u01e5\u01e9\7;\2\2\u01e6\u01e7\7\b\2\2\u01e7\u01e8\7x\2\2\u01e8"+
|
||||
"C\2\2\u01e5\u01e9\7;\2\2\u01e6\u01e7\7\b\2\2\u01e7\u01e8\7y\2\2\u01e8"+
|
||||
"\u01ea\7\t\2\2\u01e9\u01e6\3\2\2\2\u01e9\u01ea\3\2\2\2\u01ea\u01f9\3\2"+
|
||||
"\2\2\u01eb\u01ec\7=\2\2\u01ec\u01ed\7\b\2\2\u01ed\u01f2\58\35\2\u01ee"+
|
||||
"\u01ef\7\f\2\2\u01ef\u01f1\58\35\2\u01f0\u01ee\3\2\2\2\u01f1\u01f4\3\2"+
|
||||
@ -7846,7 +7847,7 @@ public class KickCParser extends Parser {
|
||||
"\u0247\7N\2\2\u0247\u0254\7\n\2\2\u0248\u0249\7O\2\2\u0249\u0254\7\n\2"+
|
||||
"\2\u024a\u024c\7P\2\2\u024b\u024d\5P)\2\u024c\u024b\3\2\2\2\u024c\u024d"+
|
||||
"\3\2\2\2\u024d\u024e\3\2\2\2\u024e\u024f\7\4\2\2\u024f\u0250\5T+\2\u0250"+
|
||||
"\u0251\7\u0091\2\2\u0251\u0254\3\2\2\2\u0252\u0254\5N(\2\u0253\u01ff\3"+
|
||||
"\u0251\7\u0092\2\2\u0251\u0254\3\2\2\2\u0252\u0254\5N(\2\u0253\u01ff\3"+
|
||||
"\2\2\2\u0253\u0202\3\2\2\2\u0253\u0207\3\2\2\2\u0253\u020a\3\2\2\2\u0253"+
|
||||
"\u0216\3\2\2\2\u0253\u0222\3\2\2\2\u0253\u0230\3\2\2\2\u0253\u0239\3\2"+
|
||||
"\2\2\u0253\u0241\3\2\2\2\u0253\u0246\3\2\2\2\u0253\u0248\3\2\2\2\u0253"+
|
||||
@ -7862,7 +7863,7 @@ public class KickCParser extends Parser {
|
||||
"\5\26\f\2\u026f\u0271\5\30\r\2\u0270\u026f\3\2\2\2\u0271\u0274\3\2\2\2"+
|
||||
"\u0272\u0270\3\2\2\2\u0272\u0273\3\2\2\2\u0273\u0276\3\2\2\2\u0274\u0272"+
|
||||
"\3\2\2\2\u0275\u026e\3\2\2\2\u0275\u0276\3\2\2\2\u0276\u0277\3\2\2\2\u0277"+
|
||||
"\u0278\7x\2\2\u0278\u0279\7\13\2\2\u0279\u027a\5J&\2\u027a\u027b\7\r\2"+
|
||||
"\u0278\7y\2\2\u0278\u0279\7\13\2\2\u0279\u027a\5J&\2\u027a\u027b\7\r\2"+
|
||||
"\2\u027b\u027c\5J&\2\u027c\u027e\3\2\2\2\u027d\u0267\3\2\2\2\u027d\u0275"+
|
||||
"\3\2\2\2\u027eE\3\2\2\2\u027f\u0281\5\16\b\2\u0280\u027f\3\2\2\2\u0280"+
|
||||
"\u0281\3\2\2\2\u0281\u0284\3\2\2\2\u0282\u0284\5H%\2\u0283\u0280\3\2\2"+
|
||||
@ -7877,7 +7878,7 @@ public class KickCParser extends Parser {
|
||||
"\2\2\u029e\u02a1\7\b\2\2\u029f\u02a2\5J&\2\u02a0\u02a2\5\34\17\2\u02a1"+
|
||||
"\u029f\3\2\2\2\u02a1\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a4\7\t"+
|
||||
"\2\2\u02a4\u02cf\3\2\2\2\u02a5\u02a7\7W\2\2\u02a6\u02a8\7\b\2\2\u02a7"+
|
||||
"\u02a6\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02ab\7x"+
|
||||
"\u02a6\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02ab\7y"+
|
||||
"\2\2\u02aa\u02ac\7\t\2\2\u02ab\u02aa\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac"+
|
||||
"\u02cf\3\2\2\2\u02ad\u02ae\7\b\2\2\u02ae\u02af\5\34\17\2\u02af\u02b0\7"+
|
||||
"\t\2\2\u02b0\u02b1\5J&\32\u02b1\u02cf\3\2\2\2\u02b2\u02b3\t\2\2\2\u02b3"+
|
||||
@ -7886,9 +7887,9 @@ public class KickCParser extends Parser {
|
||||
"\7\4\2\2\u02bb\u02c0\5J&\2\u02bc\u02bd\7\f\2\2\u02bd\u02bf\5J&\2\u02be"+
|
||||
"\u02bc\3\2\2\2\u02bf\u02c2\3\2\2\2\u02c0\u02be\3\2\2\2\u02c0\u02c1\3\2"+
|
||||
"\2\2\u02c1\u02c3\3\2\2\2\u02c2\u02c0\3\2\2\2\u02c3\u02c4\7\5\2\2\u02c4"+
|
||||
"\u02cf\3\2\2\2\u02c5\u02cf\7x\2\2\u02c6\u02cf\7o\2\2\u02c7\u02c9\7y\2"+
|
||||
"\u02cf\3\2\2\2\u02c5\u02cf\7y\2\2\u02c6\u02cf\7p\2\2\u02c7\u02c9\7z\2"+
|
||||
"\2\u02c8\u02c7\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02c8\3\2\2\2\u02ca\u02cb"+
|
||||
"\3\2\2\2\u02cb\u02cf\3\2\2\2\u02cc\u02cf\7z\2\2\u02cd\u02cf\7a\2\2\u02ce"+
|
||||
"\3\2\2\2\u02cb\u02cf\3\2\2\2\u02cc\u02cf\7{\2\2\u02cd\u02cf\7a\2\2\u02ce"+
|
||||
"\u0290\3\2\2\2\u02ce\u0295\3\2\2\2\u02ce\u029d\3\2\2\2\u02ce\u02a5\3\2"+
|
||||
"\2\2\u02ce\u02ad\3\2\2\2\u02ce\u02b2\3\2\2\2\u02ce\u02b4\3\2\2\2\u02ce"+
|
||||
"\u02b6\3\2\2\2\u02ce\u02b8\3\2\2\2\u02ce\u02ba\3\2\2\2\u02ce\u02c5\3\2"+
|
||||
@ -7905,7 +7906,7 @@ public class KickCParser extends Parser {
|
||||
"\u02ef\7\13\2\2\u02ef\u02f0\5J&\f\u02f0\u030b\3\2\2\2\u02f1\u02f2\f\n"+
|
||||
"\2\2\u02f2\u02f3\7\'\2\2\u02f3\u030b\5J&\n\u02f4\u02f5\f\t\2\2\u02f5\u02f6"+
|
||||
"\7(\2\2\u02f6\u030b\5J&\t\u02f7\u02f8\f!\2\2\u02f8\u02f9\7\20\2\2\u02f9"+
|
||||
"\u030b\7x\2\2\u02fa\u02fb\f \2\2\u02fb\u02fc\7\21\2\2\u02fc\u030b\7x\2"+
|
||||
"\u030b\7y\2\2\u02fa\u02fb\f \2\2\u02fb\u02fc\7\21\2\2\u02fc\u030b\7y\2"+
|
||||
"\2\u02fd\u02fe\f\37\2\2\u02fe\u0300\7\b\2\2\u02ff\u0301\5L\'\2\u0300\u02ff"+
|
||||
"\3\2\2\2\u0300\u0301\3\2\2\2\u0301\u0302\3\2\2\2\u0302\u030b\7\t\2\2\u0303"+
|
||||
"\u0304\f\33\2\2\u0304\u0305\7\6\2\2\u0305\u0306\5H%\2\u0306\u0307\7\7"+
|
||||
@ -7924,8 +7925,8 @@ public class KickCParser extends Parser {
|
||||
"\u0320\7\f\2\2\u0320\u0322\5R*\2\u0321\u031f\3\2\2\2\u0322\u0325\3\2\2"+
|
||||
"\2\u0323\u0321\3\2\2\2\u0323\u0324\3\2\2\2\u0324\u0326\3\2\2\2\u0325\u0323"+
|
||||
"\3\2\2\2\u0326\u0327\7\t\2\2\u0327Q\3\2\2\2\u0328\u0329\7Y\2\2\u0329\u0338"+
|
||||
"\7y\2\2\u032a\u032b\7Z\2\2\u032b\u0338\7x\2\2\u032c\u032d\7[\2\2\u032d"+
|
||||
"\u0338\7y\2\2\u032e\u032f\7\\\2\2\u032f\u0338\5J&\2\u0330\u0331\7]\2\2"+
|
||||
"\7z\2\2\u032a\u032b\7Z\2\2\u032b\u0338\7y\2\2\u032c\u032d\7[\2\2\u032d"+
|
||||
"\u0338\7z\2\2\u032e\u032f\7\\\2\2\u032f\u0338\5J&\2\u0330\u0331\7]\2\2"+
|
||||
"\u0331\u0338\5J&\2\u0332\u0335\7+\2\2\u0333\u0336\78\2\2\u0334\u0336\5"+
|
||||
"J&\2\u0335\u0333\3\2\2\2\u0335\u0334\3\2\2\2\u0336\u0338\3\2\2\2\u0337"+
|
||||
"\u0328\3\2\2\2\u0337\u032a\3\2\2\2\u0337\u032c\3\2\2\2\u0337\u032e\3\2"+
|
||||
@ -7933,29 +7934,29 @@ public class KickCParser extends Parser {
|
||||
"\5V,\2\u033a\u0339\3\2\2\2\u033b\u033e\3\2\2\2\u033c\u033a\3\2\2\2\u033c"+
|
||||
"\u033d\3\2\2\2\u033dU\3\2\2\2\u033e\u033c\3\2\2\2\u033f\u0343\5X-\2\u0340"+
|
||||
"\u0343\5Z.\2\u0341\u0343\5\\/\2\u0342\u033f\3\2\2\2\u0342\u0340\3\2\2"+
|
||||
"\2\u0342\u0341\3\2\2\2\u0343W\3\2\2\2\u0344\u0345\7\u009e\2\2\u0345\u0349"+
|
||||
"\7\u0081\2\2\u0346\u0347\7\u009d\2\2\u0347\u0349\7\u0081\2\2\u0348\u0344"+
|
||||
"\3\2\2\2\u0348\u0346\3\2\2\2\u0349Y\3\2\2\2\u034a\u034c\7\177\2\2\u034b"+
|
||||
"\2\u0342\u0341\3\2\2\2\u0343W\3\2\2\2\u0344\u0345\7\u009f\2\2\u0345\u0349"+
|
||||
"\7\u0082\2\2\u0346\u0347\7\u009e\2\2\u0347\u0349\7\u0082\2\2\u0348\u0344"+
|
||||
"\3\2\2\2\u0348\u0346\3\2\2\2\u0349Y\3\2\2\2\u034a\u034c\7\u0080\2\2\u034b"+
|
||||
"\u034d\5^\60\2\u034c\u034b\3\2\2\2\u034c\u034d\3\2\2\2\u034d[\3\2\2\2"+
|
||||
"\u034e\u034f\7~\2\2\u034f\u0354\5`\61\2\u0350\u0351\7\u0082\2\2\u0351"+
|
||||
"\u034e\u034f\7\177\2\2\u034f\u0354\5`\61\2\u0350\u0351\7\u0083\2\2\u0351"+
|
||||
"\u0353\5`\61\2\u0352\u0350\3\2\2\2\u0353\u0356\3\2\2\2\u0354\u0352\3\2"+
|
||||
"\2\2\u0354\u0355\3\2\2\2\u0355]\3\2\2\2\u0356\u0354\3\2\2\2\u0357\u036f"+
|
||||
"\5`\61\2\u0358\u0359\7\u0080\2\2\u0359\u036f\5`\61\2\u035a\u035b\5`\61"+
|
||||
"\2\u035b\u035c\7\u0082\2\2\u035c\u035d\7\u009e\2\2\u035d\u036f\3\2\2\2"+
|
||||
"\u035e\u035f\7\u0083\2\2\u035f\u0360\5`\61\2\u0360\u0361\7\u0084\2\2\u0361"+
|
||||
"\u0362\7\u0082\2\2\u0362\u0363\7\u009e\2\2\u0363\u036f\3\2\2\2\u0364\u0365"+
|
||||
"\7\u0083\2\2\u0365\u0366\5`\61\2\u0366\u0367\7\u0082\2\2\u0367\u0368\7"+
|
||||
"\u009e\2\2\u0368\u0369\7\u0084\2\2\u0369\u036f\3\2\2\2\u036a\u036b\7\u0083"+
|
||||
"\2\2\u036b\u036c\5`\61\2\u036c\u036d\7\u0084\2\2\u036d\u036f\3\2\2\2\u036e"+
|
||||
"\5`\61\2\u0358\u0359\7\u0081\2\2\u0359\u036f\5`\61\2\u035a\u035b\5`\61"+
|
||||
"\2\u035b\u035c\7\u0083\2\2\u035c\u035d\7\u009f\2\2\u035d\u036f\3\2\2\2"+
|
||||
"\u035e\u035f\7\u0084\2\2\u035f\u0360\5`\61\2\u0360\u0361\7\u0085\2\2\u0361"+
|
||||
"\u0362\7\u0083\2\2\u0362\u0363\7\u009f\2\2\u0363\u036f\3\2\2\2\u0364\u0365"+
|
||||
"\7\u0084\2\2\u0365\u0366\5`\61\2\u0366\u0367\7\u0083\2\2\u0367\u0368\7"+
|
||||
"\u009f\2\2\u0368\u0369\7\u0085\2\2\u0369\u036f\3\2\2\2\u036a\u036b\7\u0084"+
|
||||
"\2\2\u036b\u036c\5`\61\2\u036c\u036d\7\u0085\2\2\u036d\u036f\3\2\2\2\u036e"+
|
||||
"\u0357\3\2\2\2\u036e\u0358\3\2\2\2\u036e\u035a\3\2\2\2\u036e\u035e\3\2"+
|
||||
"\2\2\u036e\u0364\3\2\2\2\u036e\u036a\3\2\2\2\u036f_\3\2\2\2\u0370\u0371"+
|
||||
"\b\61\1\2\u0371\u0372\7\u0085\2\2\u0372\u0373\5`\61\2\u0373\u0374\7\u0086"+
|
||||
"\b\61\1\2\u0371\u0372\7\u0086\2\2\u0372\u0373\5`\61\2\u0373\u0374\7\u0087"+
|
||||
"\2\2\u0374\u037f\3\2\2\2\u0375\u0376\t\t\2\2\u0376\u037f\5`\61\n\u0377"+
|
||||
"\u037f\7\u009e\2\2\u0378\u037f\7\u009c\2\2\u0379\u037a\7\u0090\2\2\u037a"+
|
||||
"\u037b\7\u009e\2\2\u037b\u037f\7\u0091\2\2\u037c\u037f\7\u0092\2\2\u037d"+
|
||||
"\u037f\7\u009b\2\2\u037e\u0370\3\2\2\2\u037e\u0375\3\2\2\2\u037e\u0377"+
|
||||
"\u037f\7\u009f\2\2\u0378\u037f\7\u009d\2\2\u0379\u037a\7\u0091\2\2\u037a"+
|
||||
"\u037b\7\u009f\2\2\u037b\u037f\7\u0092\2\2\u037c\u037f\7\u0093\2\2\u037d"+
|
||||
"\u037f\7\u009c\2\2\u037e\u0370\3\2\2\2\u037e\u0375\3\2\2\2\u037e\u0377"+
|
||||
"\3\2\2\2\u037e\u0378\3\2\2\2\u037e\u0379\3\2\2\2\u037e\u037c\3\2\2\2\u037e"+
|
||||
"\u037d\3\2\2\2\u037f\u038e\3\2\2\2\u0380\u0381\f\f\2\2\u0381\u0382\7\u0087"+
|
||||
"\u037d\3\2\2\2\u037f\u038e\3\2\2\2\u0380\u0381\f\f\2\2\u0381\u0382\7\u0088"+
|
||||
"\2\2\u0382\u038d\5`\61\r\u0383\u0384\f\13\2\2\u0384\u0385\t\n\2\2\u0385"+
|
||||
"\u038d\5`\61\f\u0386\u0387\f\t\2\2\u0387\u0388\t\13\2\2\u0388\u038d\5"+
|
||||
"`\61\n\u0389\u038a\f\b\2\2\u038a\u038b\t\f\2\2\u038b\u038d\5`\61\t\u038c"+
|
||||
|
@ -106,62 +106,63 @@ IFIF=105
|
||||
ELIF=106
|
||||
IFELSE=107
|
||||
ENDIF=108
|
||||
NUMBER=109
|
||||
NUMFLOAT=110
|
||||
BINFLOAT=111
|
||||
DECFLOAT=112
|
||||
HEXFLOAT=113
|
||||
NUMINT=114
|
||||
BININTEGER=115
|
||||
DECINTEGER=116
|
||||
HEXINTEGER=117
|
||||
NAME=118
|
||||
STRING=119
|
||||
CHAR=120
|
||||
WS=121
|
||||
COMMENT_LINE=122
|
||||
COMMENT_BLOCK=123
|
||||
ASM_BYTE=124
|
||||
ASM_MNEMONIC=125
|
||||
ASM_IMM=126
|
||||
ASM_COLON=127
|
||||
ASM_COMMA=128
|
||||
ASM_PAR_BEGIN=129
|
||||
ASM_PAR_END=130
|
||||
ASM_BRACKET_BEGIN=131
|
||||
ASM_BRACKET_END=132
|
||||
ASM_DOT=133
|
||||
ASM_SHIFT_LEFT=134
|
||||
ASM_SHIFT_RIGHT=135
|
||||
ASM_PLUS=136
|
||||
ASM_MINUS=137
|
||||
ASM_LESS_THAN=138
|
||||
ASM_GREATER_THAN=139
|
||||
ASM_MULTIPLY=140
|
||||
ASM_DIVIDE=141
|
||||
ASM_CURLY_BEGIN=142
|
||||
ASM_CURLY_END=143
|
||||
ASM_NUMBER=144
|
||||
ASM_NUMFLOAT=145
|
||||
ASM_BINFLOAT=146
|
||||
ASM_DECFLOAT=147
|
||||
ASM_HEXFLOAT=148
|
||||
ASM_NUMINT=149
|
||||
ASM_BININTEGER=150
|
||||
ASM_DECINTEGER=151
|
||||
ASM_HEXINTEGER=152
|
||||
ASM_CHAR=153
|
||||
ASM_MULTI_REL=154
|
||||
ASM_MULTI_NAME=155
|
||||
ASM_NAME=156
|
||||
ASM_WS=157
|
||||
ASM_COMMENT_LINE=158
|
||||
ASM_COMMENT_BLOCK=159
|
||||
IMPORT_SYSTEMFILE=160
|
||||
IMPORT_LOCALFILE=161
|
||||
IMPORT_WS=162
|
||||
IMPORT_COMMENT_LINE=163
|
||||
IMPORT_COMMENT_BLOCK=164
|
||||
ERROR=109
|
||||
NUMBER=110
|
||||
NUMFLOAT=111
|
||||
BINFLOAT=112
|
||||
DECFLOAT=113
|
||||
HEXFLOAT=114
|
||||
NUMINT=115
|
||||
BININTEGER=116
|
||||
DECINTEGER=117
|
||||
HEXINTEGER=118
|
||||
NAME=119
|
||||
STRING=120
|
||||
CHAR=121
|
||||
WS=122
|
||||
COMMENT_LINE=123
|
||||
COMMENT_BLOCK=124
|
||||
ASM_BYTE=125
|
||||
ASM_MNEMONIC=126
|
||||
ASM_IMM=127
|
||||
ASM_COLON=128
|
||||
ASM_COMMA=129
|
||||
ASM_PAR_BEGIN=130
|
||||
ASM_PAR_END=131
|
||||
ASM_BRACKET_BEGIN=132
|
||||
ASM_BRACKET_END=133
|
||||
ASM_DOT=134
|
||||
ASM_SHIFT_LEFT=135
|
||||
ASM_SHIFT_RIGHT=136
|
||||
ASM_PLUS=137
|
||||
ASM_MINUS=138
|
||||
ASM_LESS_THAN=139
|
||||
ASM_GREATER_THAN=140
|
||||
ASM_MULTIPLY=141
|
||||
ASM_DIVIDE=142
|
||||
ASM_CURLY_BEGIN=143
|
||||
ASM_CURLY_END=144
|
||||
ASM_NUMBER=145
|
||||
ASM_NUMFLOAT=146
|
||||
ASM_BINFLOAT=147
|
||||
ASM_DECFLOAT=148
|
||||
ASM_HEXFLOAT=149
|
||||
ASM_NUMINT=150
|
||||
ASM_BININTEGER=151
|
||||
ASM_DECINTEGER=152
|
||||
ASM_HEXINTEGER=153
|
||||
ASM_CHAR=154
|
||||
ASM_MULTI_REL=155
|
||||
ASM_MULTI_NAME=156
|
||||
ASM_NAME=157
|
||||
ASM_WS=158
|
||||
ASM_COMMENT_LINE=159
|
||||
ASM_COMMENT_BLOCK=160
|
||||
IMPORT_SYSTEMFILE=161
|
||||
IMPORT_LOCALFILE=162
|
||||
IMPORT_WS=163
|
||||
IMPORT_COMMENT_LINE=164
|
||||
IMPORT_COMMENT_BLOCK=165
|
||||
';'=8
|
||||
'..'=11
|
||||
'...'=12
|
||||
@ -245,5 +246,6 @@ IMPORT_COMMENT_BLOCK=164
|
||||
'#elif'=106
|
||||
'#else'=107
|
||||
'#endif'=108
|
||||
'.byte'=124
|
||||
'#'=126
|
||||
'#error'=109
|
||||
'.byte'=125
|
||||
'#'=127
|
||||
|
@ -141,6 +141,9 @@ public class CPreprocessor implements TokenSource {
|
||||
return expand(inputToken, cTokenSource);
|
||||
} else if(inputToken.getType() == KickCLexer.PRAGMA) {
|
||||
return pragma(inputToken, cTokenSource);
|
||||
} else if(inputToken.getType() == KickCLexer.ERROR) {
|
||||
error(inputToken, cTokenSource);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -182,6 +185,25 @@ public class CPreprocessor implements TokenSource {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report an error and halt compilation
|
||||
*
|
||||
* @param inputToken The #error token
|
||||
* @param cTokenSource The token source used to get the error message
|
||||
*/
|
||||
private void error(Token inputToken, CTokenSource cTokenSource) {
|
||||
skipWhitespace(cTokenSource);
|
||||
final ArrayList<Token> errorBody = readBody(cTokenSource);
|
||||
StringBuilder errorMsg = new StringBuilder();
|
||||
Token lastToken = inputToken;
|
||||
for(Token token : errorBody) {
|
||||
errorMsg.append(token.getText());
|
||||
lastToken = token;
|
||||
}
|
||||
throw new CompileError(errorMsg.toString(), new StatementSource(inputToken, lastToken));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Define a macro.
|
||||
*
|
||||
|
@ -398,6 +398,16 @@ public class TestPrograms {
|
||||
compileAndCompare("cstyle-decl-function.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreprocessor11() throws IOException, URISyntaxException {
|
||||
compileAndCompare("preprocessor-11.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreprocessor10() throws IOException, URISyntaxException {
|
||||
assertError("preprocessor-10.c", "Preprocessor causing an error!");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreprocessor9() throws IOException, URISyntaxException {
|
||||
compileAndCompare("preprocessor-9.c");
|
||||
|
7
src/test/kc/preprocessor-10.c
Normal file
7
src/test/kc/preprocessor-10.c
Normal file
@ -0,0 +1,7 @@
|
||||
// Test the preprocessor
|
||||
// #error
|
||||
|
||||
#error Preprocessor causing an error!
|
||||
|
||||
void main() {
|
||||
}
|
12
src/test/kc/preprocessor-11.c
Normal file
12
src/test/kc/preprocessor-11.c
Normal file
@ -0,0 +1,12 @@
|
||||
// Test the preprocessor
|
||||
// #error that is not used
|
||||
|
||||
#ifdef ERR
|
||||
#error Preprocessor causing an error!
|
||||
#endif
|
||||
|
||||
char * const SCREEN = 0x0400;
|
||||
|
||||
void main() {
|
||||
SCREEN[0] = 'a';
|
||||
}
|
13
src/test/ref/preprocessor-11.asm
Normal file
13
src/test/ref/preprocessor-11.asm
Normal file
@ -0,0 +1,13 @@
|
||||
// Test the preprocessor
|
||||
// #error that is not used
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
main: {
|
||||
// SCREEN[0] = 'a'
|
||||
lda #'a'
|
||||
sta SCREEN
|
||||
// }
|
||||
rts
|
||||
}
|
17
src/test/ref/preprocessor-11.cfg
Normal file
17
src/test/ref/preprocessor-11.cfg
Normal file
@ -0,0 +1,17 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi()
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
[4] *((const nomodify byte*) SCREEN) ← (byte) 'a'
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[5] return
|
||||
to:@return
|
219
src/test/ref/preprocessor-11.log
Normal file
219
src/test/ref/preprocessor-11.log
Normal file
@ -0,0 +1,219 @@
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
*((const nomodify byte*) SCREEN + (number) 0) ← (byte) 'a'
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) SCREEN = (byte*)(number) $400
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
Adding number conversion cast (unumber) 0 in *((const nomodify byte*) SCREEN + (number) 0) ← (byte) 'a'
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant integer cast 0
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Simplifying expression containing zero SCREEN in [0] *((const nomodify byte*) SCREEN + (byte) 0) ← (byte) 'a'
|
||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi()
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
[4] *((const nomodify byte*) SCREEN) ← (byte) 'a'
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[5] return
|
||||
to:@return
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
Complete equivalence classes
|
||||
|
||||
INITIAL ASM
|
||||
Target platform is c64basic / MOS6502X
|
||||
// File Comments
|
||||
// Test the preprocessor
|
||||
// #error that is not used
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
__b1_from___bbegin:
|
||||
jmp __b1
|
||||
// @1
|
||||
__b1:
|
||||
// [2] call main
|
||||
jsr main
|
||||
// [3] phi from @1 to @end [phi:@1->@end]
|
||||
__bend_from___b1:
|
||||
jmp __bend
|
||||
// @end
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
// [4] *((const nomodify byte*) SCREEN) ← (byte) 'a' -- _deref_pbuc1=vbuc2
|
||||
lda #'a'
|
||||
sta SCREEN
|
||||
jmp __breturn
|
||||
// main::@return
|
||||
__breturn:
|
||||
// [5] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const nomodify byte*) SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 27 combination
|
||||
Uplifting [] best 27 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
// Test the preprocessor
|
||||
// #error that is not used
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
__bbegin:
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
__b1_from___bbegin:
|
||||
jmp __b1
|
||||
// @1
|
||||
__b1:
|
||||
// [2] call main
|
||||
jsr main
|
||||
// [3] phi from @1 to @end [phi:@1->@end]
|
||||
__bend_from___b1:
|
||||
jmp __bend
|
||||
// @end
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
// [4] *((const nomodify byte*) SCREEN) ← (byte) 'a' -- _deref_pbuc1=vbuc2
|
||||
lda #'a'
|
||||
sta SCREEN
|
||||
jmp __breturn
|
||||
// main::@return
|
||||
__breturn:
|
||||
// [5] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp __b1
|
||||
Removing instruction jmp __bend
|
||||
Removing instruction jmp __breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction __b1_from___bbegin:
|
||||
Removing instruction __b1:
|
||||
Removing instruction __bend_from___b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction __bbegin:
|
||||
Removing instruction __bend:
|
||||
Removing instruction __breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Removing instruction jsr main
|
||||
Succesful ASM optimization Pass5SkipBegin
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) SCREEN = (byte*) 1024
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 12
|
||||
|
||||
// File Comments
|
||||
// Test the preprocessor
|
||||
// #error that is not used
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
// @1
|
||||
// [2] call main
|
||||
// [3] phi from @1 to @end [phi:@1->@end]
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
// SCREEN[0] = 'a'
|
||||
// [4] *((const nomodify byte*) SCREEN) ← (byte) 'a' -- _deref_pbuc1=vbuc2
|
||||
lda #'a'
|
||||
sta SCREEN
|
||||
// main::@return
|
||||
// }
|
||||
// [5] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
7
src/test/ref/preprocessor-11.sym
Normal file
7
src/test/ref/preprocessor-11.sym
Normal file
@ -0,0 +1,7 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) SCREEN = (byte*) 1024
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
Loading…
Reference in New Issue
Block a user