anchor.diff:  // TODO 2: semantically annotated declaration is not an assignment
   small_stmt
       : testlist_star_expr assign_part?                                                 #expr_stmt
  -    | PRINT ((test (COMMA test)* COMMA?) | RIGHT_SHIFT test ((COMMA test)+ COMMA?))   #print_stmt   // Python 2
  +    | {CheckVersion(2)}? PRINT ((test (COMMA test)* COMMA?)
  +                       | RIGHT_SHIFT test ((COMMA test)+ COMMA?)) {SetVersion(2);}    #print_stmt   // Python 2
       | DEL exprlist                                                                    #del_stmt
       | PASS                                                                            #pass_stmt
       | BREAK                                                                           #break_stmt
  
positive.code: 
  subscript
      : ELLIPSIS
      | test
      | test? COLON test? sliceop?
      ;
  
  // TODO: maybe inline?
  
negative.code: // Python 2 : EXCEPT test COMMA name
  // Python 3 : EXCEPT test AS name
  except_clause
      : EXCEPT (test ({CheckVersion(2)}? COMMA name {SetVersion(2);} | {CheckVersion(3)}? AS name {SetVersion(3);})?)? COLON suite
      ;
  //----------------------------------------------------------------------------------------------------------------------
  
  