概要
mindが、謎なので調べてみた。
練習問題、やってみた。
練習問題
真理値表を表示する、インタープリタを書け。
サンプルコード
コードは 40個の 文字列。
コード数は 変数。
in数は 変数。
out0数は 変数。
out1数は 変数。
wは 構造体
セルは 変数
列は
8個の セル
全体は
8個の 列
。
アセンブラとは
コード(コード数)に 入れ
コード数に 1を 加えて コード数に 入れる
。
RUNとは
文字列1は 文字列
単語1は 文字列
単語2は 文字列
単語3は 文字列
単語4は 文字列
数1は 変数
数2は 変数
kは 変数
lは 変数
合否は 変数
nは 変数
wを クリア
nに 1を 入れ
ここから
もし nが コード数より 大きい
ならば
終り
つぎに
コード(n)を 文字列1に 入れ
文字列1から 単語切り出し 単語1に 入れ
文字列1から 単語切り出し 単語2に 入れ
文字列1から 単語切り出し 単語3に 入れ
文字列1から 単語切り出し 単語4に 入れ
もし 単語1が 「stop」に 等しい文字列
ならば
打ち切り
つぎに
もし 単語1が 「make」に 等しい文字列
ならば
つぎに
もし 単語1が 「in」に 等しい文字列
ならば
セル(1,1)に 0を 入れ
セル(1,2)に 0を 入れ
セル(1,3)に 1を 入れ
セル(1,4)に 1を 入れ
セル(2,1)に 0を 入れ
セル(2,2)に 1を 入れ
セル(2,3)に 0を 入れ
セル(2,4)に 1を 入れ
つぎに
もし 単語1が 「out」に 等しい文字列
ならば
つぎに
もし 単語1が 「and」に 等しい文字列
ならば
単語4を 数値変換し 数1と 合否に 入れる
4を 回数指定して
回数を lに 入れる
セル(1, l)と セル(2, l)を andして セル(数1, l)に 入れ
繰り返す
つぎに
もし 単語1が 「or」に 等しい文字列
ならば
単語4を 数値変換し 数1と 合否に 入れる
4を 回数指定して
回数を lに 入れる
セル(1, l)と セル(2, l)を orして セル(数1, l)に 入れ
繰り返す
つぎに
もし 単語1が 「xor」に 等しい文字列
ならば
単語4を 数値変換し 数1と 合否に 入れる
4を 回数指定して
回数を lに 入れる
セル(1, l)と セル(2, l)を xorして セル(数1, l)に 入れ
繰り返す
つぎに
もし 単語1が 「disp」に 等しい文字列
ならば
「1 2 3 4」を 一行表示し
4を 回数指定して
回数を kに 入れる
4を 回数指定して
回数を lに 入れる
セル(l, k)を 数値表示し
「 」を 表示し
繰り返す
改行し
繰り返す
つぎに
nに 1を 加えて nに 入れる
繰り返す
。
メインとは
コードを クリアし
1を コード数に 入れ
「make 4」を アセンブラし
「in 1 2」を アセンブラし
「out 3 4」を アセンブラし
「and 1 2 3」を アセンブラし
「xor 1 2 4」を アセンブラし
「disp」を アセンブラし
「stop」を アセンブラし RUNする。
実行結果
>sinri
1 2 3 4
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
アセンブラの説明
- make 4
4列の真理値表を宣言。 - in 1 2
入力は、1列と2列 - out 3 4
出力は、3列と4列 - and 1 2 3
1列と2列をandして3列に - xor 1 2 4
1列と2列をxorして4列に - disp
真理値表を印字
以上。