0

これが木を表すいくつかのグラマです

<tree> -> *
<tree> -> (<tree><tree>)

ここで、括弧内の*平均leafといくつかの木は、息子が括弧内の木であるという根を表します。そのグラマをdcgに書き直して、そのツリーのabstracツリーを作成するセマンティックアクションを追加する必要があります。また、アイデアleaf/0や ソースのnode/2例として、感謝しています。node(node(leaf,leaf),node(leaf,leaf))

4

1 に答える 1

1

これは私のSWI-Prologで機能します:

leaf_rule(leaf) --> "*".
tree_rule(X) --> leaf_rule(X), !.
tree_rule(node(X,Y)) --> "(", tree_rule(X), tree_rule(Y), ")".

文字列を解析するには、次のようにphrase述語を呼び出す必要があります。

phrase(tree_rule(X), "((**)*)", Rest).

Prologは、文字列からのツリーの抽象的な表現でXを統合します。

于 2012-04-01T20:36:13.110 に答える