codegen: factor out head generation

This commit is contained in:
2018-05-06 15:27:45 +02:00
parent a5ce351f91
commit 063ecdd3d8

10
c.py
View File

@@ -213,19 +213,21 @@ class CodeGen:
res = "{}\n{}".format(res, self.generate(node))
return res
def generate_head(self, node):
args = ", ".join("int {}".format(n) for n in node.args)
return "int {}({})".format(node.name, args)
def generate_proto(self, node):
case = node.__class__
if case == DefNode:
args = ", ".join("int {}".format(n) for n in node.args)
return "int {}({});".format(node.name, args)
return "{};".format(self.generate_head(node))
return ""
def generate(self, node):
case = node.__class__
if case == DefNode:
args = ", ".join("int {}".format(n) for n in node.args)
body = self.generate(node.body)
return "int {}({}) {{ return {}; }}".format(node.name, args, body)
return "{} {{ return {}; }}".format(self.generate_head(node), body)
if case == IntegerNode:
return str(node.value)
if case == CallNode: