diff --git a/C/yap-args.c b/C/yap-args.c index 439ebfc64..19fd28ee3 100755 --- a/C/yap-args.c +++ b/C/yap-args.c @@ -211,7 +211,7 @@ static bool load_file(const char *b_file USES_REGS) { YAP_CompileClause(t); } yap_error_descriptor_t *errd; - if ((errd = Yap_GetException(LOCAL_ActiveError))) { + if ((errd = Yap_GetException(LOCAL_ActiveError)) && (errd->errorNo != YAP_NO_ERROR)) { fprintf(stderr, "%s:%ld:0: Error %s %s Found\n", errd->errorFile, (long int)errd->errorLine, errd->classAsText, errd->errorAsText); } @@ -327,7 +327,6 @@ static void Yap_set_locations(YAP_init_args *iap) { // --_not useful in Android, WIN32; /// -- DESTDIR/ in Anaconda /// -- /usr/locall in most Unix style systems -#if 0 Yap_ROOTDIR = sel( is_dir, NULL, iap->ROOTDIR, getenv("YAPROOTDIR"), @@ -427,7 +426,6 @@ const char * Yap_PLBOOTDIR = sel( is_dir, Yap_PLDIR, join(Yap_PLBOOTDIR, "/boot.yap"), #endif EOLIST); -#endif /// STARTUP: where we can find the core Prolog bootstrap file Yap_OUTPUT_STARTUP = sel( is_wfile, Yap_AbsoluteFile(".",false), iap->OUTPUT_STARTUP, @@ -440,14 +438,16 @@ EOLIST, EOLIST); Yap_INPUT_STARTUP = - sel( is_wfile, Yap_DLLDIR, iap->INPUT_STARTUP, + sel( is_file, Yap_DLLDIR, iap->INPUT_STARTUP, + "startup.yss", #if __ANDROID__ EOLIST, #else join(getenv("DESTDIR"), YAP_INPUT_STARTUP), #endif - "startup.yss", join(Yap_DLLDIR, "/startup.yss"), + "/usr/local/lib/Yap/startup.yss", + "/usr/lib/Yap/startup.yss", EOLIST); if (Yap_ROOTDIR) diff --git a/packages/myddas/pl/CMakeLists.txt b/packages/myddas/pl/CMakeLists.txt index c3c71e0a5..09320f558 100644 --- a/packages/myddas/pl/CMakeLists.txt +++ b/packages/myddas/pl/CMakeLists.txt @@ -13,9 +13,13 @@ set(MYDDAS_DRIVERS ) set(MYDDAS_DBMS sqlite3 postgres odbc) +if (ANDROID) set (MYDDAS_PL_OUTDIR ${YAP_APP_DIR}/src/generated/assets/Yap ) + else() + set (MYDDAS_PL_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}) + endif() get_property(MYDDAS_FLAGS GLOBAL PROPERTY COMPILE_DEFINITIONS) -foreach (filename in ${MYDDAS_YPP}) +foreach (filename ${MYDDAS_YPP}) get_filename_component(base ${filename} NAME_WE) set(base_abs ${MYDDAS_PL_OUTDIR}/${base}) set(outfile ${base_abs}.yap) @@ -24,7 +28,7 @@ foreach (filename in ${MYDDAS_YPP}) ) set_source_files_properties(outfile PROPERTIES GENERATED TRUE) endforeach () -foreach (dbms in ${MYDDAS_DBMS} ) +foreach (dbms ${MYDDAS_DBMS} ) set(outfile ${MYDDAS_PL_OUTDIR}/myddas_${dbms}.yap) execute_process( COMMAND ${CMAKE_C_COMPILER} -D${dbms} -x c -E -P -w ${CMAKE_CURRENT_SOURCE_DIR}/myddas_driver.ypp -o ${outfile} @@ -35,6 +39,6 @@ foreach (dbms in ${MYDDAS_DBMS} ) endforeach() set( MYDDAS_YAP ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/sqlitest.yap ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite3/chinook.db) -#add_to_group(MYDDAS_YAP pl_library ) + add_to_group(MYDDAS_YAP pl_library ) file(INSTALL ${MYDDAS_YAP} DESTINATION ${MYDDAS_PL_OUTDIR} ) diff --git a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap index 4b4be4e88..09f21f89b 100644 --- a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap +++ b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap @@ -42,7 +42,7 @@ jupyter_cell(Caller, _, Line ) :- catch( python_query(Query,Line), error(A,B), - system_error(A,B) + (writeln(A,B),system_error(A,B)) ). restreams(call) :- diff --git a/pl/attributes.yap b/pl/attributes.yap index 1b53282b4..1a1ff8aec 100644 --- a/pl/attributes.yap +++ b/pl/attributes.yap @@ -165,7 +165,7 @@ prolog:copy_term(Term, Copy, Gs) :- -> Gs = [], copy_term(Term, Copy) ; findall(Term-Gs, - '$attributes':residuals_and_delete_attributes(Vs, Gs, Term), + attributes:residuals_and_delete_attributes(Vs, Gs, Term), [Copy-Gs]) ). diff --git a/pl/top.yap b/pl/top.yap index f509bd134..dd5a3149c 100644 --- a/pl/top.yap +++ b/pl/top.yap @@ -494,6 +494,7 @@ write_query_answer( Bindings ) :- '$write_goal_output'(G1, First, NG, Next, IG), '$write_vars_and_goals'(LG, Next, IG). + '$write_goal_output'(var([V|VL]), First, [var([V|VL])|L], next, L) :- !, ( First = first -> true ; format(user_error,',~n',[]) ), format(user_error,'~a',[V]), @@ -513,13 +514,12 @@ write_query_answer( Bindings ) :- G = [_|_], !, % dump on string first so that we can check whether we actually % had any output from the solver. - term_to_string( G, String), + format(string(String),Format,G), ( String == `` -> % we didn't IG = NG, First = Next ; % we did - ( First = first -> true ; format(user_error,',~n',[]) ), format(user_error, '~N~s', [String]), NG = [G|IG] ). diff --git a/pl/undefined.yap b/pl/undefined.yap index d2125e996..5c58a7f48 100644 --- a/pl/undefined.yap +++ b/pl/undefined.yap @@ -103,28 +103,39 @@ undefined_query(G0, M0, Cut) :- '$pred_exists'(unknown_predicate_handler(_,_,_,_), user), '$yap_strip_module'(M0:G0, EM0, GM0), user:unknown_predicate_handler(GM0,EM0,M1:G1), - !, - expand_goal(M1:G1, MG). -'$undefp_search'(MG, FMG) :- - expand_goal(MG, FMG). + !. +'$undefp_search'(M0:G0, M:G) :- +'$get_undefined_predicates'(G, M0, G0, M), !. :- abolish('$undefp'/2). % undef handler -'$undefp'([M0|G0], Action) :- +'$undefp'([M0|G0],_) :- % make sure we do not loop on undefined predicates - yap_flag( unknown, Action, fail), - '$stop_creeping'(Current), - % yap_flag( debug, Debug, false), - ( - '$undefp_search'(M0:G0, NM:NG), - ( M0 \== NM -> true ; G0 \== NG ), - NG \= fail - -> - yap_flag( unknown, _, Action), - % yap_flag( debug, _, Debug), + setup_and_call_cleanup( + ´$undef_set'(MG,Action,Debug,Current), + ´$search_def'(M0,G0,MG), + Port, + ´$undef_reset'(Port,Mo:GO,MG,Action,Debug,Current) + ). + +'$undef_set'(MG,Action,Debug,Current) :- + yap_flag( unknown, Action, fail), + yap_flag( debug, Debug, false), + '$stop_creeping'(Current). + +'$search_def'(M0,G0,NG:NM) :- +'$undefp_search'(M0:G0, NM:NG), +!, +'$pred_exists'(NG,NM). + + +´$undef_reset'(exit,_G0,NG:NM,Action,Debug,Current) :- + yap_flag( unknown, _, Action), + yap_flag( debug, _, Debug), + nonvar(NG) ( Current == true -> @@ -132,13 +143,13 @@ undefined_query(G0, M0, Cut) :- '$start_creep'([NM|NG], creep) ; '$execute0'(NG, NM) - ) - ; - yap_flag( unknown, _, Action), - '$handle_error'(Action,G0,M0) - ). + ). +´$undef_reset'(_,M0:G0,_NG,Action,Debug,_Current) :- + yap_flag( unknown, _, Action), + yap_flag( debug, _, Debug), +'$handle_error'(Action,G0,M0). -:- '$undefp_handler'('$undefp'(_,_), prolog). +:- '$undefp_handler'('$undefp'(_), prolog). /** @pred unknown(- _O_,+ _N_)