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))
|
res = "{}\n{}".format(res, self.generate(node))
|
||||||
return res
|
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):
|
def generate_proto(self, node):
|
||||||
case = node.__class__
|
case = node.__class__
|
||||||
if case == DefNode:
|
if case == DefNode:
|
||||||
args = ", ".join("int {}".format(n) for n in node.args)
|
return "{};".format(self.generate_head(node))
|
||||||
return "int {}({});".format(node.name, args)
|
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
def generate(self, node):
|
def generate(self, node):
|
||||||
case = node.__class__
|
case = node.__class__
|
||||||
if case == DefNode:
|
if case == DefNode:
|
||||||
args = ", ".join("int {}".format(n) for n in node.args)
|
|
||||||
body = self.generate(node.body)
|
body = self.generate(node.body)
|
||||||
return "int {}({}) {{ return {}; }}".format(node.name, args, body)
|
return "{} {{ return {}; }}".format(self.generate_head(node), body)
|
||||||
if case == IntegerNode:
|
if case == IntegerNode:
|
||||||
return str(node.value)
|
return str(node.value)
|
||||||
if case == CallNode:
|
if case == CallNode:
|
||||||
|
Reference in New Issue
Block a user