codegen: factor out head generation
This commit is contained in:
10
c.py
10
c.py
@@ -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:
|
||||
|
Reference in New Issue
Block a user