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显示代码需要写入的顺序。杰克如此结构化的原因是为了尽可能简化后续的编译器编写。 –