C#でeval()!!

気分でC#を使いeval()を作ってみたくなってやってみましたー。その発端はついったーでした。@arlez80(あるる先生)がC&C++でeval()を作ってるのを見て、「あ、これ面白そう」とおもってつい衝動でC#に書き直してしまった。でも反省はしていない。

実行ファイルとソース一式のダウンロードはこちらから。.NET Framework 4必衰です。

以下ちょっとした説明。


仕様

  • 小数は扱えません。小数が出るような計算が発生した場合はその場で切り捨てられます
  • つまりのところ、int型の範囲内の計算しかできません。
  • すなわち文字列も扱えません。
  • これ解消するには型を認識しなければ…

既知のバグ

  • 関数の前に符号をつけると無視されます ex: -abs(-5)
  • + とか明らかに間違ってる式をぶち込むとそのまま解釈しようとするため「スタックが空です」というエラーになります。つまり構文チェックしてなくて手抜きです。
  • 他にもきっといろいろバグはあります^^;



利用可能なコマンド一覧

コマンド 説明
exitプロンプトを閉じます
testeval()関数をテストします
/? または Helpこのプログラムについての説明を表示します
viewFuncs利用可能な関数を列挙します
cls画面をクリアします

利用可能な演算子と関数一覧

演算子一覧
<<+(
>>-)
&*,
|/min(a,b)
^%max(a,b)
abs(a)
perm(a,b)

コメント

このブログの人気の投稿

初めてのC# -メモ帳でも作ってみる?-

【ファイル偽装】zipとしてもjpgとしても扱えるファイル

Javaにおいて引数付でスレッドを走らせる