Nand To Tetris(杰克):简单如果有条件的同等测试给出这个错误 - “预期 - 或〜或(在术语中”

时间:2017-01-02 20:48:34

标签: nand2tetris

class Main {
  function void main() {
    var String foo;
    let foo = "bar";

    if (foo == "bar") {
      do Output.printString("true");
    }
    else {
      do Output.printString("false");
    }

    return;
  }
}

我收到错误:Expected - or ~ or ( in term

完整输出:

code/nand2tetris » tools/JackCompiler.sh projects/09/Test
Compiling /Users/adamzerner/code/nand2tetris/projects/09/Test
In Main.jack (line 6): In subroutine main: Expected - or ~ or ( in term
code/nand2tetris »

错误是什么意思?

1 个答案:

答案 0 :(得分:0)

问题在于我使用了==而不是=。在Jack中,使用单个等于而不是双倍或三倍来测试相等(在其他语言中,使用double / triple equals是传统的)。

请参阅Chapter 9 PDF幻灯片22中的项目符号第7点,获取文档说明使用单个等号进行相等比较。

有关示例,请参阅课程软件中的SquareGame.jack第40行。

以下代码编译时没有错误。它没有给出预期的输出,但其原因是一个单独的主题。

class Main {
  function void main() {
    var String foo;
    let foo = "bar";

    if (foo = "bar") {
      do Output.printString("true");
    }
    else {
      do Output.printString("false");
    }

    return;
  }
}