anchor.diff:                                                 opts='$7'}.
   msg_elem -> message_def:                '$1'.
   msg_elem -> enum_def:                   '$1'.
  +
  +opt_field_opts -> field_opts:           '$1'.
  +opt_field_opts -> '$empty':             [].
  +
   
   field_opts -> field_opt ',' field_opts: ['$1' | '$3'].
   field_opts -> field_opt:                ['$1'].
  
positive.code:               reformat_names(flatten_defs(absolutify_names(Defs)))))).
  
  
  fetches_imports_test() ->
      {ok, Elems} = parse_lines(["package p1;"
                                 "import \"a/b/c.proto\";",
  
negative.code: 
  enum_field -> identifier '=' integer ';':
                                          {identifier_name('$1'), '$3'}.
  enum_field -> identifier '=' integer '[' opt_enum_opts ']' ';':
                                          {identifier_name('$1'), '$3'}.
  
  opt_enum_opts -> enum_opts:             '$1'.
  opt_enum_opts -> '$empty':              [].
  
  enum_opts -> enum_opt ',' enum_opts:    ['$1' | '$2'].
  enum_opts -> enum_opt:                  ['$1'].
  
  enum_opt -> name '=' constant:          {'$1', '$3'}.
  
  
  message_def -> message identifier '{' msg_elems '}':
                                          {{msg,identifier_name('$2')},'$4'}.
  