anchor.diff:          ( 'enumeration' | 'enum' )
           IDENT '{'                               {{ evalues = []; yy.ecounter = 1 }}
           enumeration_rest                        {{ evalues = enumeration_rest }}
  -        '}' ';'                                 {{ AIn (IDENT); yy.nsadd (IDENT, 'enum', tuple (evalues)); yy.ecounter = None }}
  +        '}'                                     {{ AIn (IDENT); yy.nsadd_enum (IDENT, evalues) }}
  +        ';'                                     {{ evalues = None; yy.ecounter = None }}
   rule enumeration_rest:                          {{ evalues = [] }}
           ( ''                                    # empty
  -        | enumeration_value                     {{ evalues = evalues + [ add_evalue (enumeration_value) ] }}
  +        | enumeration_value                     {{ evalues = evalues + [ enumeration_value ] }}
             [ ',' enumeration_rest                {{ evalues = evalues + enumeration_rest }}
             ] 
           )                                       {{ return evalues }}
  
positive.code:     self.ns_list = [] # namespaces
    def nsadd (self, name, kind, members):
      self.namespace.add (name, kind, members)
    def namespace_open (self, ident):
      assert self.namespace == None
      self.namespace = Decls.Namespace (ident)
  
negative.code:     runtime.print_error (ex, isp._scanner)
    except AssertionError: raise
    except Exception, ex:
      if debugging: raise # pass exceptions on when debugging
      exstr = str (ex)
      if exstr: exstr = ': ' + exstr
      runtime.print_error (ParseError ('%s%s' % (ex.__class__.__name__, exstr)), isp._scanner)
  