とりあえず今までの分をリファクタリング。
int main(int argc, char *argv[])
{
if (argc < 2)
{
fprintf(stderr, "usage: %s file\n", argv[0]);
return -1;
}
string input = load(argv[1]);
if (input == "")
{
return -1;
}
Tokenizer tokenizer(input);
Parser parser(&tokenizer);
Node* node = parser.parse();
node->print();
Object* object = NULL;
if (Translator::translate(node, &object) != Translator::SUCCESS)
{
return -1;
}
Environment* environment = new Environment();
display(object->eval(environment));
return 0;
}
primitive procedureは今後 environment に push する感じで。