anchor.diff:      runtime.print_error (ex, isp._scanner)
     except AssertionError: raise
     except Exception, ex:
  +    # 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)
  
positive.code:   ecounter = None
    namespace = None
    ns_list = [] # namespaces
  yy = YYGlobals # globals
  
  def namespace_open (ident):
      assert yy.namespace == None and yy.dict == None
      yy.namespace = ident
      yy.dict = {}
      # initialize namespace
      for builtintype in ('Bool', 'Num', 'Real', 'String'):
        yy.dict[builtintype] = ('builtin', builtintype)
  def namespace_close ():
      assert isinstance (yy.namespace, str) and isinstance (yy.dict, dict)
      yy.ns_list.append ((yy.namespace, yy.dict))
      yy.namespace = None
      yy.dict = None
  def constant_lookup (variable):
      assert isinstance (yy.dict, dict)
      type, value = yy.dict.get (variable, (None, 0))
  
negative.code: rule IdlSyntax: ( ';' | namespace )* EOF        {{ return yy.ns_list; }}
  
  rule namespace:
          'namespace' IDENT                       {{ yy.namespace_open (IDENT) }}
          '{' declaration* '}'                    {{ yy.namespace_close() }}
  rule declaration:
            ';'
          | const_assignment
  