From ab182b6e3b6418dff804f6420c3b36583fba15da Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Wed, 7 Mar 2018 17:19:28 -0700 Subject: [PATCH] add error messages on failed batch entry --- README.md | 18 +++++++++--------- src/main.rs | 8 +++++--- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index e439be46..95534515 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Extend rusty-wam to include the following, among other features: * Built-in predicates for list processing and top-level declarative control (`setup_call_control/3`, `call_with_inference_limit/3`, etc.) (_done_). -* A rudimentary module system (_in progress_). +* A rudimentary module system (_done_). * Attributed variables using the SICStus Prolog interface and semantics. Adding coroutines like `dif/2`, `freeze/2`, etc. is straightforward with attributed variables. @@ -88,9 +88,9 @@ $> cd rusty-wam $> cargo build ``` -cargo will download and install the libraries rusty-wam uses automatically. -rusty-wam can be run with the command `cargo run`, and likewise tests can be -run with `cargo test`. +cargo will download and install the libraries rusty-wam uses +automatically. rusty-wam can be run with the command `cargo run`, and +likewise tests can be run with `cargo test`. Note on compatibility: rusty-wam should work on Linux, Mac OS X, and FreeBSD. Windows support hinges on the Termion library working in @@ -239,10 +239,10 @@ New operators can be defined using the `op` declaration. ### Modules -rusty-wam has seemingly correct but presently untested support for a -simple predicate-based module system. It provides a way to separate -units of code into distinct namespaces, for both predicates and -operators. See the files `src/prolog/lib/*.pl` for examples. +rusty-wam supports for a simple predicate-based module system. It +provides a way to separate units of code into distinct namespaces, for +both predicates and operators. See the files `src/prolog/lib/*.pl` for +examples. At the time of this writing, several control and list processing operators and predicates are hidden in their own modules that have not @@ -272,4 +272,4 @@ prolog> :- use_module(library(lists), [member/2]). ``` A qualified `use_module` can be used to remove imports from the -toplevel by calling it with an empty import list. +toplevel by calling it with an empty import list. \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 695e8c40..ad9e8df7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,9 +45,11 @@ fn prolog_repl() { match read() { Input::Line(line) => parse_and_compile_line(&mut wam, line.as_str()), - Input::Batch(batch) => { - compile_listing(&mut wam, batch.as_str()); - }, + Input::Batch(batch) => + match compile_listing(&mut wam, batch.as_str()) { + EvalSession::Error(e) => println!("{}", e), + _ => {} + }, Input::Quit => break, Input::Clear => { wam.clear(); -- 2.54.0