python、Java與prolog的整合

底下會有兩個範例,第一個示範python、Java與prolog的整合,第二個示範python、Java與Flex的整合,前置設定如之前的Java與prolog整合之環境相同。
 
環境設定,為簡化起見,將jint386w.dll、INT386W.OVL、PRO386W.EXE、FLEX.PC與int386w.DLL複製一份到你安裝Java JDK的bin中,環境設定準備就緒。
 

python、Java與prolog的整合


prolog程式如下:(hello.pl)
run:-
write('hello').

程式碼說明:這是一個標準的prolog程式,其目的只是列印hello的字串

Java程式如下:(Jprolog.java)
public class Jprolog
{
public static String runProlog(){
String answer;
Int386w flex = new Int386w();
flex.loadProlog("");
/*下面三行程式是命令prolog程式將hello.pl程式碼load進去,並使用callGoal()將hello.pl組譯完成*/
flex.initGoal("ensure_loaded('hello.pl'). ");
flex.callGoal();
flex.exitGoal();
flex.initGoal("run. ");
answer=flex.callGoal();
flex.exitGoal();
return answer;
}
public String testOut(String s){
return s;
}
}

程式碼說明:
這是一個Java的程式,裡面包含兩個函數testOut(String s)這是一個測試函數,測試IO功能是否正常,當你傳入一個字串,它會回傳你傳入的那個字串
runProlog()這個函數是在載入剛剛所寫的Prolog並回傳其結果,Int386w是一個資料型態,主要是與prolog的dll檔做連結,並提供函數方便使用,內容請參閱之前的說明

Jpython程式如下
import Jprolog
prolog=Jprolog()
prolog.testOut("Show me test!!")
prolog.runProlog()
print("Everything is OK.")

程式碼說明:
將上面的Jprolog.java利用javac產生Jprolog.class,並放在執行路徑下,import Jprolog這一行的意思就是要使用Jprolog.class,prolog.testOut("Show me test!!")這一行是在測試java程式執行是否正常

python、Java與Flex的整合


Flex程式如下:(hello.ksl)
action run;
write('hello').

程式碼說明:這是一個標準的Flex程式,其目的只是列印hello的字串

Java程式如下:(Jprolog.java)
public class Jprolog
{
public static String runProlog(){
String answer;
Int386w flex = new Int386w();
flex.loadProlog("");
flex.initGoal("ensure_loaded(prolog(flexserv)). ");
flex.callGoal();
flex.exitGoal();
/*下面三行程式是命令prolog程式將hello.pl程式碼load進去,並使用callGoal()將hello.pl組譯完成*/
flex.initGoal("ensure_loaded('hello.pl'). ");
flex.callGoal();
flex.exitGoal();
flex.initGoal("run. ");
answer=flex.callGoal();
flex.exitGoal();
return answer;
}
public String testOut(String s){
return s;
}
}

程式碼說明:
這是一個Java的程式,裡面包含兩個函數testOut(String s)這是一個測試函數,測試IO功能是否正常,當你傳入一個字串,它會回傳你傳入的那個字串
runProlog()這個函數是在載入剛剛所寫的Prolog並回傳其結果,Int386w是一個資料型態,主要是與prolog的dll檔做連結,並提供函數方便使用,內容請參閱之前的說明
flex.initGoal("ensure_loaded(prolog(flexserv)). ");這行程式的目的在載入FLEX.pc請確定你載入的路徑

Jpython程式如下
import Jprolog
prolog=Jprolog()
prolog.testOut("Show me test!!")
prolog.runProlog()
print("Everything is OK.")
同之前的測試,看看執行是否正常

大致上應該可以執行,但是可能還需研究一下中文碼的問題,因為字碼經過這麼多程式的包裝,不知到最後是以Unicode存在還是UTF-8,可能還需探討一下

    全站熱搜

    CJY0503 發表在 痞客邦 留言(0) 人氣()