anchor.diff:  
   % Lists
   
  +list_args -> kw : '$1'.
  +list_args -> container_args_base : reverse('$1').
  +list_args -> container_args_base ',' : reverse('$1').
  +list_args -> container_args_base ',' kw : reverse('$1', '$3').
  +
   list -> open_bracket ']' : build_list('$1', []).
  -list -> open_bracket kw_base close_bracket : build_list('$1', reverse('$2')).
  -list -> open_bracket container_args_base close_bracket : build_list('$1', reverse('$2')).
  -list -> open_bracket container_args_base ',' kw_base close_bracket : build_list('$1', reverse('$2', reverse('$4'))).
  +list -> open_bracket list_args close_bracket : build_list('$1', '$2').
   
   % Tuple
   
   tuple -> open_curly '}' : build_tuple('$1', []).
  -tuple -> open_curly kw_base close_curly :  build_tuple('$1', [reverse('$2')]).
  -tuple -> open_curly container_args_base close_curly : build_tuple('$1', reverse('$2')).
  -tuple -> open_curly container_args_base ',' kw_base close_curly : build_tuple('$1', reverse([reverse('$4')|'$2'])).
  +tuple -> open_curly container_args close_curly :  build_tuple('$1', '$2').
   
   % Bitstrings
   
   bit_string -> open_bit '>>' : build_bit('$1', []).
  -bit_string -> open_bit kw_base close_bit : build_bit('$1', [reverse('$2')]).
  -bit_string -> open_bit container_args_base close_bit : build_bit('$1', reverse('$2')).
  -bit_string -> open_bit container_args_base ',' kw_base close_bit : build_bit('$1', reverse([reverse('$4')|'$2'])).
  +bit_string -> open_bit container_args close_bit : build_bit('$1', '$2').
   
   % Map and structs
   
  
positive.code: 
  assoc_update -> matched_expr pipe_op_eol matched_expr assoc_op_eol matched_expr : { '$2', '$1', [{ '$3', '$5' }] }.
  assoc_update -> unmatched_expr pipe_op_eol expr assoc_op_eol expr : { '$2', '$1', [{ '$3', '$5' }] }.
  
  assoc_update_kw -> matched_expr pipe_op_eol kw_base : { '$2', '$1', reverse('$3') }.
  assoc_update_kw -> unmatched_expr pipe_op_eol kw_base : { '$2', '$1', reverse('$3') }.
  
  assoc_base -> assoc_expr : ['$1'].
  assoc_base -> assoc_base ',' assoc_expr : ['$3'|'$1'].
  
  map_op -> '%{}' : '$1'.
  map_op -> '%{}' eol : '$1'.
  
  map_close -> kw_base close_curly : reverse('$1').
  map_close -> assoc_base close_curly : reverse('$1').
  map_close -> assoc_base ',' kw_base close_curly : reverse('$1', reverse('$2')).
  
  map_args -> open_curly '}' : build_map('$1', []).
  map_args -> open_curly map_close : build_map('$1', '$2').
  map_args -> open_curly assoc_update close_curly : build_map_update('$1', '$2', []).
  map_args -> open_curly assoc_update ',' map_close : build_map_update('$1', '$2', '$4').
  map_args -> open_curly assoc_update_kw close_curly : build_map_update('$1', '$2', []).
  
  
negative.code: open_bracket  -> '[' eol     : '$1'.
  close_bracket -> ']'         : '$1'.
  close_bracket -> eol ']'     : '$2'.
  
  open_bit  -> '<<'         : '$1'.
  open_bit  -> '<<' eol     : '$1'.
  close_bit -> '>>'         : '$1'.
  close_bit -> eol '>>'     : '$2'.
  
  open_curly  -> '{'     : '$1'.
  open_curly  -> '{' eol : '$1'.
  close_curly -> '}'         : '$1'.
  close_curly -> eol '}'     : '$2'.
  
  % Operators
  
  