| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
the Valgrind support at run-time, in addition to building it in.
|
| |
|
|
|
|
|
|
|
|
| |
* Makefile: Defined TXR_ARGS for new test case.
* tests/008/students.expected: New file.
* tests/008/students.txr: New file.
* tests/008/students.xml: New file.
|
|
|
|
|
| |
inform the garbage collector about the filters global variable.
Ouch!
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile: Made previous TXR_ARGS for 008 specific
to tokenizing test case, and introduced separate TXR_ARGS
for this test case.
* tests/008/configfile: New file.
* tests/008/configfile.expected: New file.
* tests/008/configfile.txr: New file.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
and horizontal @(choose :shortest ...).
* Makefile: Defined TXR_ARGS for tests/008 directory.
* tests/008/data: New file.
* tests/008/tokenize.expected: New file.
* tests/008/tokenize.txr: New file.
|
|
|
|
|
|
|
|
|
|
| |
function invocations.
* Makefile (TEST): Test targets marked as .PHONY, because they are.
* tests/007/except-1.expected: New file.
* tests/007/except-1.out: New file.
* tests/007/except-1.txr: New file.
|
|
|
|
|
| |
cases_clause, choose_clause, elem): Regression bug fix: bad list calls
in parser, lacking nao terminator.
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
ChangeLog
Lost commit.
|
| |
| |
| |
| |
| |
| |
| |
| | |
2011-09-28 commit which introduced the double var match.
* match.c (match_line): Handle case where modifier is t.
* parser.y (var_op): Produce modifir as (t) rather than t.
|
|/
|
|
| |
constructs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* match.c (choose_s, longest_k, shortest_k): New variables.
(match_line, match_files): Introduced choose directive.
(match_init): Initialize new variables.
* match.h (choose_s): Declared.
* parser.l (yybadtoken): Handle CHOOSE.
(CHOOSE): Clause added for returning this token.
* parser.y: Added #include "match.h".
(CHOOSE): New token symbol.
(choose_clause): New nonterminal symbol.
(clause): choose_clause added.
(all_clause, some_clause, none_clause, maybe_clause,
cases_clause): Abstract syntax tree tweaked.
(choose_clause): New syntax.
(elem): Abstract syntax trees tweaked for many clauses.
New CHOOSE clauses.
(out_clause): New error case for choose_clause.
|
| |
|
|
|
|
| |
variable match.
|
|
|
|
|
|
| |
state, regexes and string literals.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
| |
none, maybe and cases directives.
(match_files): Recognize horizontal version of these directives
by the presence of the extra symbol t and do not process.
Also, bugfix in the all directive: not resetting the
all_match flag when short circuiting out.
* parser.y (clause_parts_h, additional_parts_h): New nonterminals.
(elem): New clauses added.
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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.
|
|
|
|
| |
prepend the next_pat to the specline if it is nil.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
regex variables which also have nested variables.
Previously this code was assuming that the cases were
mutually exclusive, and the parser happened to work that way.
Also, added support for a "double var" match which occurs
when an unbound variable is followed by a regex variable.
This case should be allowed because it makes sense.
It's similar to a variable followed by a regex, except
that the regex is also a variable binding.
* parser.y (o_elems_transform): New function.
(o_elems_opt, o_elems_opt2, quasilit): Transform o_elems with new
function. This is needed because subst_vars doesn't
deal with the nested var syntax for consecutive variables.
(var): New syntax case '{' IDENT exprs '}' elem. This
allows consecutive variables to be nested in all cases.
|
|
|
|
|
| |
These must have exactly the same precedence as
IDENT for this to work right, of course.
|
|
|
|
|
|
|
| |
terminals was causing @foo@foo to be parsed differently
from @foo@{foo}. We need consecutive variables to be
specially folded in the syntax under a single var_s
node.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The test for !data should be done after matching,
before incrementing to the next line. Then it is a true
bottom of the loop test. This commit allows
@(skip)
@first_line
@(skip nil 3)
@(eof)
to correctly match the first line of the input, not
the fourth one from the bottom, since the
second skip has an unbounded range.
|
|
|
|
|
|
|
| |
If a hard skip tries to go beyond EOF, then the query
must fail. However, a skip to exactly EOF is fine.
I.e. data can hit nil at the same time as the right
number of skip iterations is performed.
|
|
|
|
|
|
|
|
|
|
|
|
| |
We should try the match at least once even if there is no data
after a hard skip, so that the query has an opportunity
to do an explicit match for no data, as with @(endp).
This commit makes possible queries like:
@fourth_line_from_bottom
@(skip 1 3)
@(eof)
This query depends on @(skip 1 3) not failing when
it runs out of data, because @(eof) checks for htis.
|
|
|
|
|
|
|
|
|
|
|
| |
(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.
|
|
|
|
|
|
|
|
|
| |
* filter.c (html_hex_continue): Bail with nil if no digits
are collected. The &#x; syntax is not translated to anything.
(html_dec_continue): New function.
(html_hex_handler): Function renamed to html_numeric_handler.
(filter_init): Change function-based trie node over to
html_numeric_handler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
chr function inlined.
* filter.c (trie_value_at, trie_lookup_feed_char): Handle function
case.
(build_filter): New parameter, compress_p.
(html_hex_continue, html_hex_handler): New functions.
(filter_init): Add a function-based node to the from_html trie.
* lib.c (chr): Function removed.
(functionp) New function.
* lib.h (chr): Declaration replaced with inline function.
(functionp): Declared.
* match.c (format_field): Bugfix: failed to apply filter
that came in as an argument.
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
backslash codes for single backslash. Output clause can be empty.
* parser.l (char_esc): Backslash handled.
Use internal_error rather than abort.
(REGCHAR, LITCHAR): Backslash added to lexical syntax.
* parser.y (output_clause): Allow empty output clause.
|
|/
|
|
|
|
|
|
|
|
| |
backslash codes for single backslash. Output clause can be empty.
* parser.l (char_esc): Backslash handled.
Use internal_error rather than abort.
(REGCHAR, LITCHAR): Backslash added to lexical syntax.
* parser.y (output_clause): Allow empty output clause.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bugfix in typeof.
* filter.c (trie_compress): New function.
(trie_value_at, trie_lookup_feed_char, filter_string): Handle cons cell
nodes in trie.
(build_filter): Call trie_compress.
* gc.c (cobj_destroy_op): Function renamed to cobj_destroy_stub_op
since it doesn't do anything.
(cobj_destroy_free_op): New function.
* hash.c (struct hash_iter): New type.
(hash_destroy): Function removed.
(hash_ops): Reference to hash_destroy replaced with
cobj_destroy_free_op.
(hash_count, hash_iter_mark, hash_begin, hash_next): New functions.
(hash_iter_ops): New static structure.
* hash.h (hash_count, hash_begin, hash_next): New functions declared.
* lib.c (hash_iter_s): New symbol variable.
(typeof): Bugfix: TAG_LIT type tag not handled.
(vecref): New function.
(obj_init): Initialize hash_iter_s.
* lib.h (cobj_destroy_op): Declaration renamed.
(cobj_destroy_free_op, vecref): New functions declared.
(hash_iter_s): New variable declared.
* stream.c (string_in_ops, byte_in_ops): cobj_destroy_op
renamed to cobj_destroy_stub_op.
|
| |
|
|
|
|
|
|
|
| |
* filter.c (from_html_k): New variable.
(to_html_table): New static array.
(filter_init): Intern new symbol. Instantiate new filter
and store in filters hash.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Vector code cleanup.
* lib.h (zero, one, two, negone, maxint, minint): Extern declarations
removed, macros introduced for these identifiers.
* lib.c (zero, one, two, negone, maxint, minint): File scope
definitions removed.
(vector): Use vec_alloc and vec_fill enums instead of constants.
(obj_init): Remove references to removed definitions.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
features. Support for obsolescent @(next) syntax is gone.
|
|
|
|
|
|
| |
* 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.
|
| |
|
| |
|