diff python/c3/builder.py @ 166:da0087b82fbe

Improved type checking
author Windel Bouwman
date Fri, 22 Mar 2013 16:15:31 +0100
parents 598d3888a11c
children 0b5b2ee6b435
line wrap: on
line diff
--- a/python/c3/builder.py	Fri Mar 22 15:12:38 2013 +0100
+++ b/python/c3/builder.py	Fri Mar 22 16:15:31 2013 +0100
@@ -4,8 +4,7 @@
 class Builder:
    def __init__(self, diag):
       self.diag = diag
-      self.sema = Semantics(diag)
-      self.p = Parser(self.sema, diag)
+      self.p = Parser(diag)
       self.tc = TypeChecker(diag)
       self.al = Analyzer(diag)
       self.cg = CodeGenerator()
@@ -16,27 +15,19 @@
       print('[0] source:')
       print(src)
       print('[1] parsing')
-      self.p.parseSource(src)
-      ok = len(self.diag.diags) == 0
-      if not ok:
-         return
-      pkg = self.sema.mod
-      self.pkg = pkg
-      self.al.analyzePackage(pkg)
-      self.tc.checkPackage(pkg)
+      self.pkg = self.p.parseSource(src)
+      self.al.analyzePackage(self.pkg)
+      self.tc.checkPackage(self.pkg)
       print('{0} errors'.format(len(self.diag.diags)))
-
       for d in self.diag.diags:
          print('ERROR:')
          ppci.printError(src, d)
       print('[2] ast:')
-      self.ap.printAst(pkg)
-
-      #printAst(sema.mod)
+      self.ap.printAst(self.pkg)
 
       ok = len(self.diag.diags) == 0
       if ok:
          print('Generating ir-code')
-         i = cg.gencode(pkg)
+         i = self.cg.gencode(self.pkg)
          return i