6

私は学校のプロジェクトで C# でコンパイラを作成していますが、Haskell でそれを行うにはどうすればよいのか、疑問に思うことはありませ

例えば:

While ループのコード生成は次のとおりです。

public override void generateCode(Compiler compiler)
    {
        int jumpToTheBeginningInstructionIndex = compiler.getIndexOfNextActionInCurrentFunction();
        MachineInstructions.JMP jumpTotheBeginning = new MachineInstructions.JMP(jumpToTheBeginningInstructionIndex);
        MachineInstructions.JMPF jumpToTheEnd = new MachineInstructions.JMPF();

        booleanExpression.generateCode(compiler);

        //I insert the jump to the end here:
        compiler.addAction(jumpToTheEnd);

        foreach(IAction action in this.thenActions)
        {
            action.generateCode(compiler);
        }
        compiler.addAction(jumpTotheBeginning);

        //...But is here where I know where should it jump to:
        jumpToTheEnd.whereToJump = compiler.getIndexOfNextActionInCurrentFunction();
    }

メソッドの真ん中に jumpToTheEnd のコードを挿入する方法を見ることができますが、ジャンプがジャンプする行を知る最後まで挿入されません。幸いなことに、私はそのジャンプへのポインターを保持しており、メソッドの最後でその whereToJump 属性を簡単に設定できます。

Haskell でそれを行うにはどうすればよいでしょうか!? おすすめのチュートリアルはありますか?

4

1 に答える 1