@@ -6,14 +6,11 @@ options {
66}
77
88program
9- :
10- LineBreak*
11- letStmt*
9+ : letStmt*
1210 (ruleStmt | generalStatement)* EOF ;
1311
14-
1512ruleStmt
16- : Rule When predicate Then LineBreak
13+ : Rule When predicate Then eos
1714 ( messageStmt
1815 | errorStmt
1916 | outputStmt
@@ -25,11 +22,11 @@ ruleStmt
2522 ;
2623
2724endRuleStmt
28- : ' end' ' rule' LineBreak
25+ : ' end' ' rule' eos
2926 ;
3027
3128exitStmt
32- : ' exit' LineBreak
29+ : ' exit' eos
3330 ;
3431
3532generalStatement
@@ -42,37 +39,42 @@ generalStatement
4239 ;
4340
4441letStmt
45- : Let Identifier Assign expression LineBreak
42+ : Let Identifier Assign expression eos
4643 ;
4744
4845setStmt
49- : (Partial)? Set Identifier Assign expression LineBreak
46+ : (Partial)? Set Identifier Assign expression eos
5047 ;
5148
5249messageStmt
53- : Message messageText LineBreak
50+ : Message messageText eos
5451 ;
5552
5653errorStmt
57- : Error messageText LineBreak
54+ : Error messageText eos
5855 ;
5956
6057messageText
6158 : (String | objectIdentifier)
6259 ;
6360
6461outputStmt
65- : Output objectIdentifier LineBreak
62+ : Output objectIdentifier eos
6663 ;
6764
6865functionStmt
69- : function LineBreak
66+ : function eos
7067 ;
7168
7269expression
7370 : boolLeteral | noneLiteral | function | jsonObj | arithmeticExpression | stringLiteral
7471 ;
7572
73+ eos
74+ : EOF
75+ | {this.lineTerminatorAhead()} ?
76+ ;
77+
7678// Lexer
7779
7880Rule
@@ -101,15 +103,12 @@ Partial
101103Assign
102104 : ' =' ;
103105
104- LineBreak
105- : [\r\n]+[ \t\r\n]*
106- ;
106+ WhiteSpaces :
107+ [\t\u000B\u000C\u0020\u00A0]+ -> channel(HIDDEN );
107108
108- Skip_
109- : ( SPACES | COMMENT ) -> skip ;
109+ LineTerminator :
110+ [\r\n\u2028\u2029] -> channel( HIDDEN ) ;
110111
111- fragment SPACES
112- : [ \t]+ ;
112+ MultiLineComment :
113+ ' /* ' .*? ' */ ' -> channel( HIDDEN ) ;
113114
114- fragment COMMENT
115- : ' /*' .*? ' */' ([\r\n]*) ;
0 commit comments