anchor.diff:      : testlist NEWLINE*
       ;
   
  +stmt
  +    : simple_stmt
  +    | compound_stmt
  +    ;
  +
  +//---------------- compound statement ----------------------------------------------------------------------------------
  +compound_stmt
  +    : IF cond=test COLON suite elif_clause* else_clause?                           #if_stmt
  +    | WHILE test COLON suite else_clause?                                          #while_stmt
  +    | ASYNC? FOR exprlist IN testlist COLON suite else_clause?                     #for_stmt
  +    | TRY COLON suite (except_clause+ else_clause? finaly_clause? | finaly_clause) #try_stmt
  +    | ASYNC? WITH with_item (COMMA with_item)* COLON suite                         #with_stmt
  +    | decorator* (classdef | funcdef)                                              #class_or_func_def_stmt
  +    ;
  +
  +suite
  +    : simple_stmt
  +    | NEWLINE INDENT stmt+ DEDENT
  +    ;
  +
   decorator
       : AT dotted_name (OPEN_PAREN arglist? CLOSE_PAREN)? NEWLINE
       ;
   
  -//python 3 paramters
  +elif_clause
  +    : ELIF test COLON suite
  +    ;
  +
  +else_clause
  +    : ELSE COLON suite
  +    ;
  +
  +finaly_clause
  +    : FINALLY COLON suite
  +    ;
  +
  +with_item
  +    // NB compile.c makes sure that the default except clause is last
  +    : test (AS expr)?
  +    ;
  +
  +// Python 2 : EXCEPT test COMMA name
  +// Python 3 : EXCEPT test AS name
  +except_clause
  +    : EXCEPT (test (COMMA name | AS name)?)? COLON suite
  +    ;
  +//----------------------------------------------------------------------------------------------------------------------
  +
  +// ------ class definition ---------------------------------------------------------------------------------------------
  +classdef
  +    : CLASS name (OPEN_PAREN arglist? CLOSE_PAREN)? COLON suite
  +    ;
  +//----------------------------------------------------------------------------------------------------------------------
  +
  +// ------- function and it's parameters definition ---------------------------------------------------------------------
  +funcdef
  +    : ASYNC? DEF name OPEN_PAREN typedargslist? CLOSE_PAREN (ARROW test)? COLON suite
  +    ;
  +
  +// python 3 paramters
   // parameters list may have a trailing comma
   typedargslist
       : (def_parameters COMMA)? (args (COMMA def_parameters)? (COMMA kwargs)? | kwargs) COMMA?
  
positive.code:     | expr op=OR_OP expr
      ;
  
  atom
      : OPEN_PAREN (yield_expr | testlist_comp)? CLOSE_PAREN
      | OPEN_BRACKET testlist_comp? CLOSE_BRACKET
  
negative.code: sliceop
      : COLON test?
      ;
  //----------------------------------------------------------------------------------------------------------------------
  
  // --------------------- !!! WARNING completely unused !!!--------------------------------------------------------------
  list_iter
      : FOR exprlist IN testlist_safe list_iter?
      | IF test list_iter?
  