@@ -408,8 +408,14 @@ module.exports = grammar({
408
408
optional ( 'async' ) ,
409
409
'def' ,
410
410
field ( 'name' , $ . identifier ) ,
411
+ $ . function_definition_scope ,
412
+ ) ,
413
+
414
+ function_definition_scope : $ => seq (
411
415
field ( 'type_parameters' , optional ( $ . type_parameter ) ) ,
412
- field ( 'parameters' , $ . parameters ) ,
416
+ '(' ,
417
+ field ( 'parameters' , optional ( $ . parameters ) ) ,
418
+ ')' ,
413
419
optional (
414
420
seq (
415
421
'->' ,
@@ -493,6 +499,9 @@ module.exports = grammar({
493
499
class_definition : $ => seq (
494
500
'class' ,
495
501
field ( 'name' , $ . identifier ) ,
502
+ $ . class_definition_scope ,
503
+ ) ,
504
+ class_definition_scope : $ => seq (
496
505
field ( 'type_parameters' , optional ( $ . type_parameter ) ) ,
497
506
field ( 'superclasses' , optional ( $ . argument_list ) ) ,
498
507
':' ,
@@ -568,7 +577,13 @@ module.exports = grammar({
568
577
) ,
569
578
) ) ,
570
579
571
- dotted_name : $ => prec ( 1 , sep1 ( $ . identifier , '.' ) ) ,
580
+ dotted_name : $ => prec ( 1 , seq (
581
+ $ . identifier ,
582
+ repeat ( seq (
583
+ '.' ,
584
+ alias ( $ . identifier , $ . member_identifier ) ,
585
+ ) ) ,
586
+ ) ) ,
572
587
573
588
// Match cases
574
589
@@ -896,7 +911,7 @@ module.exports = grammar({
896
911
attribute : $ => prec ( PREC . call , seq (
897
912
field ( 'object' , $ . primary_expression ) ,
898
913
'.' ,
899
- field ( 'attribute' , $ . identifier ) ,
914
+ field ( 'attribute' , alias ( $ . identifier , $ . member_identifier ) ) ,
900
915
) ) ,
901
916
902
917
subscript : $ => prec ( PREC . call , seq (
@@ -942,7 +957,7 @@ module.exports = grammar({
942
957
) ) ,
943
958
union_type : $ => prec . left ( seq ( $ . type , '|' , $ . type ) ) ,
944
959
constrained_type : $ => prec . right ( seq ( $ . type , ':' , $ . type ) ) ,
945
- member_type : $ => seq ( $ . type , '.' , $ . identifier ) ,
960
+ member_type : $ => seq ( $ . type , '.' , alias ( $ . identifier , $ . member_identifier ) ) ,
946
961
947
962
keyword_argument : $ => seq (
948
963
field ( 'name' , choice ( $ . identifier , $ . keyword_identifier ) ) ,
0 commit comments