]> Repositorios git - scryer-prolog.git/commitdiff
Revert "Enhanced command line" revert-419-cli origin/revert-419-cli
authorMark Thom <[email protected]>
Fri, 1 May 2020 21:43:20 +0000 (15:43 -0600)
committerGitHub <[email protected]>
Fri, 1 May 2020 21:43:20 +0000 (15:43 -0600)
src/main.rs
src/prolog/clause_types.rs
src/prolog/machine/system_calls.rs
src/prolog/toplevel.pl

index fc85a95910bddcd91c5116b52aee73b3ca1e97be..c8866b38e6bcb55c2a4c65be2aba2b65e2c9a1c5 100644 (file)
@@ -36,6 +36,11 @@ fn main() {
     let handler = signal::SigHandler::Handler(handle_sigint);
     unsafe { signal::signal(signal::Signal::SIGINT, handler) }.unwrap();
 
+    if env::args().skip(1).any(|a| a == "-v" || a == "--version") {
+        println!("{:}", git_version!(cargo_prefix = "cargo:", fallback = "unknown"));
+        return;
+    }
+
     let mut wam = Machine::new(readline::input_stream(), Stream::stdout());
     wam.run_top_level();
 }
index 83e144ebda0309dbe8ad855e3aa6924d498d0bce..9b550c35b859e5aed1d0415545ab6980fc2ea83b 100644 (file)
@@ -264,7 +264,6 @@ pub enum SystemClauseType {
     WAMInstructions,
     WriteTerm,
     WriteTermToChars,
-    ScryerPrologVersion,
 }
 
 impl SystemClauseType {
@@ -419,7 +418,6 @@ impl SystemClauseType {
             &SystemClauseType::WAMInstructions => clause_name!("$wam_instructions"),
             &SystemClauseType::WriteTerm => clause_name!("$write_term"),
             &SystemClauseType::WriteTermToChars => clause_name!("$write_term_to_chars"),
-            &SystemClauseType::ScryerPrologVersion => clause_name!("$scryer_prolog_version"),
         }
     }
 
@@ -554,7 +552,6 @@ impl SystemClauseType {
             ("$wam_instructions", 3) => Some(SystemClauseType::WAMInstructions),
             ("$write_term", 6) => Some(SystemClauseType::WriteTerm),
             ("$write_term_to_chars", 7) => Some(SystemClauseType::WriteTermToChars),
-            ("$scryer_prolog_version", 1) => Some(SystemClauseType::ScryerPrologVersion),
             _ => None,
         }
     }
index a976423ffeb7edfdbee70e5d976f8605682c295b..d393262695cea7d1ea48334a00ffbebd4f585849 100644 (file)
@@ -3543,15 +3543,6 @@ impl MachineState {
                     unreachable!()
                 }
             }
-            &SystemClauseType::ScryerPrologVersion => {
-                use crate::git_version::git_version;
-                let version = self[temp_v!(1)];
-                let buffer =
-                    git_version!(cargo_prefix = "cargo:", fallback = "unknown");
-                let chars = buffer.chars().map(|c| Addr::Char(c));
-                let result = Addr::HeapCell(self.heap.to_list(chars));
-                self.unify(version, result);
-            }
         };
 
         return_from_clause!(self.last_call, self)
index d3202fb2058b5d5848a16aa6fcd9702842a2cc5f..7072017ddd46fbfd2ac806a976288db4ead21260 100644 (file)
 
-:- module('$toplevel', ['$repl'/1, consult/1, use_module/1, use_module/2,
-                        argv/1]).
+:- module('$toplevel', ['$repl'/1, consult/1, use_module/1, use_module/2]).
 
 :- use_module(library(charsio)).
 :- use_module(library(lists)).
 :- use_module(library(si)).
 
-:- dynamic(argv/1).
+'$repl'([_|Args]) :-
+    maplist(use_list_of_modules, Args),
+    false.
+'$repl'(_) :- repl.
 
-'$repl'([_|Args0]) :-
-    \+ argv(_),
-    (   append(Args1, ["--"|Args2], Args0) ->
-            asserta(argv(Args2)),
-            Args = Args1
-    ;   asserta(argv([])),
-        Args = Args0
-    ),
-    delegate_task(Args, []),
-    repl.
-'$repl'(_) :-
-    (   \+ argv(_) -> asserta(argv([]))
-    ;   true
-    ),
-    repl.
-
-delegate_task([], []).
-delegate_task([], Goals0) :-
-    reverse(Goals0, Goals),
-    run_goals(Goals),
-    repl.
-delegate_task([Arg0|Args], Goals0) :-
-    (   member(Arg0, ["-h", "--help"]) -> print_help(Args)
-    ;   member(Arg0, ["-v", "--version"]) -> print_version(Args)
-    ;   member(Arg0, ["-g", "--goal"]) -> gather_goal(g, Args, Goals0)
-    ;   member(Arg0, ["-t", "--toplevel"]) -> gather_goal(t, Args, Goals0)
-    ;   atom_chars(Mod, Arg0),
-        catch(use_module(Mod), E, print_exception(E))
-    ),
-    delegate_task(Args, Goals0).
-
-print_help(_) :-
-    write('Usage: scryer-prolog [OPTIONS] [FILES] [-- ARGUMENTS]'),
-    nl, nl,
-    write('Options:'), nl,
-    write('   -h, --help           '),
-    write('Display this message'), nl,
-    write('   -v, --version        '),
-    write('Print version information and exit'), nl,
-    write('   -g, --goal GOAL      '),
-    write('Run the query GOAL'), nl,
-    write('   -t, --toplevel GOAL  '),
-    % write('                        '),
-    write('Run the query GOAL and halt'), nl,
-    halt.
-
-print_version(_) :-
-    '$scryer_prolog_version'(Version),
-    write(Version), nl,
-    halt.
-
-gather_goal(Type, Args0, Goals) :-
-    length(Args0, N),
-    (   N < 1 -> print_help(_), halt
-    ;   true
-    ),
-    [Gs1|Args] = Args0,
-    (   member(Type, [g, t]) -> Gs =.. [Type, Gs1]
-    ;   write('caught: '),
-        write(error(domain_error(arg_type, Type), gather_goal/3)), nl,
-        halt
-    ),
-    delegate_task(Args, [Gs|Goals]).
-
-arg_type(g).
-arg_type(t).
-arg_type(g(_)).
-arg_type(t(_)).
-
-ends_with_dot(Ls0) :-
-        reverse(Ls0, Ls),
-        layout_and_dot(Ls).
-
-layout_and_dot(['.'|_]).
-layout_and_dot([C|Cs]) :-
-        char_type(C, layout),
-        layout_and_dot(Cs).
-
-run_goals([]).
-run_goals([g(Gs0)|Goals]) :-
-    (   ends_with_dot(Gs0) -> Gs1 = Gs0
-    ;   append(Gs0, ".", Gs1)
-    ),
-    read_term_from_chars(Gs1, Goal),
-    (   catch(
-            Goal,
-            Exception,
-            (write(Gs0), write(' causes: '), write(Exception), nl) % halt?
-        )
-    ;   write('Warning: initialization failed for '),
-        write(Gs0), nl
-    ),
-    run_goals(Goals).
-run_goals([t(Gs0)|_]) :-
-    (   ends_with_dot(Gs0) -> Gs1 = Gs0
-    ;   append(Gs0, ".", Gs1)
-    ),
-    read_term_from_chars(Gs1, Goal),
-    (   catch(
-            Goal,
-            Exception,
-            (write(Gs0), write(' causes: '), write(Exception), nl, halt)
-        )
-    ;   write('Warning: initialization failed for '),
-        write(Gs0), nl
-    ),
-    halt.
-run_goals([Goal|_]) :-
-    write('caught: '),
-    write(error(domain_error(arg_type, Goal), run_goals/1)), nl,
-    halt.
-
-print_exception_warning(E) :-
-    (  E == error('$interrupt_thrown', repl) -> nl % print the
-                                                   % exception on a
-                                                   % newline to evade
-                                                   % "^C".
-    ;  true
-    ),
-    write_term('Warning: ', [quoted(false), max_depth(20)]),
-    writeq(E),
-    nl.
+use_list_of_modules(Mod0) :-
+    atom_chars(Mod, Mod0),
+    catch(use_module(Mod), E, print_exception(E)).
 
 repl :-
     catch(read_and_match, E, print_exception(E)),