次の形式(EBNF)の式があります。
<expression> ::= ["("]<base>[")"][{<modifier>"("<expression>")"}]
<base> ::= <logical>[{<modifier><logical>}]
<logical> ::= "1" | "0"
<modifier> ::= "&" | "|"
この形式の文字列の例は次のとおりです。
(1|(1&0))|(1&(1|0))
または、後置記法でこれを取得することもできます。
110&|110|&|
PHPでこれを評価する簡単な方法はありますか?(つまり、この特定の例の結果は次のようになります1
)。eval
セキュリティ上の理由で機能の使用を避けたい。
関数なしでPHPでこれを実現する簡単な方法がない場合eval
、カスタムパーサーを作成するための最良のアプローチは何でしょうか。