| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
* stream.c (cat_unget_byte, cat_unget_char): Recursive
call to unget_byte and unget_char with reversed arguments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.c (parser_destroy): New GC finalizer static function.
(parser_ops): Register parser_destroy.
(parser_common_init): New function, shared by parse and parse_once.
Initializes embedded scanner.
(parser_cleanup): New function, shared by parse_once and
parser_destroy.
(parser): Use parser_common_init.
* parser.h (parser_t): New member, yyscan.
(reset_scanner, parser_common_init): Declared.
* parser.l (reset_scanner): New function.
* parser.y (parse_once): Use parser_common_init, and
thus perform only a few initializations. Do not
define scanner as a local variable.
(parse): Call reset_scanner instead of
yylex_init since the scanner is being reused,
and for the same reason do not call yylex_destroy.
GC will do that now.
|
|
|
|
|
| |
* lisplib.c (place_set_entries): Add define-modify-macro to
list of names.
|
| |
|
|
|
|
|
|
|
| |
* 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.
|
| |
|