@@ -206,6 +206,7 @@ module.exports = grammar({
206206
207207 expr_ending_with_block : $ => $ . _expr_ending_with_block ,
208208 _expr_ending_with_block : $ => choice (
209+ $ . labelled ,
209210 $ . block ,
210211 $ . if_expr ,
211212 $ . while_expr ,
@@ -231,7 +232,6 @@ module.exports = grammar({
231232
232233 while_expr : $ => $ . _while_expr ,
233234 _while_expr : $ => seq (
234- field ( 'label' , optional ( $ . _stmt_label ) ) ,
235235 'while' ,
236236 field ( 'cond' , $ . _expr ) ,
237237 field ( 'body' , $ . block ) ,
@@ -240,7 +240,6 @@ module.exports = grammar({
240240
241241 for_expr : $ => $ . _for_expr ,
242242 _for_expr : $ => seq (
243- field ( 'label' , optional ( $ . _stmt_label ) ) ,
244243 'for' ,
245244 field ( 'pat' , $ . _pattern ) ,
246245 'in' ,
@@ -255,10 +254,15 @@ module.exports = grammar({
255254 $ . block ,
256255 ) ,
257256
258- labelled_block : $ => $ . _labelled_block ,
259- _labelled_block : $ => seq (
260- optional ( field ( 'label' , $ . _stmt_label ) ) ,
261- field ( 'block' , $ . block ) ,
257+ labelled : $ => $ . _labelled ,
258+ _labelled : $ => seq (
259+ field ( 'label' , $ . label ) ,
260+ ':' ,
261+ field ( 'block' , choice (
262+ $ . block ,
263+ $ . while_expr ,
264+ $ . for_expr ,
265+ ) ) ,
262266 ) ,
263267
264268 block : $ => $ . _block ,
@@ -272,9 +276,6 @@ module.exports = grammar({
272276 label : $ => $ . _label ,
273277 _label : _ => seq ( "'" , token . immediate ( IdentRegex ) ) ,
274278
275- stmt_label : $ => $ . _stmt_label ,
276- _stmt_label : $ => seq ( $ . label , ':' ) ,
277-
278279 underscore : $ => $ . _underscore ,
279280 _underscore : _ => '_' ,
280281
0 commit comments