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,可能還需探討一下
全站熱搜
留言列表