def visitClassDecl(self, node): name = node.children[0].children[0].value scope_type = "type_decl" scope = Scope(node, scope_type=scope_type, scope_name=name, parent=self.scope) self.scope.scopes.setdefault(name, scope) sym = Symbol(node, scope, name, scope_type) type_def = Type_Def(node, name, sym.qualified_name, "scalar_type") self.type_defs.setdefault(sym.qualified_name, type_def) sym.type_def = type_def self.scope.symbols.setdefault(name, sym)
def visitExternType(self, node): name = node.children[0].children[0].value scope_type = "extern_type" # TODO support external types with bodies. scope = Scope(node, scope_type=scope_type, scope_name=name, parent=self.scope) self.scope.scopes.setdefault(name, scope) sym = Symbol(node, scope, name, scope_type) type_def = Type_Def(node, name, sym.qualified_name, "scalar_type") self.type_defs.setdefault(sym.qualified_name, type_def) sym.type_def = type_def self.scope.symbols.setdefault(name, sym)