現在、文字列化した数式を判別するモジュールを制作しています。
その第一段階として、演算子と括弧と優先順位を実装したモジュールを作成しました。
そのモジュールのテスト用プログラムをHSP開発wikiに置いたので、皆様にテストしていただきたく思っています。
http://hspdev-wiki.net/?Math%2F%CA%B8%BB%FA%CE%F3%B2%BD%A4%B7%A4%BF%BF%F4%BC%B0%A4%CE%C8%BD%CA%CC
テスト用プログラムは、一応HSPの数式把握とほぼ同じ挙動をするように作ったつもりですが、以下の点に注意してください。
『e+』と『e-』は未実装です。
現時点では四則に剰余算、and,or,xor、ビットシフトに対応してるはずです。
使える演算子は[Lv1:&,&&,|,||,^]、[Lv2:=,==,!,!=,<,<=,>,>=]、[Lv2.5:<<,>>]、[Lv3:+,-]、[Lv4:*,/,\]です。
演算優先度はHSPと同じく『論理<比較<ビット<加減<乗除余』の通りです。
同レベル同士の演算子は左に優先権が付くようにしてあります。
ビットシフトは試してみれば分かる通り加減より弱く、比較より強いようなので、Lv2.5相当としました。
文字列はHSPの通り『"』で囲えば判別してくれるはずです。
式中の半角空白とタブ、改行は無視されます。改行は前行末に『\』を挟まずとも、勝手に無視されるので自由に入れてみてください。
括弧にも対応しているはずですが、括弧が非対称だとしてもエラーなどは返してくれないはずなので注意してください。
元として認められるのは文字列、小数値、整数値の3種類のみです。『"』で囲まれている元は文字列、式中に『.』がある元は小数値、それ以外は整数値として扱われているはずです。
ですので『"』で囲まれていない『ABC』等の値は整数値の『0』として読み込まれます。『123』とかだと整数値の『123』になるかもしれません。
『@』と『ぎぇぴー』はモジュール内部で特別な意味を与えてあるので使わないでください。
問題があるようでしたら、ここか開発wiki側のコメント欄に記載してくださると助かります。皆様のご協力をお願いいたします。
☆件のモジュール開発用のHSP開発wiki
http://hspdev-wiki.net/?Math%2F%CA%B8%BB%FA%CE%F3%B2%BD%A4%B7%A4%BF%BF%F4%BC%B0%A4%CE%C8%BD%CA%CC
☆件のモジュールのテスト用プログラム
http://hspdev-wiki.net/?plugin=attach&refer=Math%2F%CA%B8%BB%FA%CE%F3%B2%BD%A4%B7%A4%BF%BF%F4%BC%B0%A4%CE%C8%BD%CA%CC&openfile=%CA%B8%BB%FA%CE%F3%B7%D7%BB%BB%BB%EE%B8%B3%CD%D1%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8tranche1.exe