jtlc/nodes/FunctionNode.cc
josh d052712d94 broke Compiler::write() into Compiler::writeHeader() and Compiler::writeFunction()
git-svn-id: svn://anubis/jtlc/trunk@26 f5bc74b8-7b62-4e90-9214-7121d538519f
2010-01-19 16:20:27 +00:00

34 lines
959 B
C++

#include <iostream>
#include "Node.h"
#include "parser/parser.h"
#include "main/Compiler.h"
using namespace std;
void FunctionNode::process(refptr<Compiler> compiler)
{
refptr<Node> name = m_children[0];
refptr<Node> params = m_children[1];
refptr<Node> type = m_children[2];
compiler->beginFunction(name->getString());
compiler->writeFunction(type->getString());
compiler->writeFunction(" ");
compiler->writeFunction(name->getString());
compiler->writeFunction("(");
for (int i = 0, sz = params->getChildren().size(); i < sz; i++)
{
if (i > 0)
{
compiler->writeFunction(", ");
}
compiler->writeFunction(params->getChildren()[i]->getString());
}
compiler->writeFunction(")\n");
compiler->writeFunction("{\n");
for (int i = 3, sz = m_children.size(); i < sz; i++)
{
m_children[i]->process(compiler);
}
compiler->writeFunction("}\n\n");
}