anchor.diff:  matched_expr -> at_op_eol matched_expr : build_unary_op('$1', '$2').
   matched_expr -> at_op_eol no_parens_expr : build_unary_op('$1', '$2').
   matched_expr -> no_parens_one_expr : '$1'.
  -matched_expr -> max_expr : '$1'.
  +matched_expr -> access_expr : '$1'.
   
   no_parens_expr -> dot_op_identifier call_args_no_parens_many_strict : build_identifier('$1', '$2').
   no_parens_expr -> dot_identifier call_args_no_parens_many_strict : build_identifier('$1', '$2').
  
positive.code: Nonterminals
    grammar expr_list
    expr container_expr block_expr no_parens_expr no_parens_one_expr max_expr
    bracket_expr bracket_at_expr matched_expr unmatched_expr
    op_expr matched_op_expr no_parens_op_expr
    comp_op_eol at_op_eol unary_op_eol and_op_eol or_op_eol
    add_op_eol mult_op_eol exp_op_eol two_op_eol pipe_op_eol stab_op_eol
  
negative.code: 
  map_args -> open_curly '}' : { '%{}', meta('$1'), [] }.
  map_args -> open_curly kw close_curly : { '%{}', meta('$1'), '$2' }.
  map_args -> open_curly unmatched_expr pipe_op_eol call_args_no_parens_kw close_curly : build_op('$3', '$2', '$4').
  
  struct_op -> '%' : '$1'.
  struct_op -> '%' eol : '$1'.
  
  struct_expr -> max_expr : '$1'.
  struct_expr -> dot_identifier : build_identifier('$1', nil).
  struct_expr -> at_op_eol struct_expr : build_unary_op('$1', '$2').
  
  map -> map_op map_args : '$2'.
  map -> struct_op struct_expr map_args : { '%', meta('$1'), ['$2', '$3'] }.
  