@@ -6,48 +6,48 @@ options { tokenVocab = SchemaLexer; }
66schema
77 : titleNode? versionNode? ( importNode | pragmaNode )*
88 ( defineNode | scriptNode )*
9- schemaMain
9+ schemaCoreNode
1010 ( defineNode | scriptNode )* EOF # CompleteSchema
1111 | validatorNode EOF # ShortSchema
1212 ;
1313
14- schemaMain
15- : SCHEMA COLON validatorNode
14+ schemaCoreNode
15+ : S_SCHEMA S_COLON validatorNode
1616 ;
1717
1818titleNode
19- : TITLE COLON STRING
19+ : S_TITLE S_COLON S_STRING
2020 ;
2121
2222versionNode
23- : VERSION COLON STRING
23+ : S_VERSION S_COLON S_STRING
2424 ;
2525
2626importNode
27- : IMPORT COLON FULL_IDENTIFIER ( COMMA FULL_IDENTIFIER )?
27+ : S_IMPORT S_COLON S_GENERAL_ID ( S_COMMA S_GENERAL_ID )?
2828 ;
2929
3030pragmaNode
31- : PRAGMA FULL_IDENTIFIER COLON primitiveNode
31+ : S_PRAGMA S_GENERAL_ID S_COLON primitiveNode
3232 ;
3333
3434defineNode
35- : DEFINE aliasNode COLON validatorMain
35+ : S_DEFINE aliasNode S_COLON validatorMainNode
3636 ;
3737
38- aliasNode
39- : ALIAS
38+ validatorNode
39+ : validatorMainNode
40+ | aliasNode
4041 ;
4142
42- validatorMain
43- : valueNode functionNode* datatypeNode* receiverNode* OPTIONAL ?
44- | functionNode+ datatypeNode* receiverNode* OPTIONAL ?
45- | datatypeNode+ receiverNode* OPTIONAL ?
43+ validatorMainNode
44+ : valueNode functionNode* datatypeNode* receiverNode* S_OPTIONAL ?
45+ | functionNode+ datatypeNode* receiverNode* S_OPTIONAL ?
46+ | datatypeNode+ receiverNode* S_OPTIONAL ?
4647 ;
4748
48- validatorNode
49- : validatorMain
50- | aliasNode
49+ aliasNode
50+ : S_ALIAS
5151 ;
5252
5353valueNode
@@ -57,27 +57,27 @@ valueNode
5757 ;
5858
5959receiverNode
60- : RECEIVER
60+ : S_RECEIVER
6161 ;
6262
6363objectNode
64- : LBRACE ( propertyNode ( COMMA propertyNode )* )? RBRACE
64+ : S_LBRACE ( propertyNode ( S_COMMA propertyNode )* )? S_RBRACE
6565 ;
6666
6767propertyNode
68- : STRING COLON validatorNode
68+ : S_STRING S_COLON validatorNode
6969 ;
7070
7171arrayNode
72- : LBRACKET ( validatorNode ( COMMA validatorNode )* )? RBRACKET
72+ : S_LBRACKET ( validatorNode ( S_COMMA validatorNode )* )? S_RBRACKET
7373 ;
7474
7575datatypeNode
76- : DATATYPE STAR ? ( LPAREN aliasNode RPAREN )?
76+ : S_DATATYPE S_STAR ? ( S_LPAREN aliasNode S_RPAREN )?
7777 ;
7878
7979functionNode
80- : FUNCTION STAR ? ( LPAREN ( argumentNode ( COMMA argumentNode )* )? RPAREN )?
80+ : S_FUNCTION S_STAR ? ( S_LPAREN ( argumentNode ( S_COMMA argumentNode )* )? S_RPAREN )?
8181 ;
8282
8383argumentNode
@@ -86,20 +86,20 @@ argumentNode
8686 ;
8787
8888primitiveNode
89- : TRUE # PrimitiveTrue
90- | FALSE # PrimitiveFalse
91- | STRING # PrimitiveString
92- | INTEGER # PrimitiveInteger
93- | FLOAT # PrimitiveFloat
94- | DOUBLE # PrimitiveDouble
95- | NULL # PrimitiveNull
96- | UNDEFINED # PrimitiveUndefined
89+ : S_TRUE # TrueNode
90+ | S_FALSE # FalseNode
91+ | S_STRING # StringNode
92+ | S_INTEGER # IntegerNode
93+ | S_FLOAT # FloatNode
94+ | S_DOUBLE # DoubleNode
95+ | S_NULL # NullNode
96+ | S_UNDEFINED # UndefinedNode
9797 ;
9898
9999
100100// ---------------Script Rules---------------
101101scriptNode
102- : SCRIPT G_COLON G_LBRACE globalStatement+ G_RBRACE
102+ : S_SCRIPT G_COLON G_LBRACE globalStatement+ G_RBRACE
103103 ;
104104
105105globalStatement
@@ -127,10 +127,10 @@ functionDeclaration
127127 ;
128128
129129varStatement
130- : G_VAR varInitialization ( G_COMMA varInitialization )* G_SEMI
130+ : G_VAR varDeclaration ( G_COMMA varDeclaration )* G_SEMI
131131 ;
132132
133- varInitialization
133+ varDeclaration
134134 : G_IDENTIFIER ( G_ASSIGN expression )?
135135 ;
136136
@@ -173,37 +173,48 @@ blockStatement
173173 ;
174174
175175expression
176- : refExpression # AllRefExpression
176+ : expression G_LBRACKET expression G_RBRACKET # MemberBracketExpression
177+ | expression G_DOT G_IDENTIFIER # MemberDotExpression
178+ | G_IDENTIFIER G_LPAREN ( expression ( G_COMMA expression )* )? G_RPAREN # InvokeFunctionExpression
179+ | expression G_DOT G_IDENTIFIER
180+ G_LPAREN ( expression ( G_COMMA expression )* )? G_RPAREN # InvokeMethodExpression
181+ | G_PLUS expression # UnaryPlusExpression
177182 | G_MINUS expression # UnaryMinusExpression
178- | G_NOT expression # LogicalNotExpression
179- | refExpression G_INC # PostIncrementExpression
180- | refExpression G_DEC # PostDecrementExpression
181- | G_INC refExpression # PreIncrementExpression
182- | G_DEC refExpression # PreDecrementExpression
183- | expression ( G_MUL | G_DIV ) expression # MultiplicativeExpression
183+ | G_LNOT expression # LogicalNotExpression
184+ | expression G_LBRACKET expression G_RBRACKET ( G_INC | G_DEC ) # PostIncDecExpression
185+ | expression G_DOT G_IDENTIFIER ( G_INC | G_DEC ) # PostIncDecExpression
186+ | G_IDENTIFIER ( G_INC | G_DEC ) # PostIncDecExpression
187+ | ( G_INC | G_DEC ) expression G_LBRACKET expression G_RBRACKET # PreIncDecExpression
188+ | ( G_INC | G_DEC ) expression G_DOT G_IDENTIFIER # PreIncDecExpression
189+ | ( G_INC | G_DEC ) G_IDENTIFIER # PreIncDecExpression
190+ | expression ( G_MUL | G_DIV | G_MOD ) expression # MultiplicativeExpression
184191 | expression ( G_PLUS | G_MINUS ) expression # AdditiveExpression
185192 | expression G_RANGE expression? # RangeBothExpression
186193 | G_RANGE expression # RangeEndExpression
187194 | expression ( G_GE | G_LE | G_GT | G_LT ) expression # RelationalExpression
188195 | expression ( G_EQ | G_NE ) expression # EqualityExpression
189- | expression G_AND expression # LogicalAndExpression
190- | expression G_OR expression # LogicalOrExpression
191- | refExpression G_ASSIGN expression # AssignmentExpression
196+ | expression G_LAND expression # LogicalAndExpression
197+ | expression G_LOR expression # LogicalOrExpression
198+ | expression G_LBRACKET expression G_RBRACKET G_ASSIGN expression # AssignmentBracketExpression
199+ | expression G_DOT G_IDENTIFIER G_ASSIGN expression # AssignmentDotExpression
200+ | G_IDENTIFIER G_ASSIGN expression # AssignmentIdExpression
201+ | expression G_LBRACKET expression G_RBRACKET
202+ ( G_ADD_ASSIGN | G_SUB_ASSIGN | G_MUL_ASSIGN
203+ | G_DIV_ASSIGN | G_MOD_ASSIGN ) expression # AssignmentAugExpression
204+ | expression G_DOT G_IDENTIFIER
205+ ( G_ADD_ASSIGN | G_SUB_ASSIGN | G_MUL_ASSIGN
206+ | G_DIV_ASSIGN | G_MOD_ASSIGN ) expression # AssignmentAugExpression
207+ | G_IDENTIFIER ( G_ADD_ASSIGN | G_SUB_ASSIGN | G_MUL_ASSIGN
208+ | G_DIV_ASSIGN | G_MOD_ASSIGN ) expression # AssignmentAugExpression
209+ | G_TARGET # TargetExpression
210+ | G_CALLER # CallerExpression
211+ | G_IDENTIFIER # IdentifierExpression
192212 | literal # LiteralExpression
193213 | G_LPAREN expression G_RPAREN # ParenthesizedExpression
194214 | G_TRYOF G_LPAREN expression G_RPAREN # TryofExpression
195215 | G_THROW G_LPAREN expression ( G_COMMA expression )? G_RPAREN # ThrowExpression
196216 ;
197217
198- refExpression
199- : refExpression G_DOT G_IDENTIFIER # DotExpression
200- | refExpression G_LBRACKET expression G_RBRACKET # IndexExpression
201- | G_IDENTIFIER G_LPAREN ( expression ( G_COMMA expression )* )? G_RPAREN # InvokeExpression
202- | G_TARGET # TargetExpression
203- | G_CALLER # CallerExpression
204- | G_IDENTIFIER # IdentifierExpression
205- ;
206-
207218literal
208219 : G_TRUE # TrueLiteral
209220 | G_FALSE # FalseLiteral
0 commit comments