anchor.diff:      | STRING+
       ;
   
  +yield_expr
  +    : YIELD yield_arg?
  +    ;
  +
  +yield_arg
  +    : FROM test
  +    | testlist
  +    ;
  +
  +testlist_comp
  +    : (test | star_expr) (comp_for | (COMMA (test | star_expr))* COMMA?)
  +    ;
  +
  +dictorsetmaker
  +    : (test COLON test | POWER expr) (comp_for | (COMMA (test COLON test | POWER expr))* COMMA?)
  +    | (test | star_expr) (comp_for | (COMMA (test | star_expr))* COMMA?)
  +    ;
  +
  +testlist
  +    : test (COMMA test)* COMMA?
  +    ;
  +
   dotted_name
       : dotted_name DOT name
       | name
  -    ;
  -
  -yield_expr
  -    : YIELD yield_arg?
  -    ;
  -
  -testlist_comp
  -    : (test | star_expr) (comp_for | (COMMA (test | star_expr))* COMMA?)
       ;
   
   name
  
positive.code:     | ASSERT test (COMMA test)?                                                       #assert_stmt
      | NONLOCAL name (COMMA name)*                                                     #nonlocal_stmt // Python 3
      ;
  
  testlist_star_expr
      : (test | star_expr) (COMMA (test | star_expr))* COMMA?
      ;
  
  assign_part
  
negative.code:     : comparison (LESS_THAN | GREATER_THAN | EQUALS | GT_EQ | LT_EQ | NOT_EQ_1 | NOT_EQ_2 | IN | IS optional=NOT? | NOT optional=IN?) comparison
      | expr
      ;
  //----------------------------------------------------------------------------------------------------------------------
  
  // -------------------------- expressions ------------------------------------------------------------------------------
  expr
      : AWAIT? atom trailer*
      | <assoc=right> expr op=POWER expr
  