anchor.diff:  binary -> '#' '{' '}' '#' : #c_literal{val = <<>>}.
   binary -> '#' '{' segments '}' '#' : make_binary('$3').
   
  -segments -> segment ',' segments : ['$1' | '$3'].
  -segments -> segment : ['$1'].
  +segments -> anno_segment ',' segments : ['$1' | '$3'].
  +segments -> anno_segment : ['$1'].
  +
  +anno_segment -> segment : '$1'.
  +anno_segment -> '(' segment '-|' annotation ')' : cerl:set_ann('$2', '$4').
   
   segment -> '#' '<' anno_expression '>' '(' anno_expressions ')':
   	case '$6' of
  
positive.code: map_pattern -> '~' '{' '}' '~' : c_map_pattern([]).
  map_pattern -> '~' '{' map_pair_patterns '}' '~' :
  		   c_map_pattern(lists:sort('$3')).
  
  map_pair_patterns -> map_pair_pattern : ['$1'].
  map_pair_patterns -> map_pair_pattern ',' map_pair_patterns : ['$1' | '$3'].
  
negative.code: 
  map_expr -> '~' '{' '}' '~' : c_map([]).
  map_expr -> '~' '{' map_pairs '}' '~' : c_map('$3').
  map_expr -> '~' '{' map_pairs '|' anno_variable '}' '~' : ann_c_map([], '$5', '$3').
  map_expr -> '~' '{' map_pairs '|' anno_map_expr '}' '~' : ann_c_map([], '$5', '$3').
  
  anno_map_expr -> map_expr : '$1'.
  anno_map_expr -> '(' map_expr '-|' annotation ')' : cerl:set_ann('$2', '$4').
  
  map_pairs -> anno_map_pair : ['$1'].
  map_pairs -> anno_map_pair ',' map_pairs : ['$1' | '$3'].
  
  anno_map_pair -> map_pair : '$1'.
  anno_map_pair -> '(' map_pair '-|' annotation ')' : cerl:set_ann('$2', '$4').
  
  map_pair -> map_pair_assoc : '$1'.
  map_pair -> map_pair_exact : '$1'.
  