Nand2Tetris — 第9章
高水準言語Jack
// Main.jack
//シンプルなジャックプログラム
//アクション:
//キーボード入力を待ってから任意のキーを押すと、数字を1ずつ増やして出力します。
//qを押すとプログラムが終了する
class Main {
function void main() {
var int count;
var char key;
let count = 0;
do Output.printString("Nand2Tetris Jack Test");
do Output.println();
do Output.printString("Press any key. q is quit.");
do Output.println();
while (true) {
let key = Keyboard.keyPressed();
if (key = 113) {
return;
}
if (~(key = 0)) {
let count = count + 1;
do Output.printString("count = ");
do Output.printInt(count);
do Output.println();
while (~(Keyboard.keyPressed() = 0)) {
do Sys.wait(1);
}
}
do Sys.wait(1);
}
return;
}
}
// Counter.jack
//フィールド値を持つクラスの例
//コンストラクタでオブジェクトを作成し、methodでthis値を変更する
class Counter {
field int value;
constructor Counter new() {
let value = 0;
return this;
}
method void inc() {
let value = value + 1;
return;
}
method int get() {
return value;
}
method void dispose() {
do Memory.deAlloc(this);
return;
}
}