1
我使用的語言是Jack,作爲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)
爲什麼附加行有所作爲?
幻燈片26的PDF,如果其他人正在搜索它。 –
要明確,問題是所有局部變量聲明都需要在語句之前。 PDF幻燈片26顯示代碼需要寫入的順序。傑克如此結構化的原因是爲了儘可能簡化後續的編譯器編寫。 –