私はプロローグに助けが必要です。これはかなり新しいものです。私は小さな算術計算機を設計しなければならない。評価される式は、例えば、リストとして表現されます。算術計算
?-evaluate([2,+,4,*,5,+,1,*,2,*,3],R).
私は例えば、私のリストを変換するために、構文解析と呼ばれる2つの述部1を設計することにより、これを行うにしようとしています:
?-parse([1,+,2,*,3],PF).
PF=[+,1,[*,2,3]]
と別1つは新しい表現を評価する。
?-evpf([+,1,[*,2,3]],R).
R=7
私は最初の部分に問題があります。コードに手伝ってもらえますか?
ここでの主な課題は、少なくともDCG技術を適用した後で、「中置演算子」表記から「接頭辞演算子」形式に変換することです。これを正しく行うには、演算子の優先順位の規則を指定する必要があります。 *は+よりも優先順位が高いですか?操作は右から左の順序で行われますか?いずれの可能性も、リストを変換するあなたの単一の例(上記の 'PF 'を参照)と一致しています。あなたは何のルールを思いついたのですか? – hardmath