diff options
author | Ian Johnson <ian.johnson@appliedlanguage.com> | 2013-10-23 20:17:47 +0400 |
---|---|---|
committer | Ian Johnson <ian.johnson@appliedlanguage.com> | 2013-10-23 20:17:47 +0400 |
commit | f0a5b97945e90760b5e5e701ac24721c010717bf (patch) | |
tree | ee0a4eb9f10cd8a2adc9feb7385dbcbd58dec005 | |
parent | 8360af279584a22cc0d27f2e3e15968f74e46ece (diff) |
Fixed else block code generation, and added return action code generation for unit.
-rw-r--r-- | src/pclc/visitors/do_executor_visitor.py | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/pclc/visitors/do_executor_visitor.py b/src/pclc/visitors/do_executor_visitor.py index d2e48a3..e396dd3 100644 --- a/src/pclc/visitors/do_executor_visitor.py +++ b/src/pclc/visitors/do_executor_visitor.py @@ -68,6 +68,8 @@ class IntermediateRepresentation(object): if self.is_then_block is True: self.then_block.append(node) elif self.is_then_block is False: + print "IRIfNode.add_child: ", + print str(node.object.function.name) if isinstance(node.object, Command) else type(node.object) self.else_block.append(node) def switch_to_else_block(self): @@ -166,22 +168,20 @@ class IntermediateRepresentation(object): for then_node in node.then_block: more_code = self.__generate_code(then_node, generate_function_call, executor_visitor) code.extend(more_code) - code.append(("return %s(a, s)" % self.__lookup_function_name(if_command.then_commands[0]), "-")) code.append((None, "-")) code.append(("else:", "+")) - for else_node in node.then_block: - print type(else_node) + for else_node in node.else_block: more_code = self.__generate_code(else_node, generate_function_call, executor_visitor) code.extend(more_code) code.append((None, "-")) code.append(("%s(a, s)" % self.__lookup_function_name(if_command), "")) - elif isinstance(node, IntermediateRepresentation.IRReturnNode): - # Return command code generation - pass + return_command = node.object + if not return_command.mappings: + code.append(("return None", "")) return code |