为什么这个最小的 Jack (nand2tetris) 程序不能编译?
Why doesn't this minimal Jack (nand2tetris) program compile?
我正在使用一种名为 Jack, as part of the 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)
为什么附加的行会有所不同?
有些编程语言比其他语言结构化程度更高。
Jack好像对允许声明变量的地方很严格
您提供的以下 Jack 演示文稿:
subroutine_type name (parameter-list) {
local variable declarations
statements
}
将变量 i 声明移动到它所属的位置应该可以解决您的问题。
class Main {
function void main() {
var Foo f;
var int i;
do f.doSomething();
return;
}
}
我正在使用一种名为 Jack, as part of the 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)
为什么附加的行会有所不同?
有些编程语言比其他语言结构化程度更高。 Jack好像对允许声明变量的地方很严格
您提供的以下 Jack 演示文稿:
subroutine_type name (parameter-list) {
local variable declarations
statements
}
将变量 i 声明移动到它所属的位置应该可以解决您的问题。
class Main {
function void main() {
var Foo f;
var int i;
do f.doSomething();
return;
}
}