anchor.diff:  arrow_chains -> arrow_chain    : '$1'.
   arrow_chain  -> arrow fun_call : '$2'.
   
  +literal -> integer              : '$1'.
   literal -> float                : '$1'.
   literal -> bool_lit             : '$1'.
   literal -> string               : {string,  line('$1'), unwrap('$1')}.
  
positive.code: 
  unary_expr -> prefix_op literal              : {op, line('$2'), op(unwrap('$1')), '$2'}.
  unary_expr -> block_expr                     : '$1'.
  
  signed_integer -> add_op integer :
      Sign = unwrap('$1'),
      Line = line('$2'),
  
      if
          Sign == '-' ->
              {op, Line, '-', '$2'};
          true ->
              '$2'
     end.
  signed_integer -> integer : '$1'.
  
  block_expr -> if_expr           : '$1'.
  block_expr -> for_expr          : '$1'.
  
negative.code:     binary binary_items binary_item bin_type_def bin_type
      prefix_op attribute
      obj_def obj_attrs obj_attrs_tail
      for_expr range.
  
  Terminals
      fn match open close open_block close_block
  