@@ -63,7 +63,6 @@ module.exports = grammar({
6363 $ . expression ,
6464 $ . primary_expression ,
6565 $ . pattern ,
66- $ . parameter ,
6766 ] ,
6867
6968 externals : $ => [
@@ -422,12 +421,36 @@ module.exports = grammar({
422421 ) ,
423422
424423 parameters : $ => seq (
425- '(' ,
426- optional ( $ . _parameters ) ,
427- ')' ,
424+ commaSep1 ( choice (
425+ $ . parameter ,
426+ alias ( $ . _lambda_parameter , $ . parameter ) ,
427+ $ . keyword_separator ,
428+ $ . positional_separator ,
429+ ) ) ,
430+ optional ( ',' ) ,
428431 ) ,
429432
430- lambda_parameters : $ => $ . _parameters ,
433+ parameter : $ => prec ( PREC . typed_parameter , seq (
434+ optional ( choice ( '*' , '**' ) ) ,
435+ field ( 'name' , $ . identifier ) ,
436+ optional ( seq (
437+ ":" ,
438+ field ( 'type' , $ . expression ) ,
439+ ) ) ,
440+ optional ( seq (
441+ "=" ,
442+ field ( 'value' , $ . expression ) ,
443+ ) ) ,
444+ ) ) ,
445+
446+ _lambda_parameter : $ => seq (
447+ optional ( choice ( '*' , '**' ) ) ,
448+ field ( 'name' , $ . identifier ) ,
449+ optional ( seq (
450+ "=" ,
451+ field ( 'value' , $ . expression ) ,
452+ ) ) ,
453+ ) ,
431454
432455 list_splat : $ => seq (
433456 '*' ,
@@ -633,28 +656,11 @@ module.exports = grammar({
633656
634657 // Patterns
635658
636- _parameters : $ => seq (
637- commaSep1 ( $ . parameter ) ,
638- optional ( ',' ) ,
639- ) ,
640-
641659 _patterns : $ => seq (
642660 commaSep1 ( $ . pattern ) ,
643661 optional ( ',' ) ,
644662 ) ,
645663
646- parameter : $ => choice (
647- $ . identifier ,
648- $ . typed_parameter ,
649- $ . default_parameter ,
650- $ . typed_default_parameter ,
651- $ . list_splat_pattern ,
652- $ . tuple_pattern ,
653- $ . keyword_separator ,
654- $ . positional_separator ,
655- $ . dictionary_splat_pattern ,
656- ) ,
657-
658664 pattern : $ => choice (
659665 $ . identifier ,
660666 $ . keyword_identifier ,
@@ -677,20 +683,6 @@ module.exports = grammar({
677683 ']' ,
678684 ) ,
679685
680- default_parameter : $ => seq (
681- field ( 'name' , choice ( $ . identifier , $ . tuple_pattern ) ) ,
682- '=' ,
683- field ( 'value' , $ . expression ) ,
684- ) ,
685-
686- typed_default_parameter : $ => prec ( PREC . typed_parameter , seq (
687- field ( 'name' , $ . identifier ) ,
688- ':' ,
689- field ( 'type' , $ . type ) ,
690- '=' ,
691- field ( 'value' , $ . expression ) ,
692- ) ) ,
693-
694686 list_splat_pattern : $ => seq (
695687 '*' ,
696688 choice ( $ . identifier , $ . keyword_identifier , $ . subscript , $ . attribute ) ,
@@ -832,14 +824,14 @@ module.exports = grammar({
832824
833825 lambda : $ => prec ( PREC . lambda , seq (
834826 'lambda' ,
835- field ( 'parameters' , optional ( $ . lambda_parameters ) ) ,
827+ field ( 'parameters' , optional ( $ . parameters ) ) ,
836828 ':' ,
837829 field ( 'body' , $ . expression ) ,
838830 ) ) ,
839831
840832 lambda_within_for_in_clause : $ => seq (
841833 'lambda' ,
842- field ( 'parameters' , optional ( $ . lambda_parameters ) ) ,
834+ field ( 'parameters' , optional ( $ . parameters ) ) ,
843835 ':' ,
844836 field ( 'body' , $ . _expression_within_for_in_clause ) ,
845837 ) ,
@@ -932,16 +924,6 @@ module.exports = grammar({
932924 ) ) ,
933925 ) ) ,
934926
935- typed_parameter : $ => prec ( PREC . typed_parameter , seq (
936- choice (
937- $ . identifier ,
938- $ . list_splat_pattern ,
939- $ . dictionary_splat_pattern ,
940- ) ,
941- ':' ,
942- field ( 'type' , $ . type ) ,
943- ) ) ,
944-
945927 type : $ => choice (
946928 prec ( 1 , $ . expression ) ,
947929 $ . splat_type ,
0 commit comments