@@ -166,16 +166,22 @@ primary_expression
166
166
| literal #LiteralScalarExpression
167
167
| ' [' scalar_expression_list? ' ]' #ArrayCreateScalarExpression
168
168
| ' {' object_property_list? ' }' #ObjectCreateScalarExpression
169
- | (K_UDF ' .' )? identifier ' (' scalar_expression_list? ' )' #FunctionCallScalarExpression
170
169
| ' (' scalar_expression ' )' #ParenthesizedScalarExperession
171
170
| ' (' sql_query ' )' #SubqueryScalarExpression
172
171
| primary_expression ' .' identifier #PropertyRefScalarExpressionRecursive
173
172
| primary_expression ' [' scalar_expression ' ]' #MemberIndexerScalarExpression
174
173
| K_EXISTS ' (' sql_query ' )' #ExistsScalarExpression
175
174
| K_ARRAY ' (' sql_query ' )' #ArrayScalarExpression
176
175
| K_ALL ' (' sql_query ' )' #AllScalarExpression
176
+ | function_call_scalar_expression #FunctionCallScalarExpression
177
177
;
178
178
179
+ function_call_scalar_expression
180
+ : (K_UDF ' .' )? identifier ' (' scalar_expression_list? ' )'
181
+ | K_LEFT ' (' scalar_expression_list? ' )'
182
+ | K_RIGHT ' (' scalar_expression_list? ' )'
183
+ ;
184
+
179
185
scalar_expression_list : scalar_expression (' ,' scalar_expression)*;
180
186
181
187
object_property_list : object_property (' ,' object_property)* ;
@@ -207,13 +213,15 @@ K_FROM : F R O M;
207
213
K_GROUP : G R O U P ;
208
214
K_IN : I N ;
209
215
K_JOIN : J O I N ;
216
+ K_LEFT : L E F T ;
210
217
K_LIKE : L I K E ;
211
218
K_LIMIT : L I M I T ;
212
219
K_NOT : N O T ;
213
220
K_NULL : ' null' ;
214
221
K_OFFSET : O F F S E T ;
215
222
K_OR : O R ;
216
223
K_ORDER : O R D E R ;
224
+ K_RIGHT : R I G H T ;
217
225
K_SELECT : S E L E C T ;
218
226
K_TOP : T O P ;
219
227
K_TRUE : ' true' ;
@@ -270,8 +278,7 @@ fragment SAFECODEPOINTWITHDOUBLEQUOTATION
270
278
;
271
279
272
280
LEX_IDENTIFIER
273
- :
274
- | [a-zA-Z_ ]([a-zA-Z_ ]|DIGIT )*
281
+ : [a-zA-Z_ ]([a-zA-Z_ ]|DIGIT )*
275
282
;
276
283
277
284
PARAMETER
0 commit comments