anchor.diff:                    {MI, line_of('$2')}.
   
   mibid -> atom : val('$1').
  -last_updated -> string : lists:reverse(val('$1')) .
  -oranization -> string : lists:reverse(val('$1')) .
  -contact_info -> string : lists:reverse(val('$1')) .
  +last_updated -> string : lrev(last_upd, val('$1')) .
  +oranization -> string : lrev(org, val('$1')) .
  +contact_info -> string : lrev(contact, val('$1')) .
   
   revisionpart -> '$empty' : [] .
  -revisionpart -> revisions : lists:reverse('$1') .
  +revisionpart -> revisions : lrev(revision, '$1') .
   
   revisions -> revision : ['$1'] .
   revisions -> revisions revision : ['$2' | '$1'] .
   revision -> 'REVISION' revision_string 'DESCRIPTION' revision_desc : 
               make_revision('$2', '$4') .
   
  -revision_string -> string : lists:reverse(val('$1')) .
  -revision_desc   -> string : lists:reverse(val('$1')) .
  +revision_string -> string : lrev(revision_str, val('$1')) .
  +revision_desc   -> string : lrev(revision_desc, val('$1')) .
   
   definitionv2 -> objectidentifier : '$1'.
   definitionv2 -> objecttypev2 : '$1'.
  
positive.code: 
  traptype -> objectname 'TRAP-TYPE' 'ENTERPRISE' objectname varpart
  	    description referpart implies integer :
              Trap = make_trap('$1', '$4', lists:reverse('$5'), 
                               '$6', '$7', val('$9')),
              {Trap, line_of('$2')}.
  
  
negative.code: defvalpart -> 'DEFVAL' '{' atom '}' : {defval, val('$3')}.
  defvalpart -> 'DEFVAL' '{' '{' defbitsvalue '}' '}' : {defval, '$4'}.
  defvalpart -> 'DEFVAL' '{' quote atom '}' 
       : {defval, make_defval_for_string(line_of('$1'), lrev(defval_atom, val('$3')),
  				       val('$4'))}.
  defvalpart -> 'DEFVAL' '{' quote variable '}' 
       : {defval, make_defval_for_string(line_of('$1'), lrev(defval_variable, val('$3')),
  				       val('$4'))}.
  defvalpart -> 'DEFVAL' '{' string '}' 
       : {defval, lrev(defval_string, val('$3'))}.
  defvalpart -> '$empty' : undefined.
  
  defbitsvalue -> defbitsnames : '$1'.
  