Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:miw:miw08_ruleruntimeo:swiconfig [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +===== 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 [[http://​www.swi-prolog.org|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:
 +<code prolog>
 +:​-consult('​lib/​Resources/​logtalk/​swi.config'​).
 +:​-consult('​lib/​Resources/​logtalk/​logtalk.pl'​).
 +:​-consult('​lib/​Resources/​logtalk/​libpaths.pl'​).
 +
 +</​code>​
 + ​który pożniej uruchamiamy z Javy przed tworzeniem obiektów LogTalk, w następujący sposób:
 +
 +
 +<code java>
 +
 +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!"​);​
 +}
 +
 +</​code>​
 +
 +Po udanym wykonaniu powyższego kodu jesteśmy już w stanie tworzyć obiekty LogTalk z kodu Javy i wywoływać ich metody :
 +
 +<code java>
 +//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!"​));​
 +</​code>​
 +
 +Pełną treść tego przykładu zamieszczam tutaj [[pl:​miw:​miw08_ruleruntimeo:​logtalkjava]].
pl/miw/miw08_ruleruntimeo/swiconfig.txt · ostatnio zmienione: 2019/06/27 15:50 (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