(continues on next page) (continued from previous page) Chapter 10. Full Grammar specification 114 The Python Language Reference, Release 3.9.5 double_starred_kvpairs : ',' .double_starred_kvpair +[','] double_starred_kvpair : | '**' bitwise_or | kvpair kvpair:expression ':' expression for_if_clauses : | for_if_clause + for_if_clause : | ASYNC 'for' star_targets 'in' ~ disjunction ( 'if' disjunction )* | 'for' star_targets 'in' ~ disjunction ( 'if' disjunction )* yield_expr: | 'yield''from' expression | 'yield' [star_expressions] arguments: | args [','] &')' args: | ',' .(starred_expression| named_expression!'=') +[',' kwargs ] | kwargs kwargs: | ',' .kwarg_or_starred +',' ',' .kwarg_or_double_starred + | ',' .kwarg_or_starred + | ',' .kwarg_or_double_starred + starred_expression: | '*' expression kwarg_or_starred : | NAME '='expression | starred_expression kwarg_or_double_starred : | NAME '='expression | '**' expression # NOTE: star_targets may contain *bitwise_or, targets may not. star_targets : | star_target!',' | star_target(',' star_target)*[','] star_targets_list_seq : ',' .star_target +[','] star_targets_tuple_seq : | star_target(',' star_target)+[','] | star_target',' star_target : | '*' (!'*' star_target ) | target_with_star_atom target_with_star_atom : | t_primary'.' NAME ! t_lookahead | t_primary'['slices ']' ! t_lookahead | star_atom star_atom : | NAME | '(' target_with_star_atom ')' | '(' [ star_targets_tuple_seq ] ')' | '[' [ star_targets_list_seq ] ']' single_target : | single_subscript_attribute_target | NAME | '(' single_target')' single_subscript_attribute_target : | t_primary'.' NAME ! t_lookahead | t_primary'['slices ']' ! t_lookahead del_targets : ',' .del_target +[',']