抱歉,我的英语不好。我使用DCG制作解析树。考试:
Tree = s(np(d(the), n(boy)), vp(v(likes), np(d(the), n(boy))))
我想在Java中将它显示给TreeView。我使用正则表达式但没有成功。
答案 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");
}
}
再见