Mercurial > lcfOS
diff python/ppci/frontends/ks/irgenerator.py @ 107:1544e7a4aa98
Improvements
author | Windel Bouwman |
---|---|
date | Tue, 01 Jan 2013 17:16:05 +0100 |
parents | f2d980eef509 |
children | 9e552d34bd60 |
line wrap: on
line diff
--- a/python/ppci/frontends/ks/irgenerator.py Mon Dec 31 18:26:56 2012 +0100 +++ b/python/ppci/frontends/ks/irgenerator.py Tue Jan 01 17:16:05 2013 +0100 @@ -75,23 +75,8 @@ # Get a register to store the integer value else: Error('Cannot load variable type {0}'.format(node.typ)) - - elif isinstance(node, Relop): - # Create a boolean from operands - # TODO create an alternative for expressions used as conditions. - self.genexprcode(node.a) - self.genexprcode(node.b) - - if node.a.typ.isType(integer): - self.freereg(node.b) - else: - Error('Relop not implemented for {0}'.format(node.a.typ)) - elif type(node) is Constant: print('TODO: constant') - - elif type(node) is ProcedureCall: - Error('TODO: proc call') else: Error('Cannot generate expression code for: {0}'.format(node)) @@ -99,8 +84,16 @@ """ Code generation function for AST nodes """ if isinstance(node, Module): # TODO: recurse! + + print(node.symtable) + node.symtable.printTable() + funcs = node.symtable.getAllLocal(Procedure) + for f in funcs: + print('function', f) + ftype = f.typ.coreType() + ftype = core.FunctionType(retType) - self.mod = core.Module() + self.mod = core.Module(node.name) # Create a function called init for this module: ftype = core.FunctionType(self.context.VoidType, []) func = core.Function(ftype, "init", self.mod)