私は、インフィックスをプレフィックスに変換し、十分な量の算術演算子と論理演算子に対応し、適切な Python 実装でそのプロパティを気にする Python の実装を探していましたが、あまり運がありませんでした。具体的には、C プログラムの条件節に現れる演算子に興味があります。a > 0 && b > 1
(たとえば、接頭辞に変換されます。
私はまだPythonの初心者なので、誰かが私に実装やこれに関するヒントを提供してくれれば幸いです。
参照を失ったインターネット周辺の実装を見つけました(以下)が、より単純な演算子のみを気にします。私はこのバージョンでこれを行う方法について少し無知であり、すべての演算子が既に含まれているバージョンを誰かが知っている場合は、誤って演算子が無視されないようにしてください.
このような実装では、括弧も考慮する必要があります。
詳細が必要な場合はコメントしてください!
ありがとうございました。
def parse(s):
for operator in ["+-", "*/"]:
depth = 0
for p in xrange(len(s) - 1, -1, -1):
if s[p] == ')': depth += 1
if s[p] == '(': depth -= 1
if not depth and s[p] in operator:
return [s[p]] + parse(s[:p]) + parse(s[p+1:])
s = s.strip()
if s[0] == '(':
return parse(s[1:-1])
return [s]