私はコンパイラのバックグラウンドを持っていないので、これがその領域のcommmonものなのかどうかわかりません。このような表現を解析する標準的なテクニックはありますか?私は、スタックベースの評価に頼る必要がある場合、私はわからないこのタイプの式はどのように解析するのですか?
((A+B=1) AND (C+D=1) AND ((P+Q=1) OR (K=1)) AND ((Q=1) AND (R=2)))
:
And
A + B = 1
C + D = 1
Or
P + Q = 1
K = 1
And
Q = 1
R = 2
は次のように解析されるべき(例えば、タブは、深さを示しますか)?私は現在、1つを試しています。もし私がそれを稼働させることができれば、動作するコードを投稿します。
これを達成するための簡単な方法についてのご意見はありますか?
コンテキストとは何ですか?それは "安全"でなければならないのですか?あるいは構文を少し変更して、 'eval()'などでPythonを使うことができますか?たとえば、 '((A + B == 1)と(C + D == 1))'はPython構文です。 –
残念ながら、私は入力を変更することはできません。私はいくつかのXMLファイルを解析しており、式自体を文字列に解析しています。どのように私は文字列をフォーマットするのですが、評価の順序とすべてはまだケアが必要です。また、何かを評価するのではなく、文字列を印刷したいと思っています。 – Legend
あなたは木の表現を解析していますか?それらの変数の数値を下にして評価しますか? – Adrian