HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0925
木村文字列化した数式を解析するモジュールのテストのお願い4解決


木村

リンク

2011/9/25(Sun) 14:35:02|NO.41692

 現在、文字列化した数式を判別するモジュールを制作しています。
 その第一段階として、演算子と括弧と優先順位を実装したモジュールを作成しました。
 そのモジュールのテスト用プログラムを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



この記事に返信する


にゃんちゃん

リンク

2011/9/25(Sun) 22:29:55|NO.41701

おお…これを使うと、テキストに書いた内容だけでADV作っちゃうとかできるわけなのでしょうか?



木村

リンク

2011/9/25(Sun) 23:04:05|NO.41704

>>にゃんちゃん氏
>テキストに書いた内容だけでADV作っちゃうとかできるわけなのでしょうか?

 将来的には可能になると思います。ただ、その為にはHSP内部の変数にアクセスできる必要があります。
 なので、現時点(Tranche1)では、実はあまり意味がありません。ADVやRPGのエディタの部品として価値が出てくるのは、最低でも変数が実装されるTranche3からでしょう。

 ですが、式中の変数を適切に処理するためには、まず式を正しく処理する仕組みが無いといけません。
 Tranche1はその式の処理の仕組みだけを優先して作ったものです。
 当方としてもバグチェックはしてあるつもりですが、この段階でバグがあると、より上位の段階での修正が面倒になる事が目に見えているので、敢えて皆様のお手を煩わせる事にしました。

 近々、括弧『(...)』を拡張して、『func(p1,p2...pn)』の形で定義される関数を実装したTranche2を、更に関数『func(p1,p2...pn)』を拡張して『var(p1)』の形で定義できる変数を実装したTranche3を公開する予定です。
 ですので、その際にはまた試験テストに参加していただけると嬉しく思います。



木村

リンク

2011/9/28(Wed) 06:38:12|NO.41788

 第2段階の初稿が完成したので、テストして頂けると幸いです。
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
 バグや不具合の報告が主な要望ですが、他に実装した方が便利そうな関数の提案もしてくださると嬉しいです。
 以下は説明

 主な更新点は関数20種の実装です。func(a0,a1,a2,,,an)の形で入力できるはずです。

 実装した関数は
・文字列返却型関数[strmid,strtrim]
・小数値返却型関数[expf,logf,sqrt]
・整数値返却型関数[vartype,strlen,instr]
・整数小数変動型関数[abs,rnd,limit,min,max]
・三角関数(小数値返却)[atan,sin,cos,tan]
・型変換関数[str,double,int]
……の、20種類です。

 minとmaxはExcelの同名関数と同じ挙動をするはずです。
 整数小数変動型は関数の第1引数の方に応じて返り値の種類が変わります。第1引数が小数なら小数値を、それ以外なら整数値を返却します。

 原則、HSPの標準関数と同名の関数は、処理も名前引用元の関数を利用しています。
 が、limitとabsは第1引数が小数の場合はlimitfとabsfを、rndは整数と小数のどちらも利用できるようにhspdaのrndf_geti系列を利用しています。

☆件のモジュール開発用の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%C8tranche2.exe



木村

リンク

2011/10/5(Wed) 08:11:55|NO.42026

 第3段階の初稿が完成したので、テストして頂けると幸いです。
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
 バグや不具合の報告が主な要望ですが、他に実装した方が便利そうな機能の提案もしてくださると嬉しいです。
 以下は説明

 主な更新点は代入式の実装です。変数 = 式の形で入力できるはずです。

 変数に使える文字は半角英大小文字と半角数字、そして『_』の63種類に加えShift_JISで定義されている全角文字全てです。

 HSPと同様に変数の名前の頭に半角数字を使う事はできません。そして、HSPと違い、大文字と小文字が区別されます。

 代入式の区切りはHSPと同じく『:(半角コロン)』と『\n(改行)』で行っています。

 代入は『=』や『==』のような通常代入の他に四則剰余算の特殊代入を実装しています。『+』や『+=』や『+==』のように、演算子+[=]×0〜2の形の特殊代入を『+-*/\\』の四則余について実装しています。

 エラーを吐く所までは実装していないので、不正な入力をしても普通におかしな値を返してしまいます。

 現時点(Tranche3)で配列変数はまだ実装していません。

 変数内容はHSPの実際の変数の内容を変えているわけではありません。

 あらかじめ、Varlist型という独自の変数状態を記憶するモジュール変数を定義しておき、そのモジュール変数の内部状態を変更する事で擬似的に変数っぽい挙動をさせています。

 また『0x----』や『$----』のような16進数表記や、引用符を使った『'-'』のようなメモリ値表記も実装しました。

☆件のモジュール開発用の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

☆件のモジュールのテスト用プログラム
(今回からhspda.dllを使う為、単独ファイルでの配布ではなくdllを含めた圧縮ファイル形式で配布します)
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=%BB%EE%B8%B3%CD%D1%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0Tranche3.zip



ONION software Copyright 1997-2023(c) All rights reserved.