anchor.diff:  
   Nonterminals
     grammar expr_list
  -  expr call_expr max_expr base_expr block_expr curly_expr
  -  comma_separator comma_expr
  +  expr unmatched_expr matched_expr op_expr curly_expr call_expr max_expr base_expr
  +  comma_separator kv_eol
     add_op mult_op unary_op match_op andand_op oror_op
     open_paren close_paren
     open_bracket close_bracket
     open_curly close_curly
  -  call_args call_args_parens call_args_no_parens
  -  base_orddict kv_comma kv_eol
  +  comma_expr call_args_comma_expr call_args call_args_parens
  +  matched_comma_expr call_args_no_parens
  +  kv_comma base_orddict
  +  matched_kv_comma matched_base_orddict
     do_eol end_eol kv_list do_block curly_block
     list list_args
     dot_op dot_identifier dot_paren_identifier dot_punctuated_identifier dot_call_expr
  
positive.code: 
  dot_identifier -> identifier : '$1'.
  dot_identifier -> dot_call_op call_args_parens : build_identifier('$1', '$2'). % .(args)
  dot_identifier -> expr dot_op identifier : { '.', ?line('$2'), ['$1', '$3'] }.
  
  dot_paren_identifier -> paren_identifier : '$1'.
  dot_paren_identifier -> expr dot_op paren_identifier : { '.', ?line('$2'), ['$1', '$3'] }.
  
  dot_punctuated_identifier -> punctuated_identifier : '$1'.
  dot_punctuated_identifier -> expr dot_op punctuated_identifier : { '.', ?line('$2'), ['$1', '$3'] }.
  
  dot_call_expr -> expr dot_call_op : { '.', ?line('$2'), ['$1'] }.
  
  % Function calls
  
  comma_expr -> expr : ['$1'].
  comma_expr -> comma_expr comma_separator expr : ['$3'|'$1'].
  
  call_args -> call_args_no_parens : build_args('$1').
  
  call_args_no_parens -> comma_expr : lists:reverse('$1').
  call_args_no_parens -> base_orddict : ['$1'].
  call_args_no_parens -> comma_expr comma_separator base_orddict : lists:reverse(['$3'|'$1']).
  
  call_args_parens -> open_paren ')' : [].
  call_args_parens -> open_paren call_args_no_parens close_paren : '$2'.
  
  % KV and orddict
  
  
negative.code: Rootsymbol grammar.
  
  Right     20 match_op.
  Left      30 do.
  Left      40 ','.  % Solve nested call_args conflicts
  
  Left      50 oror_op.
  