質問
の承認済みソリューションを参照
否定でも機能するバージョンを誰でも提供できますか?のようなもの
((!(0 or !1) and !((0 or 1 or 1) and !1))
同様に動作する必要があります。
0または1を否定しても問題ないように動作しましたが、グループ全体の否定(括弧の先頭にある!)で動作させることはできません
* expr == '('ブロックでevalから戻った後、tmpを無効にしようとしました。.を呼び出す前に!が見られたが、それは機能しませんでした。
解決
その回答のコードは少しアドホックです。解析はよく知られた分野であり、発明の必要はありません。そこにある他の答えの1つは、再帰降下解析を検討することを推奨しています。私はその推奨事項を再確認します。
他のヒント
こちらで説明されているアルゴリズムは、単項演算子(オペランドが1つの演算子)を処理できます。 、および関数。
かつて、組み込みシステムのコマンドラインコンソールのシンボリック変数をサポートする完全なC式エバリュエーターの基礎として使用しました。付属のサンプルコードは使用せず、目的に合わせてゼロから作成しました。
所属していません StackOverflow