anchor.diff:  binary_pattern -> '#' '{' '}' '#' : #c_binary{segments=[]}.
   binary_pattern -> '#' '{' segment_patterns '}' '#' : #c_binary{segments='$3'}.
   
  -segment_patterns -> segment_pattern ',' segment_patterns : ['$1' | '$3'].
  -segment_patterns -> segment_pattern : ['$1'].
  +segment_patterns -> anno_segment_pattern ',' segment_patterns : ['$1' | '$3'].
  +segment_patterns -> anno_segment_pattern : ['$1'].
  +
  +anno_segment_pattern -> segment_pattern : '$1'.
  +anno_segment_pattern -> '(' segment_pattern '-|' annotation ')' :
  +      cerl:set_ann('$2', '$4').
   
   segment_pattern -> '#' '<' anno_pattern '>' '(' anno_expressions ')':
   	case '$6' of
  
positive.code: module_definition ->
      '(' 'module' atom module_export module_attribute module_defs 'end'
  	'-|' annotation ')' :
  	#c_module{anno='$9',name=tok_val('$3'),exports='$4',
  		  attrs='$5',defs='$6'}.
  
  module_export -> '[' ']' : [].
  
negative.code: map_pattern -> '~' '{' '}' '~' : c_map_pattern([]).
  map_pattern -> '~' '{' map_pair_patterns '}' '~' :
  		   c_map_pattern(lists:sort('$3')).
  map_pattern -> '~' '{' map_pair_patterns '|' anno_map_expr '}' '~' :
  		   ann_c_map_pattern('$5', lists:sort('$3')).
  
  map_pair_patterns -> map_pair_pattern : ['$1'].
  map_pair_patterns -> map_pair_pattern ',' map_pair_patterns : ['$1' | '$3'].
  