#[macro_use]
extern crate ref_thread_local;
-use git_version::git_version;
use nix::sys::signal;
mod prolog;
use crate::prolog::machine::streams::*;
use crate::prolog::read::*;
-use std::env;
use std::sync::atomic::Ordering;
extern fn handle_sigint(signal: libc::c_int) {
semicolon_compound_selector(->(G2, G3), G4, B) :-
( call(G2) ->
call(G3)
- ; '$set_cp'(B),
- call(G4)
+ ; '$set_cp'(B),
+ call(G4)
).
semicolon_compound_selector(','(G2, G3), G4, B) :-
( ','(G2, G3, B)
:- non_counted_backtracking (;)/3.
;(G1, G4, B) :-
- compound(G1),
- semicolon_compound_selector(G1, G4, B),
- !.
+ ( ( G1 = (_ -> _)
+ ; G1 = (_ , _)
+ ; G1 = (_ ; _)
+ ) ->
+ !,
+ semicolon_compound_selector(G1, G4, B)
+ ).
;(G1, G2, B) :-
G1 == !, !, '$set_cp'(B), call(G2).
;(G1, G2, B) :-
).
parse_stream_options_(E, _) :-
throw(error(domain_error(stream_option, E), _)). % 8.11.5.3i)
-
'$repl'([_|Args0]) :-
\+ argv(_),
( append(Args1, ["--"|Args2], Args0) ->
- asserta(argv(Args2)),
- Args = Args1
+ asserta(argv(Args2)),
+ Args = Args1
; asserta(argv([])),
Args = Args0
),
needs_bracketing(Value, Op) :-
catch((functor(Value, F, _),
- current_op(EqPrec, EqSpec, Op),
- current_op(FPrec, _, F)),
- _,
- false),
+ current_op(EqPrec, EqSpec, Op),
+ current_op(FPrec, _, F)),
+ _,
+ false),
( EqPrec < FPrec -> true
; '$quoted_token'(F) -> true
; atom_length(F, 1), graphic_token_char(F) -> true