| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
* parser.l (grammar): Scan a METANUM token in the
BRACED state also. This allows us to correctly
reference op arguments in a quasiliteral, as in
`foo @{@1 [1..2] ","} bar`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* stream.c (null_stream_print): Static function removed.
(stream_print_op): New function. Prints stream's name and address.
(null_get_prop): Pull stream name from strm_ops structure
rather than hard-coding to "null-stream".
(null_ops, stdio_ops, tail_ops, pipe_ops, string_in_ops,
byte_in_ops, string_out_ops, strlist_out_ops, dir_ops,
cat_stream_ops): Use stream_print_op in place of cobj_print_op.
Initialize name.
(stdio_stream_print): Use name from ops structure,
and include object address.
(string_in_get_prop): Likewise.
(cat_stream_print): Likewise.
* stream.h (struct strm_ops): New member, name.
(strm_ops_init): Initialize name.
(stream_print_op): Declared.
* syslog.c (syslog_strm_ops): Use stream_print_op. Initialize name.
|
|
|
|
|
|
| |
* stream.c (stdio_stream_print): Wrong way test on h->pid;
if it is nonzero it must be printed. Was printed wrong:
argument of integer type passed to ~s which expects a val.
|
|
|
|
|
|
|
|
|
|
|
| |
* stream.c (stdio_clear_error): Return the prior value of h->err.
Do not inspect feof(h->f) or ferror(h->f); just clear the error
status of the stream.
(stdio_close): Set h->err from errno if fclose failed.
(dir_clear_error): Return prior value of h->err.
* txr.1: Document return value convetion for clear-error,
and flush-stream.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In many cases, if a stream operation is not applicable to a stream, it
is not appropriate to just do nothing and return nil. An error
must be thrown.
* stream.c (unimpl, unimpl_put_string, unimpl_put_char,
unimpl_put_byte, unimpl_get_line, unimpl_get_char, unimpl_get_byte,
unimpl_unget_char, unimpl_unget_byte, unimpl_seek, null_put_string,
null_put_char, null_put_byte, null_get_line, null_get_char,
null_get_byte, null_close, null_flush, null_seek, null_set_prop,
null_get_error, null_get_error_str, null_clear_error): New
static functions.
(fill_stream_ops): New function.
(null_ops): Use null_put_string, etc., instead of null pointers.
(stdio_clear_error, dir_clear_error, cat_clear_error): Return value now
indicating whether an error was cleared.
(stream_set_prop, stream_get_prop, real_time_stream_p, close_stream,
get_error, get_error_str, clear_error, get_line, get_char, get_byte,
unget_char, unget_byte, put_string, put_char, put_byte,
flush_stream): Do not test whether a function in the ops table
is defined; just call it, and return its value.
(stream_init): Call fill_stream_ops on all stream operation
structures so any null pointers are defaulted to appropriate
functions.
* stream.h (struct strm_ops): clear_error gets return value.
(fill_stream_ops): Declared.
* syslog.c (syslog_init): Call fill_stream_ops on syslog_strm_ops.
|
|
|
|
|
|
|
|
|
| |
* genvim.txr (bs, hex, at, alpha, alnum, dig, oct, chesc, glyph):
New variables.
*(txr_error, txr_atat, txr_comment, txr_contin, txr_char,
txr_regdir, txr_variable, txr_splicevar, txr_stresc, txr_numesc,
txr_regesc, txr_chr, txr_num, txr_badnum,txr_ident,
txr_braced_ident): Use regex definitions.
|
|
|
|
|
|
|
| |
* genvim.txr (txr_variable, txr_splicevar, txr_bracevar): Weren't being
generated into tl.vim. Moved to a common section.
(txr_nested_error): Relocate above other matches.
(txr_ident): Fixed not to match tokens starting with #.
|
| |
|
|
|
|
|
|
|
| |
* share/txr/stdlib/place.tl: Introducing new defplace
for (sys:var ...) which is treated as if it were a symbol,
in anticipation of the op/do macro placing that syntax
with a symbol.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.l (%option): Remove nounput option since we need
yyunput.
(grammar): Rule for matching hex and octal escape in SPECIAL
state recognizes optional semicolon. In 109 compatibility,
this is pushed back into the stream, otherwise consumed.
* txr.1: Updated documentation, including compat notes.
* genvim.txr (txr_char): Include optional semicolon in
match. Corrected some errors where 8 and 9 were being
included as matches for octal digits.
(txr_error): Default match for \x or \o not followed
by digits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.c (read_eval_stream): New boolean argument
to request hash bang support.
* parser.h (read_eval_stream): Declaration updated.
* eval.c (sys_load): Pass new thid argument to read_eval_stream,
to decline hash bang support.
* match.c (v_load): Likewise.
* txr.c (txr_main): Request hash bang support from
read_eval_stream. Thus files referenced from the txr
command line can have a #! line, which is ignored.
|
|
|
|
|
|
|
|
|
| |
* genvim.txr (txr_badesc, txr_stresc, txr_numesc, txr_regesc): New
match categories.
(txr_string, txr_quasilit, txr_regex, txl_regex): No longer use skip=
argument, but rather contain escape categories.
All escapes are colored as Special rather than String, and
unknown or malformed escapes are colored as errors.
|
|
|
|
|
|
|
| |
* genvim.txr (txr_escat): New match category containing \@.
Colorized a String.
(txr_quasilit): Contains txr_escat. Thus, \@ looks like any
other escape inside a quasilit.
|
|
|
|
| |
before a function link.
|
|
|
|
|
|
|
|
| |
* configure (have_timegm, tm_gmtoff, tm_tmzone): Unused
variables removed.
(SIZEOF_LONG_LONG_T): Reference to nonexistent variable fixed.
Also, fixed two instances of arithmetic expressions using
unnecessary $ prefixes on variables.
|
|
|
|
|
|
|
|
|
| |
* eval.c (expand_quasi): When the modifiers argument of a var
item is expanded, the expansion incorrectly places it as the
fourth item rather than third. This is effectively a continuation
of the incomplete regression fix that was applied on 2014-08-29.
The breakage is that `@{(expr) modifier}` ignores modifier
whenever (expr) is an expression that undergoes expansion.
|
|
|
|
|
|
|
|
|
| |
* parser.l (char_esc): Recognize \@ escape.
(grammar): Add a rule for a \@ escape in quasiliterals,
and quasi word list literals.
* txr.1: Document \@, and remove the lie that @@
encodes for a single @ in quasiliterals.
|
|
|
|
|
|
| |
* parser.l (char_esc): Recognize \@ escape.
(grammar): Add a rule for a \@ escape in quasiliterals,
and quasi word list literals.
|
|
|
|
|
|
|
|
|
| |
* parser.l: Only shift to QSPECIAL state when @ is followed
by a trailing context consisting of certain characters.
Not every kind of Lisp object syntax can be introduced
with @ in a quasiliteral. Adding a rule to produce an
error when @ appears that is not followed by an allowed
character.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.l: Do not try to recognize floating-point literals
in QSPECIAL state; that is not possible because @134.3
in a quasiliteral parses as a METANUM followed by ".3".
On the other hand, recognize METANUM literals in QSPECIAL state,
so that @@123 scans. Recognize @ as a token in QSPECIAL state,
so @@abc will scan. When transitioning from QSILIT and QWLIT
states to QSPECIAL upon scanning @, return a @ token, which
is now parsed in the grammar.
* parser.y (quasi_meta_helper): New static function.
(q_var): Do not handle SYMTOK any more, only the braced
variable syntax. SYMTOK is handled as a n_expr.
Braced vars are handled with explicit '@' token, which
is now produced by the scanner when it shifts from QSILIT
to QSPECIAL.
(quasi_item): No longer necessary to recognize various
forms here such as quotes and splices. Just recognize a n_expr,
preceded by '@'.
|
|
|
|
| |
more places such as examples and summary lists.
|
| |
|
|
|
|
|
|
|
|
|
| |
* hash.h (hash_from_pairs, hash_list): Declared.
* eval.c (eval_init): Registered hash-from-pairs and hash-list
intrinsic.
* txr.1: Documented new functions.
|
|
|
|
|
|
|
| |
* lib.c (nary_op): New function.
(plusv, mulv, logandv, logiorv): Use nary_op.
* lib.h (nary_op): Declared.
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (eval_init): Register hash-subset and hash-proper-subset
intrinsics.
* hash.c (hash_subset, hash_proper_subset): New functions.
* hash.h (hash_subset, hash_proper_subset): Declared.
* txr.1: New functions documented.
|
|
|
|
| |
* tl.vim, txr.vim: Regenerated.
|
|
|
|
|
|
| |
whole module.
* genvim.txr: Handle (def's not preceded by spaces.
|
| |
|
|
|
|
|
|
|
|
| |
* share/txr/stdlib/ifa.tl (conda): New macro.
* tests/012/ifa.tl: Adding test for conda.
* txr.1: Documenting conda.
|
|
|
|
|
|
| |
values derived from the title text, so that when sections are inserted
or deleted, the URL's remain stable. The PREAMBLE is gone, and
VERSION is collected when processsing the body.
|
|
|
|
| |
Page date is converted to a time value, and later formatted.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (GEN_HDRS, LISP_TO_C_STRING): Variables removed.
(%.h: %.tl): Rule removed. The place.h header is no longer
generated from place.tl.
* lisplib.c (place_instantiate): Load place.tl from stdlib directory,
rather than obtaining it from a string literal in generated header
place.h.
* place.tl: Moved to share/txr/stdlib directory.
* genvim.txr: Refer to place.tl in stdlib.
|
|
|
|
| |
* txr.1: Document have.
|
|
|
|
|
|
|
| |
* share/txr/stdlib/ifa.tl: Tightened up the tests for
situations when the macro is ill-formed, following
the improved specification. Also, eval-error is thrown
instead of just error.
|
|
|
|
|
|
|
|
|
| |
* Makefile (TEST_OUT): Include .tl files.
(tst/%.out): New rule variant, from .tl prerequisite.
* tests/012/ifa.expected: New file.
* tests/012/ifa.tl: New file.
|
|
|
|
|
| |
its value is nao. Introduced on 2015-06-10, "Error handling improvement
in read".
|
| |
|
|
|
|
| |
calculation.
|
|
|
|
|
|
|
| |
* hash.c (equal_hash): For conses and vectors, ensure that
distinct permutations lead to different hash codes. This is done by
accumulating the partial hash with a multiplier, rather than just
adding subhashes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lisplib.c (ver_set_entries, ver_instantiate,
txr_case_set_entries, txr_case_instantiate): New
static functions.
(lisplib_init): Register new functions.
* share/txr/stdlib/txr-case.txr: Reduced to a load for the
corresponding .tl file, retained for backward compatibility.
* share/txr/stdlib/ver.txr: Likewise.
* share/txr/stdlib/txr-case.tl: New file, based on previous
contents of corresponding .txr file.
* share/txr/stdlib/ver.tl: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile (install): Install .tl files present in stdlib directory.
(INSTALL): Handle argument 2 being a list.
* eval.c (load): New function.
* eval.h (load): Declared.
* lisplib.c (ifa_set_entries, ifa_instantiate): New functions
to lazily load ifa.tl.
(lisplib_init): Register new functions.
* txr.c (stdlib_path): New variable.
(sysroot_init): Store the stdlib path in stdlib_path.
* txr.h (stdlib_path): Declared.
* share/txr/stdlib/ifa.tl: New file.
|
|
|
|
|
|
|
|
|
|
|
| |
* lisplib.c (set_dlt_entries): New static function.
(set_place_dlt_entries): Renamed to place_set_entries.
Uses set_dlt_entries as subroutine.
(place_instantiate): Argument changes from table to function,
which is invoked to null out the hash entries.
(dlt_register): New static function.
(lisplib_init): Use dlt_register to register dynamic loading
of places_tl.
|
| |
|
| |
|
|
|
|
|
| |
* txr.c (help): Added help text.
(txr_main): Handle lisp option.
|
| |
|
|
|
|
|
|
|
| |
* eval.c (sys_load_s): New symbol variable.
(sys_load, me_load): New static functions.
(eval_init): Initialize sys_load_s, register
sys:load intrinsic function and load macro.
|
|
|
|
|
|
|
|
|
|
|
| |
* match.c (v_load): Check txr_lisp_p flag coming out of
open_txr_file and handle the Lisp case usin read_eval_stream.
* parser.c (read_eval_stream, get_parser, parser_errors):
New functions.
* parser.h (read_eval_stream, get_parser, parser_errors):
Declared.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.c (open_txr_file): Rewritten to take new argument
which indicates whether to treat an unsuffixed file as
TXR or TXR Lisp, and is updated to indicate which is the
case by looking at the suffix.
* parser.h (open_txr_file): Declaration updated.
* match.c (v_load): Follow change in open_txr_file.
* txr.c (txr_main): Likewise.
|
|
|
|
|
|
|
|
|
|
| |
* parser.y (spec): New grammar production to handle the cases
that SECRET_ESCAPE_E is not followed by anything (the input
ends before any object is scanned, or there is no input
token which starts an object).
* parser.c (lisp_parse): Deal with EOF indication from parser
(the syntax_tree member of parser_t set to nao).
|