首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个最小的杰克(nand2tetris)程序不编译?

为什么这个最小的杰克(nand2tetris)程序不编译?
EN

Stack Overflow用户
提问于 2016-04-27 09:09:05
回答 1查看 1.7K关注 0票数 3

我正在使用一种名为杰克的语言,作为Nand2Tetris课程的一部分。

这将编译并生成我在运行时期望的输出:

代码语言:javascript
复制
class Main {
    function void main() {
        var Foo f;
        do f.doSomething();
        return;
    }
}

class Foo {
    method void doSomething() {
        do Output.printString("Hello, world!");
        return;
    }
}

但当我加一行时..。

代码语言:javascript
复制
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)

为什么额外的行会产生不同的影响?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 10:18:52

有些编程语言比其他语言更结构化。对于允许声明变量的地方,Jack似乎非常严格。

在Jack演示之后,您提供了:

代码语言:javascript
复制
subroutine_type name (parameter-list) {
    local variable declarations
    statements
}

将变量i声明移到它所属的位置应该可以解决问题。

代码语言:javascript
复制
class Main {
    function void main() {
        var Foo f;
        var int i;
        do f.doSomething();

        return;
    }
} 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36885251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档