Nand2Tetris — 9장
Jack 고급 언어
// Main.jack
// 간단한 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
// 필드 값을 가진 class 예시
// constructor에서 객체를 만들고 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;
}
}