私は学校のプロジェクトで 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 でそれを行うにはどうすればよいでしょうか!? おすすめのチュートリアルはありますか?