import ast import compiler def process(node): # TODO: star_args # TODO: dstar_args #for i in range(0,len(node.args)): # ast.output("\t$P%d = new PerlInt" % (i+1)) # ast.output("\t$P%d = %s" % (i+1,ast.evaluate(node.args[i]))) #args = ','.join(["$P%d" % i for i in range(1,len(node.args)+1)]) #ast.output("\t%s(%s)" % (ast.evaluate(node.node), args)) #args = ','.join( [ ast.evaluate(node.args[i]) % i for i in range(1, len(node.args)+1 ) ]) #ast.diag(node) args = "" for i in range(0,len(node.args)): args += ast.evaluate(node.args[i]) if i < len(node.args) - 1: args += ", " functionName = "" if node.node.__class__ == compiler.ast.Name: functionName = node.node.name else: functionName = ast.evaluate(node.node) returnReg = ast.nextPRegister() ast.outputInBlock( "%s = %s(%s)" % ( returnReg, functionName, args ) ) return returnReg