34 lines
959 B
C++
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");
|
|
}
|