Nand To Tetris (Jack): Simple if conditional with equality testing giving this error - "Expected - or ~ or ( in term"

Nand To Tetris (Jack): Simple if conditional with equality testing giving this error - "Expected - or ~ or ( in term"

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 »

错误是什么意思?

问题是我使用了 == 而不是 =。在 Jack 中,使用单个 equals 而不是 double 或 triple 来测试相等性(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;
  }
}