Mercurial > lcfOS
view python/c3/builder.py @ 165:598d3888a11c
Added front class and fided AST view
author | Windel Bouwman |
---|---|
date | Fri, 22 Mar 2013 15:12:38 +0100 |
parents | |
children | da0087b82fbe |
line wrap: on
line source
import ppci from . import Parser, Semantics, TypeChecker, Analyzer, CodeGenerator, AstPrinter class Builder: def __init__(self, diag): self.diag = diag self.sema = Semantics(diag) self.p = Parser(self.sema, diag) self.tc = TypeChecker(diag) self.al = Analyzer(diag) self.cg = CodeGenerator() self.ap = AstPrinter() def build(self, src): # Store src for later: self.src = src 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) 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) ok = len(self.diag.diags) == 0 if ok: print('Generating ir-code') i = cg.gencode(pkg) return i