Skip to content

Commit 17a0da9

Browse files
committed
Update Antlr grammar files for script
1 parent 3c64922 commit 17a0da9

File tree

4 files changed

+154
-132
lines changed

4 files changed

+154
-132
lines changed

src/main/java/com/relogiclabs/jschema/internal/grammar/JsonLexer.g4

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,19 @@ RBRACE : '}';
1010
COMMA : ',';
1111
COLON : ':';
1212

13-
STRING : '"' (ESCAPE | SAFECODEPOINT)* '"';
14-
fragment ESCAPE : '\\' ( ["\\/bfnrt] | UNICODE);
13+
// String
14+
STRING : '"' ( ESCAPE | SAFE_CODEPOINT )* '"';
15+
fragment ESCAPE : '\\' ( ["\\/bfnrt] | UNICODE );
1516
fragment UNICODE : 'u' HEXDIGIT HEXDIGIT HEXDIGIT HEXDIGIT;
1617
fragment HEXDIGIT : [0-9a-fA-F];
17-
fragment SAFECODEPOINT : ~["\\\u0000-\u001F];
18+
fragment SAFE_CODEPOINT : ~["\\\u0000-\u001F];
1819

19-
INTEGER : '-' ? INTDIGIT;
20-
FLOAT : INTEGER ('.' DIGIT+);
21-
DOUBLE : INTEGER ('.' DIGIT+)? EXPONENT;
20+
// Numbers
21+
INTEGER : '-'? INTDIGIT;
22+
FLOAT : INTEGER FRACTION;
23+
DOUBLE : INTEGER FRACTION? EXPONENT;
2224

25+
fragment FRACTION : '.' DIGIT+;
2326
fragment INTDIGIT : '0' | [1-9] DIGIT*;
2427
fragment EXPONENT : [eE] [+\-]? DIGIT+;
2528
fragment DIGIT : [0-9];

src/main/java/com/relogiclabs/jschema/internal/grammar/JsonParser.g4

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ arrayNode
2525
;
2626

2727
primitiveNode
28-
: TRUE # PrimitiveTrue
29-
| FALSE # PrimitiveFalse
30-
| STRING # PrimitiveString
31-
| INTEGER # PrimitiveInteger
32-
| FLOAT # PrimitiveFloat
33-
| DOUBLE # PrimitiveDouble
34-
| NULL # PrimitiveNull
28+
: TRUE # TrueNode
29+
| FALSE # FalseNode
30+
| STRING # StringNode
31+
| INTEGER # IntegerNode
32+
| FLOAT # FloatNode
33+
| DOUBLE # DoubleNode
34+
| NULL # NullNode
3535
;

src/main/java/com/relogiclabs/jschema/internal/grammar/SchemaLexer.g4

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,64 @@
11
lexer 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

3737
fragment IDENTIFIER : ALPHA ALPHANUMERIC*;
3838
fragment ALPHA : [A-Za-z_];
3939
fragment ALPHANUMERIC : [A-Za-z0-9_];
4040

4141
// String
42-
STRING : '"' ( ESCAPE | SAFE_CODEPOINT )* '"';
42+
S_STRING : '"' ( ESCAPE | SAFE_CODEPOINT )* '"';
4343
fragment ESCAPE : '\\' ( ["\\/bfnrt] | UNICODE );
4444
fragment UNICODE : 'u' HEXDIGIT HEXDIGIT HEXDIGIT HEXDIGIT;
4545
fragment HEXDIGIT : [0-9a-fA-F];
4646
fragment 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

5353
fragment FRACTION : '.' DIGIT+;
5454
fragment INTDIGIT : '0' | [1-9] DIGIT*;
5555
fragment EXPONENT : [eE] [+\-]? DIGIT+;
5656
fragment 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---------------
6464
mode DIRECTIVE_SCRIPT1;
@@ -98,11 +98,12 @@ G_IMPORT : 'import';
9898
G_CLASS : 'class';
9999
G_SUPER : 'super';
100100
G_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;
106107
G_IDENTIFIER : IDENTIFIER;
107108

108109
// Separator Symbols
@@ -127,22 +128,29 @@ G_PLUS : '+';
127128
G_MINUS : '-';
128129
G_MUL : '*';
129130
G_DIV : '/';
131+
G_MOD : '%';
130132
G_GT : '>';
131133
G_LT : '<';
132134
G_LE : '<=';
133135
G_GE : '>=';
134136
G_EQ : '==';
135137
G_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

Comments
 (0)