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)