anchor.diff:  def ASi (string_candidate): # assert i18n string
       if not TSi (string_candidate): raise TypeError ('invalid translated string: ' + repr (string_candidate))
   def AIn (identifier):   # assert new identifier
  -    if yydict.has_key (identifier):  raise KeyError ('redefining existing identifier: %s' % identifier)
  +    if yy.dict.has_key (identifier):  raise KeyError ('redefining existing identifier: %s' % identifier)
   
   %%
   parser IdlSyntaxParser:
  
positive.code:                                                 {{ return l }}
  
  rule const_assignment:
          'Const' IDENT '=' expression ';'        {{ AIn (IDENT); yydict[IDENT] = expression; }}
  
  
  rule expression: summation                      {{ return summation }}
  
negative.code: 
  rule enumeration:
          ( 'enumeration' | 'enum' )
          IDENT '{'                               {{ evalues = []; yy.ecounter = 1 }}
          enumeration_rest                        {{ evalues = enumeration_rest }}
          '}' ';'                                 {{ AIn (IDENT); yy.dict[IDENT] = tuple (evalues); yy.ecounter = None }}
  rule enumeration_rest:                          {{ evalues = [] }}
          ( ''                                    # empty
          | enumeration_value                     {{ evalues = evalues + [ add_evalue (enumeration_value) ] }}
  