2012-01-17 5 views

答えて

0

DCGは完全に適しています。しかし、素朴なPrologであるなら、パワーを活用し、実用的なものを実装するために何らかの選択をしなければなりません。 たとえば、可能であれば、DCGをテキストソースに直接適用し、事前のトークナイザは必要ありません。これが適切な場合は、実際のタスクに依存します。それはここで大丈夫だとしましょう。それは、

:- [library(http/dcg_basics)]. 

conditional(if_then_else(Cond, Then, Else)) --> 
    blanks, "if", 
    blanks, bool_expression(Cond), 
    blanks, "then", 
    blanks, statement(Then), 
    blanks, "else", 
    blanks, statement(Else). 

は非常に簡単ではありません。そして、私たちのDCGは、利用可能なヘルパライブラリを使用して、SWI-Prologで実装されるだろうか?

このother answerは、優先順位を考慮して式を解析(および評価)する方法を示しています。ブール演算子で簡単に拡張することができます。ただ優先順位を付けてください。声明は、黙示的に割り当てを許可し、条件付きで再発する。

あなたは同じ性質を持ついくつかの他の生産に「横並び」を表示された場合は、おそらく「空試合の生産 は、いくつかの非効率性を導入する可能性であること、空白 // 0の使用に注意を払う必要があります。

bool_expression // 1、文// 1が定義されている場合は、パーサが呼び出すことができます。

..., 
phrase(conditional(C), " if 1 < 2 then a = 1 else a = 0 "), 
... 

とCは...

+0

感謝を構文木が含まれています!私は間違いなくこれを試してみましょう! – user1059303

関連する問題