| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
variables moved from parser.l.
(opt_lisp_bindings): New variable.
(dump_bindings): Dump Lisp syntax bindings
on standard output if opt_lisp_bindings is set.
(v_cat): Do not complain about trailing material;
this is not compatible with horizontal cat.
* parser.l (opt_nobindings, opt_arraydims): Moved
to match.c.
* txr.c (txr_main): New options, --lisp-bindings
and the equivalent -l.
* txr.h: opt_lisp_bindings declared.
|
|
|
|
|
|
|
| |
* match.c (dir_tables_init): Mapping flatten_s, forget_s,
local_s, merge_s, set_s, cat_s and filter_s to hv_trampoline
function, thereby making all these directives work in
horizontal contexts in one fell swoop.
|
|
|
|
|
|
|
|
|
| |
More generic approach.
* match.c (h_bind): Function removed.
(hv_trampoline): New function.
(dir_tables_init): hv_trampoline installed in
h_directive_table instead of h_bind.
|
| |
|
|
|
|
|
|
|
| |
the function call, decline it; it is a horizontal context.
* txr.1: Discussion and examples of calls that are
in a horizontal context.
|
| |
|
| |
|
|
|
|
|
|
|
| |
@(bind) in horizontal mode.
* match.c (mf_from_ml, h_bind): New functions.
(dir_tables_init): h_bind entered into table.
|
|
|
|
| |
function calls.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* match.c (h_fun): New function.
(match_line): Rearranged not to do hash lookup if the directive is a
regex or list. If hash lookup fails, try it as a horizontal function.
(h_define): New function. Handles horizontal function syntax embedded
in line.
(v_define): Handle the horizontal function syntax occuring
on a line by itself. The function info is now stored as a cons cell
whose car is the vertical function and cdr the horizontal one.
(v_fun): Adjust to new function storage convention.
(dir_tables_init): h_define entered in table.
* parser.y: Added syntax for horizontal define.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* match.c (noval_s): New symbol variable.
(vars_to_bindings): Use a default value of noval_s to indicate a
required variable, rather than nil, which would not allow
an optional variable with a default value of nil.
(h_coll, v_collect): Check default value against noval_s, rather than nil.
(v_gather): Support :vars keyword.
(syms_init): Initialize new symbol variable.
* txr.1: Documented gather's :vars parameter.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* match.c (gather_s): New keyword variable.
(v_gather): New function.
(syms_init): gather_s initialized.
(dir_tables_init): v_gather entered into table.
* match.h (gather_s): Declared.
* parser.l: GATHER token scanning added.
* parser.y: GATHER token added. gather_clause nonterminal added.
* txr.1: New directive documented.
* txr.vim: gather keyword introduced.
|
|
|
|
|
| |
Check for failure of GetEnvironmentStringsW, and call
FreeEnvironmentStringsW is called.
|
|
|
|
| |
directive not included in dispatch table.
|
|
|
|
|
|
|
| |
remove the conftest executable, to make sure that the next test will
try to re-make it. The configure runs fast enough that the new
conftest.c does not always have a timestamp which is newer than
previous conftest executable.
|
| |
|
|
|
|
|
|
|
| |
* configure: Test for environ and GetEnvironmentStrings.
* lib.c: Conditionally include <windows.h>.
(env): Implemented for POSIX and Windows with #ifdefs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lib.c (env_list): New static variable.
(env): New function.
(match): Declaration of nonexistent function removed.
(obj_init): New variable gc-protected.
* lib.h (env): Declared.
* match.c (env_k): New symbol variable.
(v_next): Implemented :env.
* txr.1: @(next :env) described.
|
|
|
|
|
| |
pointer hashing of identity-equal objects. Without this, if the
pointer size is not 4 or 8, we fall through to the next case.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Also, highlight embedded metalists as regions.
|
| |
|
|
|
|
| |
Added comment about where to find the right man2html.
|
| |
|
|
|
|
| |
* txr.vim: New file.
|
| |
|
|
|
|
|
|
|
|
| |
* parser.h: Do not include <stdio.h>
* regex.c: Include <limits.h>
* regex.h: Do not include <limits.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Changing the parameter passing convention for vertical directives.
They take one parameter which is a pointer, rather than a copy
of the structure. They do not have to perform a structure
assignment when returning next_spec_k.
* match.c (v_match_func): Typedef updated to new function
signature.
(v_skip, v_trailer, v_freeform, v_block, v_accept, v_accept, v_next,
v_parallel, v_collect, v_flatten, v_forget, v_forget, v_merge, v_bind,
v_set, v_cat, v_output, v_define, v_try, v_defex, v_throw, v_deffilter,
v_filter, v_eof, v_fun): Refactored.
(match_files): Updated dispatch logic to new style calls.
(match_funcall): Updated to new way of calling v_fun.
|
|
|
|
|
| |
Added something about mem_t *, and a few extra words here and there,
including a blurb about a Valgrind debugging caveat.
|
|
|
|
|
|
| |
* txr.1: Added explanations about the differences between
empty streams and empty lines, and to watch out when passing
empty strings to @(next :string ...).
|
|
|
|
|
|
|
|
|
| |
* parser.h (parse_init): Declared.
* parser.l (parse_init): New function.
* txr.c (main): Call parse_init.
(txr_main): No need to gc-protect yyin_stream since parse_init does it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.l (prepared_error_message): New static variable.
(yyerror): Emit and clear prepared error message.
(yyerrprepf): New static function.
(yybadtoken): Function moved into parser.y.
(grammar): For irrecoverable lexical errors, stash error message
with yyerrprepf and return the special error token ERRTOK to generate a
syntax error. I could find no other interface to the parser to make it
cleanly exit.
* parser.y (ERRTOK): New terminal symbol, does not appear anywhere
in the grammar.
(spec): Bail after 8 errors, recover to nearest newline, and
use yyerrok to clear error situation.
(YYEOF): Provided by Bison, conditionally defined for other yacc-s.
(yybadtoken): Function moved from parser.l. Checks for the next
token being YYEMPTY or YYEOF, and also handles ERRTOK.
* stream.c (vformat_to_string): New function.
(format): If stream is nil, format to string and return it.
* stream.h (vformat_to_string): Declared.
|
|
|
|
| |
* tests/001/query-3.txr: Updated to new cat syntax.
|
|
|
|
|
|
| |
* match.c (v_cat): Rewritten.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(get_filter): Treat (:fun ...) syntax as a single function
call with extra arguments, currying it up as curried function that
invokes match_funcall once.
* match.c (match_funcall): Extended to take a list of the
additional arguments from get_filter. Adds these to the
function call form generated for the v_func call.
* match.h (match_funcall): Declaration updated.
* txr.1: Function Filter additional arguments documented.
|
|
|
|
| |
and fixed resulting errors that were found.
|
|
|
|
|
|
|
|
| |
(v_filter): New function.
(syms_init): New symbol variable initialized.
(dir_tables_init): New function entered into table.
* txr.1: Documented new filter directive.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
replacement text.
* filter.c (build_filter_from_list): Allow tuples to denote
multiple keys mapping to the same value.
* lib.c (do_curry_123_2, do_curry_123_1): New static functions.
(curry_123_2, curry_123_1): New functions.
* lib.h (curry_123_2, curry_123_1): New functions declared.
* match.c (v_deffilter): Allow tuples of strings rather than
just pairs.
* txr.1: Updated.
|
|
|
|
| |
from %right associativity clause.
|
| |
|
|
|
|
|
|
|
| |
(function_filter): Use :fun keyword symbol instead of fun.
(filter_init): New keyword variable initialized.
* filter.h (upcase_k, downcase_k, fun_k): Declared.
|
|
|
|
| |
info.
|
|
|
|
|
|
|
| |
* lib.c (search_str_tree): If multiple strings from the needle tree
matching within within the haystack string, then take the leftmost
match. If there are multiple matches at the same leftmost position,
take the longest one.
|