ブログトップ

電子工作やってみたよ

人間コンパイラでHP電卓

前回思いついた人間コンパイラ手順書を作ってみました。
最初はBASICで考えて、あとは機械的に置き換えていくだけです。
構造化のループ処理のみですが、これさえあれば、楽になるのでないですか。
使い込んでいくうちに良くなると思います。
最初 BASICで書いてあります。
次に 同等のものを HP電卓の逆ポーランド法でかきました。

*************************************
if  ~ then ~ endif

if X=0 then ----------- Xがゼロならば以下を実行
A = 1 -------------- Xがゼロの時実行する
endif ------------------ エンド


X キ 0 ------------Xをチェック
GTO 5 ------------Xがゼロならば以下を実行
1 ------------------ループ内処理
STO 1 -------------ループ内処理
LBL 5 -------------エンド

*************************************
For ~ Next

for i = 1 to 3
  print i
next



3 ---------ループ回数の3をセット
STO 0 ----同上
LBL 5 ------ループ処理ルーチンの先頭
RCL 0------ループ内処理
PAUSE------ループ内処理
DSZ---------カウンターを1減算してゼロでないならLBL 5へ戻る
GTO 5 -----処理のエンド

*************************************
while ~ wend

a=0 ---------------初期値をゼロとする
while( a<7) -------aが7以下の時ループを回す
a=a+1 ------------aを1つインクリメントする
print a -------------aをプリントする
wend --------------ループの終わり



STO 3
LBL 1 --------------ループの先頭
1
STO +3 ------------カウンターを1つインクリメント
----------------------ここにループ内処理を置く
RCL 3 --------------カウンターを表示する
PAUSE --------------カウンターを表示する
7 --------------------比較する数値をセット
X > Y ---------------比較する
GTO 1 --------------未到達なら LBL 1 へ行く





c0335218_06050533.jpg

















トラックバックURL : https://telmic.exblog.jp/tb/26104200
トラックバックする(会員専用) [ヘルプ]
Commented by すがわら at 2016-11-01 10:14 x
古い教科書だと、コンパイラ設計の基本は式をRPNで表せるように変換するってことが構文解析の肝と書かれていますで、RPNとコンパイラってのは相性が良いのでしょう。最近の技法についてはよくわかっていないのですが... MSの.Netframeworkは古い中間言語実行式に近いので、また違うのかもしれません。
Commented by telmic-gunma at 2016-11-01 19:34
> すがわらさん
ありがとうございます。
私が9月に書いた「カッコのない国」の本もそのようなことが書いてありましたね。
「数式通り」の電卓は、電卓がカッコなどの対応を解析しながらデータと命令を作業手順通りにスタックに押し込んでいって最後は一直線に作業するということなんでしょうね。
ここの所に人間の思っていたことと、コンピューター側の解釈の違いが出てきてよく話題になる式がありますよね。
しかし逆ポーランド法は人間が式の解析と変換を行いカッコを取り外していますからキー操作(命令)と計算が1対1に対応し矛盾が入り込むすきがないはずです。
私はここの所が最高に好きです。私ごとですが数学の勉強するにもこうでなくてはだめじゃないでしょうか。 
多くのHP電卓病の人達も同じだと思います。
名前
URL
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

by telmic-gunma | 2016-10-30 17:46 | HP電卓 | Trackback | Comments(2)