1
Nand2Tetrisコースの一環として、Jackという言語を使用しています。なぜこの最小ジャック(nand2tetris)プログラムはコンパイルされませんか?
これは、コンパイルして生成し実行したときに、私は期待して出力:
:私はこのコンパイラエラーを取得...class Main {
function void main() {
var Foo f;
do f.doSomething();
return;
}
}
class Foo {
method void doSomething() {
do Output.printString("Hello, world!");
return;
}
}
をしかし、私は行を追加したときに...
class Main {
function void main() {
var Foo f;
do f.doSomething();
var int i; // doesn't seem to matter what's here, anything breaks it
return;
}
}
In Main.jack (line 6): In subroutine main: Expected statement(do, let, while, return, or if)
なぜ追加の行が違いますか?
誰かがそれを探している場合、PDFのスライド26。 –
明確にするには、すべてのローカル変数宣言がbeforeステートメントになる必要があるという問題があります。 PDFのSlide 26に、コードを書き込む必要がある順序が示されています。 Jackがそのように構成されている理由は、コンパイラの後続の書き込みをできるだけ簡単にするためです。 –