如何在DCG中显示解析树

时间:2011-08-11 02:13:59

标签: prolog dcg

抱歉,我的英语不好。我使用DCG制作解析树。考试:

Tree = s(np(d(the), n(boy)), vp(v(likes), np(d(the), n(boy))))

我想在Java中将它显示给TreeView。我使用正则表达式但没有成功。

1 个答案:

答案 0 :(得分:0)

一种简单的方法是使用以下类:

http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/tree/DefaultMutableTreeNode.html

http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html

您可以将此类的实例作为模型插入TreeView中。

现在,根据您使用的Prolog系统,您将在调用Prolog系统后获得解析树的句柄。我们的Prolog系统将使用句柄调用Java。

遍历此句柄,同时为TreeView模型创建节点。您可以在Java中递归编码:

  void prologToTree(DefaultMutableTreeNode root, Prolog term) {
     if ("term is compound") {
             root.setLable("functor of compound");
             for (int i=0; i<"arity of compound"; i++) {
                termArg="argument i+1 of compound";
                rootArg=new DefaultMutableTreeNode();
                prologToTree(rootArg,termArg);
                root.addChild(rootArg);
            }
     } else {
             root.setLabel("text of term");
     }
  }

再见