四則演算式の字句解析、構文解析のプログラミングをしました。プログラムID BQJ710-0 で「発行」しました。
字句解析のサブルーチンは Lex_ で、構文解析のサブルーチンは Parse_ で始まるように命名しました。囲碁プログラムの棋譜を解析するサブルーチンを参考にしました。サブルーチンによっては非常に簡単で、EBNFでの
数字 = 整数 | 実数
という定義は次のように書き表せます。実数を先に確かめるのは実数の中に整数が含まれているからです。
Sub Parse_GetNumber Parse_GetReal() If bMatched = "False" Then Parse_GetInteger() EndIf EndSub
キー入力の部分は「どうぶつしょうぎ」のマウス入力のサブルーチンを参考に作りました。汎用的(応用が利くよう)に作ったサブルーチンは他のプログラムにも流用が利き、開発の効率が高まります。
Small Basicの変数は有効桁数が長く、1/3 なら 0.3333333333333333333333333333 と小数点以下28桁になります。これを12桁に表示するため、スクロールするようにしたのですが、ちょっと使いづらいですね。
この問題を解決するには結構手間がかかりそうです。
字句解析、構文解析の部分は完成したので、電卓プログラムはこれで終わりとします。将来的にはCASIO FX-700Pそのものをプログラムできたら面白いかな、と考えているのですが、これは他の言語を使ったほうがよさそうです。
次回は色を題材にしてみようと思います。
(つづく)