11lexer grammar SchemaLexer;
22
33// Sections
4- TITLE : ' %title' ;
5- VERSION : ' %version' ;
6- IMPORT : ' %import' ;
7- PRAGMA : ' %pragma' ;
8- DEFINE : ' %define' ;
9- SCHEMA : ' %schema' ;
10- SCRIPT : ' %script' -> pushMode(DIRECTIVE_SCRIPT1 );
4+ S_TITLE : ' %title' ;
5+ S_VERSION : ' %version' ;
6+ S_IMPORT : ' %import' ;
7+ S_PRAGMA : ' %pragma' ;
8+ S_DEFINE : ' %define' ;
9+ S_SCHEMA : ' %schema' ;
10+ S_SCRIPT : ' %script' -> pushMode(DIRECTIVE_SCRIPT1 );
1111
1212// Keywords
13- TRUE : ' true' ;
14- FALSE : ' false' ;
15- NULL : ' null' ;
13+ S_TRUE : ' true' ;
14+ S_FALSE : ' false' ;
15+ S_NULL : ' null' ;
1616
1717// Symbols
18- COLON : ' :' ;
19- COMMA : ' ,' ;
20- STAR : ' *' ;
21- LBRACE : ' {' ;
22- RBRACE : ' }' ;
23- LBRACKET : ' [' ;
24- RBRACKET : ' ]' ;
25- LPAREN : ' (' ;
26- RPAREN : ' )' ;
27- OPTIONAL : ' ?' ;
28- UNDEFINED : ' !' ;
18+ S_COLON : ' :' ;
19+ S_COMMA : ' ,' ;
20+ S_STAR : ' *' ;
21+ S_LBRACE : ' {' ;
22+ S_RBRACE : ' }' ;
23+ S_LBRACKET : ' [' ;
24+ S_RBRACKET : ' ]' ;
25+ S_LPAREN : ' (' ;
26+ S_RPAREN : ' )' ;
27+ S_OPTIONAL : ' ?' ;
28+ S_UNDEFINED : ' !' ;
2929
3030// Identifiers
31- FULL_IDENTIFIER : IDENTIFIER ( ' .' IDENTIFIER )*;
32- ALIAS : ' $' IDENTIFIER ;
33- DATATYPE : ' #' ALPHA +;
34- FUNCTION : ' @' IDENTIFIER ;
35- RECEIVER : ' &' IDENTIFIER ;
31+ S_GENERAL_ID : IDENTIFIER ( ' .' IDENTIFIER )*;
32+ S_ALIAS : ' $' IDENTIFIER ;
33+ S_DATATYPE : ' #' ALPHA +;
34+ S_FUNCTION : ' @' IDENTIFIER ;
35+ S_RECEIVER : ' &' IDENTIFIER ;
3636
3737fragment IDENTIFIER : ALPHA ALPHANUMERIC *;
3838fragment ALPHA : [A -Za-z_];
3939fragment ALPHANUMERIC : [A -Za-z0-9_];
4040
4141// String
42- STRING : ' "' ( ESCAPE | SAFE_CODEPOINT )* ' "' ;
42+ S_STRING : ' "' ( ESCAPE | SAFE_CODEPOINT )* ' "' ;
4343fragment ESCAPE : ' \\ ' ( [" \\ /bfnrt] | UNICODE );
4444fragment UNICODE : 'u' HEXDIGIT HEXDIGIT HEXDIGIT HEXDIGIT;
4545fragment HEXDIGIT : [0-9a-fA-F];
4646fragment SAFE_CODEPOINT : ~[" \\\u0000-\u001F];
4747
4848// Numbers
49- INTEGER : ' -' ? INTDIGIT ;
50- FLOAT : INTEGER FRACTION ;
51- DOUBLE : INTEGER FRACTION ? EXPONENT ;
49+ S_INTEGER : ' -' ? INTDIGIT ;
50+ S_FLOAT : S_INTEGER FRACTION ;
51+ S_DOUBLE : S_INTEGER FRACTION ? EXPONENT ;
5252
5353fragment FRACTION : ' .' DIGIT +;
5454fragment INTDIGIT : ' 0' | [1-9] DIGIT *;
5555fragment EXPONENT : [eE] [+\-]? DIGIT +;
5656fragment DIGIT : [0-9];
5757
5858// Hidden Tokens
59- WHITE_SPACE : [\n\r\t ]+ -> channel(HIDDEN );
60- BLOCK_COMMENT : ' /*' .*? ' */' -> channel(HIDDEN );
61- LINE_COMMENT : ' //' ~(' \r ' | ' \n ' )* -> channel(HIDDEN );
59+ S_WHITE_SPACE : [\n\r\t ]+ -> channel(HIDDEN );
60+ S_BLOCK_COMMENT : ' /*' .*? ' */' -> channel(HIDDEN );
61+ S_LINE_COMMENT : ' //' ~(' \r ' | ' \n ' )* -> channel(HIDDEN );
6262
6363// ---------------DIRECTIVE_SCRIPT1---------------
6464mode DIRECTIVE_SCRIPT1 ;
@@ -98,11 +98,12 @@ G_IMPORT : 'import';
9898G_CLASS : ' class' ;
9999G_SUPER : ' super' ;
100100G_DEFAULT : ' default' ;
101+ G_NOT : ' not' ;
101102
102103// Literals
103- G_INTEGER : INTEGER ;
104- G_DOUBLE : INTEGER FRACTION ? EXPONENT ?;
105- G_STRING : STRING ;
104+ G_INTEGER : S_INTEGER ;
105+ G_DOUBLE : S_INTEGER FRACTION ? EXPONENT ?;
106+ G_STRING : S_STRING ;
106107G_IDENTIFIER : IDENTIFIER ;
107108
108109// Separator Symbols
@@ -127,22 +128,29 @@ G_PLUS : '+';
127128G_MINUS : ' -' ;
128129G_MUL : ' *' ;
129130G_DIV : ' /' ;
131+ G_MOD : ' %' ;
130132G_GT : ' >' ;
131133G_LT : ' <' ;
132134G_LE : ' <=' ;
133135G_GE : ' >=' ;
134136G_EQ : ' ==' ;
135137G_NE : ' !=' ;
136- G_NOT : ' !' ;
137- G_AND : ' &&' ;
138- G_OR : ' ||' ;
138+ G_LNOT : ' !' ;
139+ G_LAND : ' &&' ;
140+ G_LOR : ' ||' ;
141+
142+ G_ADD_ASSIGN : ' +=' ;
143+ G_SUB_ASSIGN : ' -=' ;
144+ G_MUL_ASSIGN : ' *=' ;
145+ G_DIV_ASSIGN : ' /=' ;
146+ G_MOD_ASSIGN : ' %=' ;
139147
140148// Next Sections
141- DEFINE1 : ' %define' -> type(DEFINE ), popMode;
142- SCHEMA1 : ' %schema' -> type(SCHEMA ), popMode;
143- SCRIPT1 : ' %script' -> type(SCRIPT );
149+ G_DEFINE : ' %define' -> type(S_DEFINE ), popMode;
150+ G_SCHEMA : ' %schema' -> type(S_SCHEMA ), popMode;
151+ G_SCRIPT : ' %script' -> type(S_SCRIPT );
144152
145153// Hidden Tokens
146- WHITE_SPACE1 : WHITE_SPACE -> channel(HIDDEN );
147- BLOCK_COMMENT1 : BLOCK_COMMENT -> channel(HIDDEN );
148- LINE_COMMENT1 : LINE_COMMENT -> channel(HIDDEN );
154+ G_WHITE_SPACE : S_WHITE_SPACE -> channel(HIDDEN );
155+ G_BLOCK_COMMENT : S_BLOCK_COMMENT -> channel(HIDDEN );
156+ G_LINE_COMMENT : S_LINE_COMMENT -> channel(HIDDEN );
0 commit comments