関数型言語の勉強にSICPを読もう - (59) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう7

とりあえず今までの分をリファクタリング

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 する感じで。


※「SICPを読もう」の目次はこちら


計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン 和田 英一
ピアソンエデュケーション (2000/02)
売り上げランキング: 56,404