| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
| |
Blank section for list-vector function added.
|
|
|
|
|
|
|
| |
the arguments. We want (push item list) for compatibility with CL.
(expand): Bugfix: some of the cases were constructing new
forms using unexpanded pieces from the original form.
Added separate case for push, which handles the reversed arguments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enter stopped working. This was broken by recent bugfixes in the
string splitting functions, which introduced a semantics change.
* eval.c (flip_s, vecref_s): New symbol variables.
(op_modplace): New places (vecref ...) and (flip ...). Bugfix: dec
operator was incrementing.
(expand_place): Handle vecref and flip. Bugfix: pop has no
third argument and so is now handled by the same case as flip.
Bugfix: if a modify form has no third argument, then do not
resynthesize it with a nil third argument.
(eval_init): Initialize new symbol variables.
Register new flip operator. Register new list_vectory function
as intrinsic.
* lib.c (rplacd): When modifying the cdr field of a lazy cons,
then lapse the lazy function to nil! This is needed by user-defined
lazy conses, and it makes sense to do it this way rather than
put in some explicit interface.
(list_vector): New function.
* lib.h (list_vector): Declared.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(eval_init): New intrinsics.
* hash.c (struct_hash): assoc_fun parameters reversed.
(gethash, gethash_f, gethash_n): Likewise.
* lib.c (assoc, assq): Reversing parameters.
(find_package, acons_new, acons_new_l, aconsq_new): Reversing
arguments to assoc adn assq.
* lib.h (assoc, assq): Declarations updated.
* match.c (dest_set, dest_bind, h_var, h_coll, h_parallel, h_fun,
subst_vars, do_txeval, v_next, v_parallel, v_gather, v_collect,
v_flatten, v_cat, v_output, v_filter, f_fun, match_funcall):
Reversing arguments to assoc.
* unwind.c (uw_get_func, uw_exception_subtype_p, uw_register_subtype):
Reversing arguments to assoc.
* txr.1: Blank sections created for new functions.
|
| |
|
|
|
|
|
|
| |
* lib.c (chr_toupper, chr_tolower): New functions.
* lib.h (chr_toupper, chr_tolower): New functions declared.
|
|
|
|
| |
IDENT token. This allows for character literals like #\$.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lib.c (c_num): Generalized to convert characters to numbers also.
This allows functions like gt and lt to work with characters.
(chr_isalnum, chr_isalpha, chr_isascii, chr_iscntrl, chr_isdigit,
chr_isgraph, chr_islower, chr_isprint, chr_ispunct, chr_isspace,
chr_isupper, chr_isxdigit): New functions added.
* lib.h: (chr_isalnum, chr_isalpha, chr_isascii, chr_iscntrl,
* chr_isdigit, chr_isgraph, chr_islower, chr_isprint, chr_ispunct,
* chr_isspace, chr_isupper, chr_isxdigit): New functions declared.
(c_true): New macro.
|
|
|
|
|
|
|
| |
(op_progn): New static function.
(eval_init): Initialize new variable, register progn operator.
* txr.1: progn documented.
|
|
|
|
|
|
|
|
|
|
| |
* txr.c (version): Bumped.
* txr.1: Bumped version and set date.
* configure (txr_ver): Bumped.
* RELNOTES: Updated.
|
|
|
|
|
|
|
|
|
| |
(string_in_get_line): Following up TODO. Fixed broken
function. Now get_line on a string stream properly returns characters
up to and not including the next newlne character, and also consumes
the newline character. Other cases are handled properly, also:
the stream being at EOF already, or at the last line not being
newline-terminated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
warning.
(eval_init): New functions registered: typeof and vector functions,
as well as length_list.
* lib.c (length): Function renamed to length_list, because it is
list specific.
(length_vec, size_vec, vector_list): New functions.
(length): New function, generic over lists, vectors and strings.
* lib.h (length_list, length_vec, size_vec, vector_list): Declared.
* match.c (h_var, h_fun, robust_length, v_deffilter, v_fun): Use
length_list instead of length.
* parser.l: Introduced # token.
* parser.y (vector): New nonterminal.
(expr): vector is a kind of expr.
(chrlist): Bugfix: single-character syntax was not working;
for instance #\x to denote the charcter x.
(lit_char_helper): Use length_list instead of length.
* stream.c (string_in_get_line): Bugfix: this was using
the wrong length function: length was being applied to a string.
The genericity of length makes that correct now, but changing
to length_str anyway.
* txr.1: Blank sections created for functions. Vector syntax
documented.
|
|
|
|
|
| |
* configure: Forgot to treat octal number in the processing
of conftest.syms. Removed useless eval.
|
|
|
|
|
|
|
|
|
|
| |
* txr.c (version): Bumped.
* txr.1: Bumped version and set date.
* configure (txr_ver): Bumped.
* RELNOTES: Updated.
|
|
|
|
|
|
|
|
|
|
| |
(eval_init): Use existing function objects car_f, cdr_f,
eq_f, eql_f and equal_f. Added identity to function table.
* lib.h (eql_f): Missing declaration added.
* txr.1: Documented cond, and, if, or, defun, inc, dec,
set, push and pop.
|
|
|
|
|
|
|
|
| |
(list): Prior commit reversed.
* txr.1: Prior commit reversed.
* RELNOTES: No semantics clarification in quasiquote; bugfixes only.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(expand_qquote): Bugfix: missing case added to handle directly quoted
quasiquote.
(eval_init): Error-catching pseudo-operators registered in
op_table.
* parser.y (force_regular_quotes): New function.
(list): Quotes within unquotes and splices are regular.
* txr.1: Clarified new rules. Removed description of ,'form and ,*'form
special syntax.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (eval_init): New intrinsic functions.
* lib.c (rplaca, rplacd, lcons_fun): New functions.
(make_lazycons): Renamed to make_lazy_cons, relocated
and turned into external function.
(lazy_stream_func, lazy_stream_cons): Follow rename
of make_lazycons.
* lib.h (rplaca, rplacd, make_lazy_cons, lcons_fun):
Declared.
* txr.1: Stub sections created.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
variables.
(op_unwind_protect, op_block, op_return, op_return_from):
New static functions.
(expand): Removed case for call, if, and, and or. These operators
evaluate all their arguments, so the code walker can treat them
as a function calls.
Added case for block and return-from.
(eval_init): New symbols interned. New operator functions
registered in op_table.
* txr.1: Blank sections added.
|
|
|
|
| |
the input string.
|
|
|
|
|
|
| |
exposed as intrinsics.
* txr.1: Blank sections created.
|
| |
|
|
|
|
|
|
| |
available:
* lib.h (sym_name): Dangling declaration removed.
|
|
|
|
|
|
|
|
|
|
| |
argument form. If an unquote or splice are applied to a quoted
form, its quote becomes a regular quote.
This behavior is necessary to make ,',form work in nested
quotes, otherwise the ' is a quasiquote which captures
the comma in ,form, reducing ,',form to ,form.
* txr.1: Documented this special behavior.
|
|
|
|
|
|
| |
and processing of regular quote form. This broke nested
backquote processing, and quasiquote forms containing
non-quasi-quotes like like '(a 'b ,c).
|
|
|
|
|
|
|
|
|
|
| |
* txr.c (version): Bumped.
* txr.1: Bumped version and set date.
* configure (txr_ver): Bumped.
* RELNOTES: Updated.
|
|
|
|
| |
symbol syntax.
|
|
|
|
| |
at all.
|
|
|
|
|
| |
(do_txeval): Optimization: short-circuit out if the expression is nil,
without establishing the exception handler.
|
|
|
|
|
|
| |
skip min/max arguments not working!
* RELNOTES: Updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two interfaces are provided to the function. One throws
on unbound variable, the other which evaluates them to the
symbol noval_s (used in exception handling).
* match.c (do_txeval): New static function.
(txeval): Functionality moved to do_txeval.
(txeval_allow_ub): New static function.
(vars_to_bindings, h_fun, v_freeform, v_next, v_merge, v_bind, v_set,
v_cat, v_output, v_deffilter, v_fun): No need to
use cdr to get the value from txeval.
(v_throw): Use txeval_ub_allowed, since unbound variables
are allowed in throw.
(v_try): Detect unbound arguments by checking for noval_s rather than
nil. No need to use cdr.
|
|
|
|
|
|
| |
not confused with the Lisp evaluation functions.
(vars_to_bindings, h_fun, v_freeform, v_next, v_merge, v_bind, v_set,
v_cat, v_output, v_throw, v_deffilter, v_fun): Updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the sequencing! Making it an inline function broke the tests.
But we can't have multiple evaluation either, so it's going to use
a temporary lexical variable.
(uses_or2): Macro which declares the lexical variable needed by or2.
* debug.c (debug): add uses_or2.
* eval.c (eval_intrinsic, op_modplace): Likewise.
* lib.c (lazy_str, lazy_str_force_upto, lazy_str_get_trailing_list):
Likewise.
* match.c (h_parallel, v_freeform, v_parallel, v_output): Likewise.
* parser.y (unquotes_occur): Likewise.
* stream.c (format): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.h (ln_to_forms_hash): Declaration removed.
* parser.l (ln_to_forms_hash): Variable removed.
(parse_init): Initialization and protection of ln_to_forms_hash
removed.
* parser.y (rl): Update of ln_to_forms_hash removed.
* txr.1:
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
conditionally generated in config.h.
* gc.c (break_obj): New static variable.
(mark_obj): Debugging feature: if the object is the one stored in
break_obj and not yet reached, then call breakpt.
(deheap): New debugging function for viewing regions of the heaps.
* lib.c (breakpt): New function.
* lib.h (breakpt): Declared.
|
|
|
|
|
|
|
|
| |
in the the 2010-01-26 commit, prior to release 033. When processing a
table with weak values, this function was mistakenly testing the keys
rather than values for for reachability. I noticed this when a test
case that should run in constant memory showed unwarranted accumulation
of memory.
|
|
|
|
|
|
|
|
| |
increment value. Separate new value and increment value, and check
number of arguments.
* lib.h (or2): Turned into inline function due to multiple
argument evaluation.
|
| |
|
| |
|
|
|
|
|
|
|
| |
(op_dohash): New static function
(expand): New case for dohash_s.
Bugfix for do_s: expand was used rather than expand_forms.
(eval_init): dohash_s initialized and entered into op_table.
|
|
|
|
|
|
| |
* hash.c (maphash): New function.
* hash.h (maphash): Declared.
|
|
|
|
| |
of the form var, only (var initform).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (car_s, cdr_s): New symbol variables.
(op_modplace): Cases for car and cdr added.
(expand_place): Likewise. Calls abort should the
cases fall through rather than returning 42.
(expand): Bugfix: for and for* case not propagating
source location info. Bugfix: expansion for do added.
(eval_init): car_s and cdr_s initialized and used
in place of previous intern calls.
* parser.y (elem): Removed wrong logic for expanding the
do form. It was expanding only the first argument.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(env_replace_vbind, bindings_helper): New static functions.
(op_let): Refactored to allow for let* form. Code for setting
up bindings moved into bindings helper, shared by for loop.
(op_for, expand_vars): New static functions.
(expand): Bugfix: let case was neglecting to walk the var
initialization forms. This is done via expand_vars now.
let_star_s added to this case to handle let* and let at
the same time. New case added for for and for*.
(eval_init): let_star_s, for_s, and for_star_s initialized,
and entered into op_table.
|
|
|
|
| |
* txr.vim: More highlighting.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (op_let): Bugfix: was not evaluating var init forms.
(reg_var): New static function.
(eval_init): Registered numerous stream functions and the
three standard streams.
* lib.c (obj_print, obj_pprint): Modified to return a value.
(init): eval_init called after stream_init, because eval
needs the three standrad streams prepared.
* lib.h (obj_print, obj_pprint): Declarations updated.
* stream.c (format): Support t as a shorthand for standard output.
(formatv, open_directory, open_file, open_pipe): New functions.
(w_opendir): New static function.
* stream.h (formatv, open_directory, open_file, open_pipe):
Declared.
* txr.vim: set iskeyword such that keyword can contain special
characters. Set b:current_syntax to "lisp".
(txl_keyword): New keyword category populated with TXR Lisp keywords
defined as separate category.
(txr_list): Contains txl_keyword.
(txr_meta): Contains txl_keyword and txr_list.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fun operator.
* eval.c (apply_s): New symbol variable.
(apply): Handle functions specified as symbols. Use symbol from context
form in error reporting.
(apply_intrinsic): New function.
(interp_fun): Bugfix: removed evaluation of arguments, since
arguments are already evaluated.
(op_call): Simplified by not having to handle symbols,
since apply does.
(op_fun): New function.
(expand): Handle special form fun.
(mapcarv, mappendv): New functions.
(eval_init): Initialize apply_s. Register op_fun function
in op_table. Register mapcar, mappend and apply functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New functions list, append and eval. Code walking framework for
expanding quasiquotes. quotes right now.
* eval.c (let_s, lambda_s, call_s, cond_s, if_s, and_s, or_s
defvar_s, defun_s, list_s, append_s): New symbol variables.
(eval_intrinsic, op_quote, expand_forms, expand_cond_pairs,
expand_place, expand_qquote): New static functions.
(expand): New external function.
(eval_init): Initialize new symbol variables. Use newly defined symbol
variables to register functions. Also, new functions: quote, append,
list and eval.
* eval.h (expand): Declared.
* lib.c (appendv): New function.
(obj_init): quote and splice operator symbols moved into system
package.
(obj_print, obj_pprint): Support for printing quotes and splices.
* lib.h (appendv): Declared.
* match.c (do_s): New symbol variable.
(syms_init): New variable initialized.
(dir_tales_init): New variable used instead of intern.
* match.h (do_s): Declared.
* parser.y (elem): @(do) form recognized and its argument passed
through the new expander.
(o_elem, quasi_item): Pass list through expander.
(list): Use choose_quote to decide whether to put
regular quote or quasiquote on quoted list.
(meta_expr): Fixed abstract syntax so the expression is a single
argument of the sys:expr, rather than multiple arguments.
(unquotes_occur, choose_quote): New static function.
|
|
|
|
| |
(strlit): Set location info.
|