@@ -161,7 +161,7 @@ const FUNC_GRAMMAR = {
161161
162162 return_statement : $ => seq ( "return" , $ . _expression , ";" ) ,
163163 block_statement : $ => seq ( "{" , repeat ( $ . _statement ) , "}" ) ,
164- expression_statement : $ => prec . right ( seq ( $ . _expression , optional ( ";" ) ) ) ,
164+ expression_statement : $ => prec . right ( seq ( $ . _expression , ";" ) ) ,
165165 empty_statement : _ => ";" ,
166166 repeat_statement : $ =>
167167 seq ( "repeat" , field ( "count" , $ . _expression ) , field ( "body" , $ . block_statement ) ) ,
@@ -201,7 +201,7 @@ const FUNC_GRAMMAR = {
201201 _expression : $ => $ . _expr10 ,
202202
203203 _expr10 : $ =>
204- prec (
204+ prec . right (
205205 10 ,
206206 seq (
207207 $ . _expr13 ,
@@ -232,7 +232,22 @@ const FUNC_GRAMMAR = {
232232 ) ,
233233 ) ,
234234
235- _expr13 : $ => prec ( 13 , seq ( $ . _expr15 , optional ( seq ( "?" , $ . _expression , ":" , $ . _expr13 ) ) ) ) ,
235+ ternary_condition : $ => $ . _expr15 ,
236+ ternary_expression : $ =>
237+ prec . right (
238+ 13 ,
239+ seq (
240+ field ( "condition" , $ . ternary_condition ) ,
241+ "?" ,
242+ field ( "consequent" , $ . _expression ) ,
243+ ":" ,
244+ field ( "alternative" , $ . _expression ) ,
245+ ) ,
246+ ) ,
247+
248+ _expr13 : $ => prec ( 13 , choice ( $ . _expr15 , $ . ternary_expression ) ) ,
249+
250+ // _expr13: $ => prec(13, seq($._expr15, optional(seq("?", $._expression, ":", $._expr13)))),
236251
237252 _expr15 : $ =>
238253 prec (
0 commit comments