Как отобразить дерево разбора в DCG - PullRequest
1 голос
/ 11 августа 2011

Извините, мой английский не очень хороший. Я использую DCG для создания дерева разбора.Экзамен:

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

Я хочу отобразить его в TreeView на Java.Я использую Regex, но у меня ничего не получается.

1 Ответ

0 голосов
/ 08 декабря 2011

Простой подход заключается в использовании следующего класса:

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");
     }
  }

Пока

...