開発環境
- OS X El Capitan - Apple (OS)
- Emacs(Text Editor)
- Java (実行環境)
コンピュータシステムの理論と実装 (Noam Nisan (著)、Shimon Schocken (著)、斎藤 康毅(翻訳)、オライリージャパン)の12章(オペレーティングシステム)、12.5(プロジェクト)を取り組んでみる。
12.5(プロジェクト)
コード(Emacs)
String.jack
class String {
field int len;
field Array str;
field boolean flag;
constructor String new(int maxLength) {
let len = 0;
let str = Array.new(maxLength + 1);
let flag = true;
return this;
}
method void dispose() {
do str.dispose();
return;
}
method int length() {
return len;
}
method char charAt(int j) {
return str[j];
}
method void setCharAt(int j, char c) {
let str[j] = c;
return;
}
method String appendChar(char c) {
let str[len] = c;
let len = len + 1;
return this;
}
method void eraseLastChar() {
let len = len - 1;
return;
}
method int intValue() {
var int v;
var int i;
var int d;
var int sign;
let v = 0;
let i = 0;
let sign = 1;
if (str[i] = 45 ) {
let i = i + 1;
let sign = -1;
}
while (i < len) {
let d = str[i] - 48;
let v = Math.multiply(v, 10) + d;
let i = i + 1;
}
return Math.multiply(sign, v);
}
method void setInt(int number) {
var int lastDigit;
if (flag) {
let len = 0;
let flag = false;
}
if (number < 0) {
do Output.printString("Hit");
do Output.println();
do appendChar(45);
let number = -number;
}
let lastDigit = number - Math.multiply(Math.divide(number, 10), 10);
if (number < 10) {
do appendChar(lastDigit + 48);
let flag = true;
} else {
do setInt(Math.divide(number, 10));
do appendChar(lastDigit + 48);
}
return;
}
function char newLine() {
return 128;
}
function char backSpace() {
return 129;
}
function char doubleQuote() {
return 34;
}
}
0 コメント:
コメントを投稿