Konfiguracja SWI-Prolog do LogTalk'a

Aby utworzyć, skompilować i załądować do pamieci obiekty LogTalk'a konieczne jest wcześniejsze skonfigurowanie używanego kompilatora Prolog'a. Na potrzeby tego projektu zakładam, że jest nim SWI-Prolog, jakkolwiek jeśli wierzyć dokumentacji LogTalk'a to jest on w pełni kompatybilny z większościa innych kompilatorów Prolog'a. Aby zintegrować LogTalk'a z SWI: należy wykonać predykat consult na trzech plikach, które można znaleźć w katalogu instalacyjnym LogTalk'a :

  • configs/swi.config - ustawia zmienne i konfiguruj srodowisko Prologa
  • complier/logtalk.pl - laduje kompilator LogTalka
  • libpaths/libpaths.pl - ustawia sciezki do bibliotek standardowych LogTalka

chyba najwygodniej jest sporządzić sobie plik startowy:

:-consult('lib/Resources/logtalk/swi.config').
:-consult('lib/Resources/logtalk/logtalk.pl').
:-consult('lib/Resources/logtalk/libpaths.pl').

który pożniej uruchamiamy z Javy przed tworzeniem obiektów LogTalk, w następujący sposób:

JPL.setDefaultInitArgs(
new String[] {
		"pl",
		"-f", "none",
		"-g", "set_prolog_flag(debug_on_error,false)",
		"-q",
		"-nosignals" 
		}
			);
 
Query q = new Query("['lib/logtalkLoad.pl'].");
 
if (!q.hasSolution()) 
{
		RuntimeException e = new RuntimeException("error loading logtalk");	
}
else 
{
		System.out.println("Hurray!");
}

Po udanym wykonaniu powyższego kodu jesteśmy już w stanie tworzyć obiekty LogTalk z kodu Javy i wywoływać ich metody :

//utworznie instancji obiektu logTalkControler
Query loadControler = new Query("logtalk_load",
					new Term[]{
					new Atom("logTalkControler")
						}
			);
//wywolanie metody testValue obiektu logTalkControler
Query askLgt = new Query("logTalkControler::testValue(valueToTest).");
System.out.println("Is 'a' a proper TestValue?:" 
				+ (askLgt("testValue", "a")?"YES":"NO!"));

Pełną treść tego przykładu zamieszczam tutaj logtalkjava.

pl/miw/miw08_ruleruntimeo/swiconfig.txt · ostatnio zmienione: 2017/07/17 08:08 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0