python support
This commit is contained in:
@@ -72,13 +72,17 @@ add_custom_target( YAP4PY ALL
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${pl_os_library} ${CMAKE_CURRENT_BINARY_DIR}/yap4py/prolog/os
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/setup.py sdist bdist_wheel
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
DEPENDS STARTUP ${dlls} ${PYTHON_SOURCES} ${PROLOG_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/setup.py ${SWIG_MODULE_Py2YAP_REAL_NAME} )
|
||||
DEPENDS STARTUP ${dlls} ${PYTHON_SOURCES} ${PROLOG_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/setup.py ${SWIG_MODULE_Py2YAP_REAL_NAME} )
|
||||
|
||||
|
||||
install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install --no-index -f dist yap4py
|
||||
|
||||
install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install --force --no-index -f dist yap4py
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})"
|
||||
DEPENDS Py4YAP ${CMAKE_BINARY_DIR}/${YAP_STARTUP} ${dlls} )
|
||||
|
||||
install(FILES yapi.yap DESTINATION ${libpl})
|
||||
|
||||
|
||||
|
||||
if (WITH_DOCS AND DOXYGEN_FOUND)
|
||||
|
||||
|
@@ -1,13 +1,26 @@
|
||||
%% @file yapi.yap
|
||||
%% @brief support yap shell
|
||||
%%
|
||||
:- module(yapi, [query/3]).
|
||||
:- module(yapi, [python_query/2,
|
||||
python_ouput/0,
|
||||
yap_query/3]).
|
||||
|
||||
:- use_module( library(lists) ).
|
||||
:- use_module( library(maplist) ).
|
||||
:- use_module( library(rbtrees) ).
|
||||
|
||||
|
||||
%% @pred yap_query(0:Goal, + VarList, +OutStream, - Dictionary)
|
||||
%% @pred yap_query(0:Goal, + VarList, - Dictionary)
|
||||
%%
|
||||
%% dictionary, Examples
|
||||
%%
|
||||
%%
|
||||
python_query( Engine, String ) :-
|
||||
atomic_to_term( String, Goal, VarNames ), writeln(Goal),
|
||||
yap_query( Goal, VarNames, user_error, Dict), writeln(Dict),
|
||||
Engine.bindings := Dict.
|
||||
|
||||
%% @pred yap_query(0:Goal, + VarList, +OutStream, - Dictionary)
|
||||
%% @pred yap_query(0:Goal, + VarList, - Dictionary)
|
||||
%%
|
||||
@@ -24,8 +37,10 @@ yap_query( Goal, VarNames, Stream, Dictionary) :-
|
||||
prolog:yap_query( Goal, VarNames, Dictionary) :-
|
||||
yap_query( Goal, VarNames, user_output, Dictionary).
|
||||
|
||||
constraints(QVs, Goal, Stream, {Dict}) :-
|
||||
constraints(QVs0, Goal0, Stream, {Dict}) :-
|
||||
!,
|
||||
copy_term(Goal0+QVs0, Goal+QVs),
|
||||
writeln(ivs-IVs),
|
||||
term_variables(Goal, IVs),
|
||||
foldl(enumerate, IVs, 0, _Ns),
|
||||
out(QVs, Stream, Dict).
|
||||
@@ -43,7 +58,8 @@ enumerate('$VAR'(A), I, I1) :-
|
||||
|
||||
enum(I, [C]) :-
|
||||
I < 26,
|
||||
!, C is "A" + I.
|
||||
!,
|
||||
C is "A" + I.
|
||||
enum(I, [C|Cs]) :-
|
||||
J is I//26,
|
||||
K is I mod 26,
|
||||
@@ -63,14 +79,24 @@ v2py(v(I0) = v(I0), I0, I) :-
|
||||
I is I0+1.
|
||||
|
||||
output([V=B], S) :-
|
||||
format(S, 'a = ~q~n', [V, B]).
|
||||
!,
|
||||
format(S, '~a = ~q~n', [V, B]).
|
||||
output([V=B|Ns], S) :-
|
||||
format( S, 'a = ~q.~n', [V, B]),
|
||||
format( S, '~a = ~q.~n', [V, B]),
|
||||
output( Ns, S).
|
||||
|
||||
|
||||
bvs([V=B],{V:B}) :-
|
||||
!.
|
||||
bvs([V=B|Ns], (V:B,N)) :-
|
||||
output( Ns, N).
|
||||
:- start_low_level_trace.
|
||||
bvs([V=B], S:B) :-
|
||||
atring_to_atom(V,S),
|
||||
!.
|
||||
bvs([V=B|Ns], (S:B,N) ) :-
|
||||
atring_to_atom(V,S),
|
||||
output( Ns, N).
|
||||
|
||||
python_output :-
|
||||
:= import(sys),
|
||||
open('//python/sys.stdout', append, Output),
|
||||
open('//python/sys.stderr', append, Error),
|
||||
set_prolog_flag(user_output, Output),
|
||||
set_prolog_flag(user_error, Error).
|
||||
|
||||
|
Reference in New Issue
Block a user