| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
should only denote multiple spaces, not mixtures of spaces and
tabs. WE have to be careful with tabs because they can be
semantically different from spaces (e.g. file with tab delimited
fields which can be blank, empty or have leading or trailing spaces.)
* txr.1: Updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
differences between expected and actual test output.
* parser.l (yybadtoken): Handle new terminal symbol, SPACE.
New rule for producing SPACE token out of an extent of
tabs and spaces.
* parser.y (SPACE): New terminal symbol.
(o_var): New nonterminal. I noticed that the var rule was
being used for output elements, and the var rule refers to
elem rather than o_elem. A new o_var rule is a simplified
duplicate of var.
(elem): Handle SPACE token. Transform to regex if it is
a single space, otherwise to literal text.
(o_elem): Handle SPACE token in output.
* tests/001/query-2.txr: This query depends on matching
single spaces and so needs to use escapes.
* tests/001/query-4.txr, test/001/query-4.expected: New test
case, based on query-2.txr. It produces the same output,
but is simpler thanks to the new semantics of space.
* txr.1: Documented.
|
| |
|
| |
|
|
|
|
|
|
| |
(match_line): keyword argument :vars implemented for coll.
* txr.1: Documented :vars.
|
|
|
|
|
| |
end of the line with @(skip) which is now better style,
since it avoids reaching for regexes.
|
|
|
|
|
|
|
|
|
| |
(match_line): Implemented :mintimes and :maxtimes, changing
the semantics of :times.
(match_files): Likewise.
(match_init): New keyword variables initialized.
* txr.1: Updated.
|
|
|
|
|
|
|
|
| |
(match_line): Greedy skip implemented.
(match_files): Likewise.
(match_init): New keyword symbol variable initialized.
* txr.1: Updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(obj_init): New variable initialized.
* lib.h (eol_s): Declared.
* match.c (match_line): Implemented horizontal skip as and
new eol directive.
(match_lines): Vertical skip defers to horizontal skip if
there is trailing material.
* txr.1: Updated.
* lib.c (eol_s): New symbol variable.
(obj_init): New variable initialized.
* lib.h (eol_s): Declared.
* match.c (match_line): Implemented horizontal skip as and
new eol directive.
(match_lines): Vertical skip defers to horizontal skip if
there is trailing material.
* txr.1: Updated.
|
| |
|
|
|
|
|
|
| |
hash.h, lib.c, lib.h, match.c, match.h, parser.h, parser.l, parser.y,
regex.c, regex.h, stream.c, stream.h, txr.1, txr.c, txr.h, unwind.c,
unwind.h, utf8.c, utf8.h: Updated e-mail address.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bugfix in cases inside coll: was not collecting bindings.
Bugfix for until inside coll: was not seeing bindings
from main clause.
* lib.c (ldiff): New function.
* lib.h (ldiff): Declared.
* match.c (match_line): Implemented last clause. Fixed cases
handling by moving misplaced termination check.
(match_files): Implemented last clause.
* parser.y (until_last): New nonterminal symbol.
(collect_clause): Refactored syntax to support until and last.
(elem): Likewise.
* txr.1: Updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New eof directive.
Fixes in skip directive to work very well with eof.
Consecutive variable matching semantics improved; concept of double
variable match introduced for unbound variable followed by
regex variable.
Directives collect and coll have keyword arguments for more control
over their behavior.
Paralle directives (all, some, none, ...) are available in
horizontal mode.
New choose directive for selecting one of numerous alternatives
GC bugfix in new filtering code.
The code has an issue compling with GNU C++ instead of C,
which is something that is supported by this project.
Not a release-blocking issue. Not easy to fix without
restructuring some code.
* txr.c (version): Bumped.
* txr.1: Bumped version and set date.
* configure (txr_ver): Bumped.
|
|
|
|
| |
constructs.
|
|
|
|
| |
variable match.
|
|
|
|
|
|
| |
state, regexes and string literals.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
| |
(match_line): Keyword arguments in coll implemented.
(match_init): chars_k variable initialized.
* parser.l (COLL): Lexical syntax changed to allow for
argument material.
* parser.y (elem): Coll syntax rewritten for arguments.
* txr.1: Updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
symbol variables.
(match_lines): Keyword arguments in collect implemented.
(match_init): New function.
* match.h (match_init): Declared.
* parser.l (COLLECT): Lexical syntax changed for COLLECT to
allow for argument material.
* parser.y (%union): obj renamed to val.
(exprs_opt): New nonterminal.
(collect_clause): Rewritten for arguments.
* txr.c (main): Call to match_init introduced.
|
|
|
|
|
|
|
|
|
|
|
| |
(obj_init): New variable initialized.
* lib.h (eof_s): Declared.
* match.c (match_files): New @(eof) directive explicitly
matches end of data.
* txr.1: Updated.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bugfix in @(throw) when non-symbol is thrown: exception message
referred to the symbol throw rather than the erroneous object.
* filter.c (build_filter_from_list, register_filter): New functions.
* filter.h (register_filter): New function declared.
* lib.c (deffilter_s): New variable defined.
(chain): Function changed from single list argument to variable
argument list to reduce the complexity of use.
(do_and, and): New functions.
(obj_init): deffilter_s initializatio added.
* lib.h (deffilter_s, and): New declarations.
(chain): Declaration updated to new function signature.
(eq): Changed from macro to inline function.
* match.c (do_output_line): Simplified expression involving chain.
(do_output): Likewise.
(match_files): Bugfix in error handling of throw.
Implementation of deffilter.
* txr.1: Documented deffilter.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* filter.c, filter.h: New files.
* Makefile (OBJS): filter.o added.
* gc.c (mark_obj): Mark new alloc field of string objets.
* hash.c (struct hash): New member, userdata.
(hash_mark): Mark new userdata member of hash.
(make_hash): Initialize userdata.
(get_hash_userdata, set_hash_userdata, hashp): New functions.
* hash.h (get_hash_userdata, set_hash_userdata, hashp): New functions
declared.
* lib.c (getplist, string_extend, cobjp): New functions.
(string_own, string, string_utf8): Initialize new alloc field to nil.
(mkstring, mkustring): Initialize new alloc field to actual size.
(length_str): When length is computed and cached, also compute
and cache alloc.
(init): Call filter_init.
* lib.h (string string): New member, alloc.
(num_fast): Macro converted to inline function.
(getplist, string_extend, cobjp): New functions declared.
* match.c (match_line): Follows change of modifier s-exp syntax.
(format_field): New parameter, filter.
New modifier syntax parsed. Filter retrieved, and applied.
(subst_vars): New parameter, filter. Filter is either applied
in this function or passed to format_field, as needed.
(eval_form): Pass nil to new parameter of subst_vars.
(do_output_line): New parameter, filter. Passed down to subst_vars.
(do_output): New parameter, filter. Passed down to do_output_line.
(match_files): Pass nil filter to subst_vars in cat directive.
Output directive refactored to parse keywords, extract the
filter and pass down to do_output.
* parser.y (regex): Generate (sys:regex regex syntax ...)
instead of (regex syntax ...).
(elem, expr): Updated w.r.t. regex syntax change.
(var): Cases '{' IDENT regex '}' and '{' IDENT NUMBER '}'
are removed. new syntax '{' IDENT exprs '}' to handle these
more generally and allow for keywords.
* txr.1: Updated.
|
|
|
|
|
|
| |
lib.h, match.c, match.h, parser.h, parser.l, parser.y, regex.c,
regex.h, stream.c, stream.h, txr.1, txr.c, txr.h, unwind.c, unwind.h,
utf8.c, utf8.h: Updated copyright year.
|
|
|
|
|
|
| |
Leading :nothrow with trailing material is an error now.
* txr.1: Updated. Made note of errors in pipes being asynchronous.
|
|
|
|
|
|
| |
* match.c (match_files): Added a couple of break statements.
* txr.1: Updated.
|
| |
|
|
|
|
|
|
|
|
| |
a minimum number of lines.
* match.c (match_files): New behavior in skip_s case.
* txr.1: Documented.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
once, and a query doesn't execute if it had errors.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Concise precedence table replaces paragraphs.
|
| |
|
| |
|