Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ianj-als/pcl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Johnson <ian.johnson@appliedlanguage.com>2013-10-23 20:17:47 +0400
committerIan Johnson <ian.johnson@appliedlanguage.com>2013-10-23 20:17:47 +0400
commitf0a5b97945e90760b5e5e701ac24721c010717bf (patch)
treeee0a4eb9f10cd8a2adc9feb7385dbcbd58dec005
parent8360af279584a22cc0d27f2e3e15968f74e46ece (diff)
Fixed else block code generation, and added return action code generation for unit.
-rw-r--r--src/pclc/visitors/do_executor_visitor.py12
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