我正在使用一种名为杰克的语言,作为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;
}
}...I获取此编译器错误:
在Main.jack (第6行)中:在子例程main中:预期语句(do、let、while、return或if)
为什么额外的行会产生不同的影响?
发布于 2016-04-27 10:18:52
有些编程语言比其他语言更结构化。对于允许声明变量的地方,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;
}
} https://stackoverflow.com/questions/36885251
复制相似问题