| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
* tests/006/freeform-3.expected: New file.
* tests/006/freeform-3.txr: New file.
* tests/006/passwd: New file.
* Makefile (TXR_ARGS): Set up for new test case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
relies on lazy_str_get_trailing_list and the behavior
of that function changed because (split-str "" any-separator)
changed from returning nil to returning the empty string.
The resulting behavior change of lazy_str_get_trailing_list was later
described in the documentation, thereby codifying it.
This patch changes the lazy_str_get_trailing_list behavior,
which is poor, and causes infinite looping. We do not want
an extra empty string prepended, because it looks like
a spurious line.
* lib.c (lazy_str_get_trailing_list): if split_str produces
a the list (""), then just return the unmaterialized list from
the lazy string without prepending that one-element list to it.
* txr.1: Updated documentation for lazy-str-get-trailing-list.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure, txr.1: Bumped version.
* share/txr/stdlib/ver.txr: Likewise
* Makefile: Improve binary packaging rules.
* regex.c: #include <stdarg.h> added.
|
| |
|
|
|
|
|
|
|
|
| |
* regex.c (regex_print): New static function.
(regex_obj_ops): Registered regex_print. (print_class_char,
paren_print_rec, print_rec): New static functions.
* dep.mk: Regenerated.
|
|
|
|
|
|
|
|
|
| |
of pretty-printing. Fix object construction bugs.
* regex.c (struct regex): New member, source.
(regex_mark): Ensure source is visited by garbage collector.
(regex_compile): Store regex_sexp in source.
Fix violations of section 3.2 of HACKING document.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
expression objects in the syntax tree. The parser
just puts out a #<regex ...> instead of (#<regex ...> regex-syntax).
* eval.c (do_eval): We no longer need the hack of
treating (#<regex> ...) as a special form which
evaluates to #<regex>.
(expand): We no longer have to skip over regex syntax,
so the case is removed.
* match.c (h_var, do_txeval, do_match_line): regexp cases are no longer
subcases of consp but stand on their own. In do_match_line, we
introduce a COBJ case into the type switch for regexes.
* parser.y: regexes are now compiled in the regex and lisp_regex
grammar rules instead of the dependent rules, and are not wrapped in
extra syntax.
|
|
|
|
|
|
|
|
|
|
|
| |
commit. The incompleteness of that change broke the case of an unbound
variable followed by a bound variable. The value of the
second variable was still being wrapped in the old complicated
representation before being pushed to the front of the spec.
* txr.1: Replace bogus text which says that variables are not
bound to regexes, and so regex matches from variable substitutions
do not arise. This works fine after this change.
|
|
|
|
| |
now have config.make as a prerequisite.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
rather than the list-based notation for derivative-based
regexes, and an encapsulated COBJ for NFA-based regexes.
* lib.c (compiled_regex_s): Variable removed.
(obj_init): Initialization of compiled_regex_s removed.
* lib.h (compiled_regex_s): Declaration removed.
* regex.c (struct regex, regex_t): New type.
(regex_destroy): Object is now a regex_t, not nfa_t.
(regex_mark): New function.
(regex_obj_ops): Register regex_mark operation.
(reg_nullable, reg_derivative): Remove cases that handles
compiled_regex_s.
(regex_compile): Output of dv_compile_regex becomes
a cobj nwo. Output of nfa_compile_regex must be
embedded in regex_t structure.
(regexp): Drop the check for compiles_regex_s.
(regex_nfa): Function removed.
(regex_run, regex_machine_init): Use cobj_handle to retrieve regex_t *
pointer and dispatch appropriate code based on regex->kind.
|
|
|
|
|
| |
* txr.1: Avoid escapes at the end of a line; man2html doesn't
handle this properly.
|
|
|
|
| |
* txr.1: More formatting and wording fixes.
|
|
|
|
| |
a function that returns t, as documented.
|
| |
|
|
|
|
|
|
|
| |
and restructured in some places.
* genman.txr: No longer generate the whole document in
monospaced font. Add hyperlinks.
|
|
|
|
|
| |
lacking the semantics of returning the last value,
or the first true value, respectively.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Returns minimum supported emulation.
* lib.h (compat_fixup): Declaration fixed.
* txr.c (compat): Replace hard-coded min version
by return value of compat_fixup.
|
|
|
|
|
|
|
|
|
| |
(requires_arg, do_fixnum_opt, compat, array_dim, gc_delta): New static
functions.
(txr_main): Use do_fixnum_opt for handling options with integer
argument. Add --compat alias for -C.
* txr.1: Documented --compat. Added missing description of --debugger.
|
|
|
|
| |
Better checking for misused long options.
|
|
|
|
|
|
|
|
|
| |
* lib.c (partition_star_func): New static function.
(partition_star): New function.
* lib.h (partition_star): Declared.
* txr.1: Documented partition*.
|
|
|
|
|
|
|
|
|
| |
* lib.c (partition_func): New static function.
(partition): New function.
* lib.h (partition): Declared.
* txr.1: Documented partition.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(opt_gc_delta): New global variable.
(make_obj): Use opt_gc_delta rather than MALLOC_DELTA_THRESH.
(gc_set_delta, gc_wrap): New static functions.
(gc_late_init): New function.
* gc.h (gc_late_init): Declared.
* genvim.txr: scan gc.c also.
* lib.c (init): call gc_late_init.
* txr.1: Document new --gc-delta option and the functions
gc and gc-set-delta.
* txr.c (help): Help text for --gc-delta.
(txr_main): Parse --gc-delta option.
* txr.h (opt_gc_delta): Declared.
|
|
|
|
|
|
|
|
|
|
|
| |
prevent skyrocketing memory use when the program manipulates
heap objects that have large amounts of malloc memory
attached, like very large bignums.
* gc.c (MALLOC_DELTA_THRESH): New preprocessor symbol.
(prev_malloc_bytes): New static variable.
(make_obj): when the value of malloc_bytes jumps by MALLOC_DELTA_THRESH
or more since the last gc, trigger gc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(obj_init): Change exception symbol names with underscores
to use friendly dashes instead.
(compat_fixup): New function.
* lib.h (compat_fixup): Declared.
* txr.1: Change occurrences of exception symbols from
underscores to dashes.
* txr.c (txr_main): Call compat_fixup when -C option
is processed.
|
|
|
|
|
|
|
|
|
| |
* txr.c (opt_compat): New global variable.
(help): Describe -C option.
(txr_main): Process -C, and set opt_compat.
Ensure -C does not clump.
* txr.h (opt_compat): Declared.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to account for new parameter.
* lib.c (syntax_error_s): New symbol_variable.
(obj_init): New symbol variable initialized.
* lib.h (syntax_error_s): Declared.
* parser.h (lisp_parse): Declaration updated.
* parser.l (lisp_parse): Takes third parameter.
* txr.1: Third parameter of read described.
* txr.c (txr_main): Pass colon_k to third parameter of lisp_parse
to obtain exception throwing behavior.
* unwind.c (uw_init): Register syntax-error as subtype of error.
|
|
|
|
|
|
|
|
|
|
|
|
| |
*flo-min*, *flo-max*, *flo-epsilon*, *pi* and *e*.
* genvim.txr: Include arith.c in scan for symbols.
* lib.c (init): arith_init() must now be called after eval_init().
* txr.1: Documented new variables..
* txr.vim: Updated.
|
| |
|
|
|
|
|
|
| |
of @{var mod} syntax triggering a bogus assertion. Mods are the third
element in the abstract syntax now, not fourth. There is no next link.
Removing bogus comment referring to a nonexistent function.
|
| |
|
|
|
|
|
|
|
|
|
| |
(prot1, rel1, mark): Follow rename.
* gc.h (gc_prot_top): Declared.
* signal.h (extended_jmp_buf): New member, gc_pt.
(extended_setjmp): Save and restore gc_prot_top.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
low level C pointers, while we execute code that can cons memory.
* lib.c (list_str): Protect the str argument.
(int_str): Likewise.
* regex.c (search_regex): protect the haystack string,
while using the h pointer to its data, since regex_run
can use the derivative-based engine which conses.
* stream.c (vformat_str): Protect str argument, since
put_char might conceivably cons.
(vformat): Protect fmtstr.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.y (o_elems_transform): Remove useless function which
was only unwrapping the strange parse of output vars.
(o_elems_opt, rep_elem, quasilit, wordsqlit): Eliminate
o_elems_transform call.
(o_var, q_var): Eliminate the phrase structure rules which
match an extra o_elem or quasi_item, and which incorporate
them into the var syntax tree element. Place the modifiers
into the third position, not fourth.
* eval.c (subst_vars): Eliminate handling of "pat"
element. Actually that was not even there thanks to
o_elems_transform being applied: dead code. Pull modifiers
from the third element of the var form now, not fourth.
* match.c (subst_vars): Similar changes as in the match.c
subst_vars function. Here the pat variable is even more obviously
useless; if it is not nil, it is just punted back to the spec.
|
|
|
|
|
|
|
|
|
|
|
|
| |
element whole, and not break it up.
* match.c (search_match): Take a spec argument.
(h_var): Turn a text element into a one-element spec and process
with search_match.
* txr.1: Updated text about matching of variables
followed by a directive or function, and about consecutive
variables via directive.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the contents of a variable, fixed string or regex, we now
use the entire tail of the specline to find the match.
So for instance @var@(trailer)foo works as intuition
might expect.
* match.c (search_form): Static function removed.
(search_match): New static function based on search_form.
Does not handle regexes, and does not update c->bindings.
(h_var): Renamed local variable pat to next. Added a few
missing rlcp's. Combined the cases when pat is a cons to
one block so consp isn't repeatedly tested. Function now
handles a var followed by (sys:text ...) elements specially;
the first element of the text block is pulled out and
matched. Implemented "var delimiting spec" general case
which matches the entire tail of the spec at successive
character positions until a match is found, and the skipped
text goes into the variable.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
language. The goal is to remove the strict behavior of using only one
element of context after a variable.
variable form at parse time: we unravel that first.
* parser.y (grammar): Simplifying the phrase structure
rule for the var element. All the variants that have
a trailing elem are removed. The abstract syntax
changes; the modifier moves to the third position in the
list.
* match.c (h_var): Matching change: the element which follows
a variable is now pulled from the specline rather than the variable
syntax, which is how it should have been done in the first place. The
modifiers are pulled from a different spot in the variable syntax.
|
|
|
|
|
|
| |
trie-value-at and trie-lookup-feed-char functions as intrinsics.
* txr.1: Document exposed functions.
|
|
|
|
|
|
|
|
|
| |
that take any number of arguments.
* eval.c (me_ret): Generate (op identity (progn @rest <expr>))
rather than of (op identity <expr>).
* txr.1: Update misleading equivalence.
|
| |
|
| |
|
|
|
|
|
|
| |
* configure: Add test for getppid.
* eval.c (getppid_wrap, eval_init): use HAVE_GETPPID
|
|
|
|
|
|
|
|
|
|
| |
and converted to a macro in the parser.
* parser.y (define_transform): take a parser argument rather
than scanner. Set up scnr local variable for yyerr macro.
Remove scnr argument from macro calls.
(yyerr): New macro.
(grammar): Remove scnr argument from yyerr calls.
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.y (yybadtok): New macro.
(yybadtoken): Function must take parser argument.
(grammar): Replace uses of yybadtoken with yybadtok.
* parser.h (yybadtoken): Declaration updated.
* parser.l (grammar): Fix incorrect yyprepf calls
that are missing the yyscanner parameter.
|
| |
|
|
|
|
|
|
| |
portable when the seed is a fixnum or bignum. The goal is that the same
values of seed should produce the same random sequences on any
platform.
|