diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-06-02 20:43:29 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-06-02 20:43:29 -0700 |
commit | fe38ddebf874a95984770ac51610173f9a58bdf3 (patch) | |
tree | 655ff676e0c82f0febb9e3bd94a626b8deb5c980 /parser.c | |
parent | 8d6edf58318d4f7be6cadf0ff1edc223fd75e358 (diff) | |
download | txr-fe38ddebf874a95984770ac51610173f9a58bdf3.tar.gz txr-fe38ddebf874a95984770ac51610173f9a58bdf3.tar.bz2 txr-fe38ddebf874a95984770ac51610173f9a58bdf3.zip |
listener: process multiple expressions
* parser.c (repl): use read_objects_from_string,
forming a progn expression which is evaluated.
Check for the first expression being a listener
command.
* txr.1: Updated.
Diffstat (limited to 'parser.c')
-rw-r--r-- | parser.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1732,7 +1732,8 @@ val repl(val bindings, val in_stream, val out_stream, val env) { val name = format(nil, lit("expr-~d"), prev_counter, nao); val line = string(line_w); - val form = lisp_parse(line, out_stream, colon_k, name, colon_k); + val forms = read_objects_from_string(line, std_error, colon_k, name); + val form = if2(and2(consp(forms), null(cdr(forms))), car(forms)); if (form == quit_k) { done = t; } else if (form == prompt_k) { @@ -1749,7 +1750,7 @@ val repl(val bindings, val in_stream, val out_stream, val env) counter = prev_counter; } else { val value = if3(form != read_k, - eval_intrinsic(form, env), + eval_intrinsic(cons(progn_s, forms), env), read_eval_ret_last(nil, prev_counter, in_stream, out_stream)); val pprin = cdr(pprint_var); |