質問

SO:expression_evaluator

の承認済みソリューションを参照

否定でも機能するバージョンを誰でも提供できますか?のようなもの

((!(0 or !1) and !((0 or 1 or 1) and !1))

同様に動作する必要があります。

0または1を否定しても問題ないように動作しましたが、グループ全体の否定(括弧の先頭にある!)で動作させることはできません

* expr == '('ブロックでevalから戻った後、tmpを無効にしようとしました。.を呼び出す前に!が見られたが、それは機能しませんでした。

役に立ちましたか?

解決

その回答のコードは少しアドホックです。解析はよく知られた分野であり、発明の必要はありません。そこにある他の答えの1つは、再帰降下解析を検討することを推奨しています。私はその推奨事項を再確認します。

他のヒント

こちらで説明されているアルゴリズムは、単項演算子(オペランドが1つの演算子)を処理できます。 、および関数。

かつて、組み込みシステムのコマンドラインコンソールのシンボリック変数をサポートする完全なC式エバリュエーターの基礎として使用しました。付属のサンプルコードは使用せず、目的に合わせてゼロから作成しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top