気分でC#を使いeval()を作ってみたくなってやってみましたー。その発端はついったーでした。
@arlez80(あるる先生)がC&C++でeval()を作ってるのを見て、「あ、これ面白そう」とおもってつい衝動でC#に書き直してしまった。でも反省はしていない。
実行ファイルとソース一式のダウンロードは
こちらから。
.NET Framework 4必衰です。
以下ちょっとした説明。
仕様
- 小数は扱えません。小数が出るような計算が発生した場合はその場で切り捨てられます
- つまりのところ、int型の範囲内の計算しかできません。
- すなわち文字列も扱えません。
- これ解消するには型を認識しなければ…
既知のバグ
- 関数の前に符号をつけると無視されます ex: -abs(-5)
- + とか明らかに間違ってる式をぶち込むとそのまま解釈しようとするため「スタックが空です」というエラーになります。つまり構文チェックしてなくて手抜きです。
- 他にもきっといろいろバグはあります^^;
利用可能なコマンド一覧
| コマンド | 説明 |
| exit | プロンプトを閉じます |
| test | eval()関数をテストします |
| /? または Help | このプログラムについての説明を表示します |
| viewFuncs | 利用可能な関数を列挙します |
| cls | 画面をクリアします |
利用可能な演算子と関数一覧
| 演算子一覧 |
| << | + | ( |
| >> | - | ) |
| & | * | , |
| | | / | min(a,b) |
| ^ | % | max(a,b) |
| abs(a) |
| perm(a,b) |
コメント
コメントを投稿