Mercurial > lcfOS
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