summaryrefslogtreecommitdiffstats
path: root/ChangeLog
Commit message (Collapse)AuthorAgeFilesLines
...
* Trie compression. Hash table iteration.Kaz Kylheku2011-09-261-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Filtering from HTML implemented.Kaz Kylheku2011-09-251-0/+9
| | | | | | | * 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.
* Filtering feature for variable substitution in output.Kaz Kylheku2011-09-251-0/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* Numeric constants become real constants.Kaz Kylheku2011-09-241-0/+14
| | | | | | | | | | | | 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.
* Removed redundant text.Kaz Kylheku2011-09-231-2/+0
|
* * LICENSE, Makefile, configure, gc.c, gc.h, hash.c, hash.h, lib.c,Kaz Kylheku2011-09-231-0/+9
| | | | | | 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.
* * match.c, parser.y: Support for old output syntax removed.Kaz Kylheku2011-09-231-0/+7
| | | | | | Leading :nothrow with trailing material is an error now. * txr.1: Updated. Made note of errors in pipes being asynchronous.
* * tests/002/query-1.txr: Old next syntax rewritten to new.Kaz Kylheku2011-09-231-0/+4
|
* * match.c (match_files): Some cleanup in preparation of newKaz Kylheku2011-09-231-1/+6
| | | | features. Support for obsolescent @(next) syntax is gone.
* Semantics tweak: short circuiting behavior for @(all) and @(none).Kaz Kylheku2011-09-231-0/+8
| | | | | | * match.c (match_files): Added a couple of break statements. * txr.1: Updated.
* Version 036.txr-036Kaz Kylheku2011-09-221-0/+12
|
* Useful second argument in skip directive for skippingKaz Kylheku2011-09-221-0/+9
| | | | | | | | a minimum number of lines. * match.c (match_files): New behavior in skip_s case. * txr.1: Documented.
* Changelog mistakes.Kaz Kylheku2010-10-051-3/+3
|
* Version 035.Kaz Kylheku2010-10-051-0/+20
|
* * match.c (match_files): Bugfix. A (sub)query that runs out of dataKaz Kylheku2010-10-041-0/+6
| | | | | lines to match must fail. Extra data lines relative to the spec are tolerated; extra spec lines unmet by data aren't.
* * lib.h (lazy_string): Fix incorrect comment.Kaz Kylheku2010-10-031-0/+10
| | | | | | | | * lib.c (split_str, split_str_set): It is necessary to protect input parameters against GC, because we cache their internal pointers, after which we no longer refer to the objects themselves. Moreover, we perform object allocation, and then keep using the internal pointers.
* * txr.1: Fix formatting problem.Kaz Kylheku2010-09-301-0/+4
|
* * txr.1: Fix inaccuracies: files are not read into memory all atKaz Kylheku2010-03-011-1/+6
| | | | once, and a query doesn't execute if it had errors.
* Version 034.txr-034Kaz Kylheku2010-02-281-0/+12
|
* More testcases.Kaz Kylheku2010-02-281-1/+5
|
* New testcase for freeform.Kaz Kylheku2010-02-281-0/+13
|
* * lib.c (length_str_gt, length_str_ge, length_str_lt, length_str_le):Kaz Kylheku2010-02-281-0/+5
| | | | Added missing support for literal string type.
* * lib.c (search_str): Bugfix for empty haystack case: checks for endKaz Kylheku2010-02-271-0/+6
| | | | | of string must use postincrement on the index, otherwise the access goes past the null terminator.
* * match.c (match_lines): Bugfix in freeform directive.Kaz Kylheku2010-02-271-0/+11
| | | | | | | | | | If the virtual line is partially matched, the remainder of the line is folded back into list form. In this case, the data line number must be incremented. Otherwise the calling context may conclude that no progress was made, and skip a line of input. I.e. the unmatched part of the input is a new line, even if there had originally been no line break at that point.
* * lib.h (split_str_sep): Declared.Kaz Kylheku2010-02-271-0/+11
| | | | | | | | | * lib.c (split_str_sep): New function. (split_str): Semantics changed; the second argument is not a set of separator characters (like in split_str_sep) but rather a separator string. Fixed bug: if the input string is empty, the output list is empty. This caused infinite looping behavior in @(freeform).
* * lib.c (init_str): Bugfix: copy only len characters, not len + 1, soKaz Kylheku2010-02-241-0/+7
| | | | | | that we don't clobber the null terminator in the target string, or try read past the end of the source data. This affects the @(freeform) directive.
* Version 033.Kaz Kylheku2010-01-261-0/+13
|
* Restoring missing ChangeLog entry.Kaz Kylheku2010-01-261-1/+14
|
* hash.c (hash_process_weak): There is no point in fixing upKaz Kylheku2010-01-261-0/+7
| | | | | | the type codes of spuriously reached nodes; reached objects will not be removed by weak processing and so it's better to just detect those situations and short-circuit.
* Optimization in derivative-based regex engine.Kaz Kylheku2010-01-261-0/+18
| | | | | | | | Exponential memory consumption behavior was observed when matching the input aaaaaa.... against the regex a?a?a?a?....aaaa.... The fix is to eliminate common subexpressions from the derivative for the or operator.
* Version 032.Kaz Kylheku2010-01-251-0/+15
|
* Version 031.txr-031Kaz Kylheku2010-01-251-0/+14
|
* Fix screwup in previous change: value treated as a consKaz Kylheku2010-01-251-1/+1
| | | | in a code path where it sometimes isn't.
* * match.c (match_files): Workaround for GC issueKaz Kylheku2010-01-241-0/+8
| | | | | | | discovered on Red Hat EL 4 with gcc 3.4.3. In the collect loop, set car(success) to nil. Somehow the generated code hangs on to the last matching position for a regex, preventing GC.
* * stream.c (vformat_num): Fix bad width calculation.Kaz Kylheku2010-01-241-0/+4
|
* Fix for unbounded memory growth problem reproduced with GCC 4.4.1Kaz Kylheku2010-01-211-0/+14
| | | | | | on 32 bit x86 Fedora. This happens because the lazy list variable ``data'' in the match_files function is optimized to a register, but a stale value of that variable persists in the backing storage.
* * match.c (match_files): Reduce scope, and bogus use of, datalineKaz Kylheku2010-01-211-0/+5
| | | | variable.
* Version 030.txr-030Kaz Kylheku2010-01-191-0/+14
|
* More regex grammar work.Kaz Kylheku2010-01-191-0/+11
|
* Resolving parser conflicts.Kaz Kylheku2010-01-191-0/+16
|
* Version 029.Kaz Kylheku2010-01-181-3/+19
|
* * regex.c (reg_derivative_list, reg_derivative): RecognitionKaz Kylheku2010-01-181-0/+10
| | | | | | | | | of cases to reduce consing. In reg_derivative_list, we avoid consing the full or expression if either branch is t, and also save a cons when the first element has a null derivative. In reg_derivative the oneplus and zeroplus cases are split, since zeroplus can re-use the input expression, when it's just a one-character match, deriving nil.
* Adjust semantics of non-greedy operator R%S, to avoid the brokenKaz Kylheku2010-01-181-0/+15
| | | | | | | | case whereby R%S matches nothing at all when S is not empty but equivalent to empty, or more generally when S is nullable. A much nicer definition is ``the intersection of R* and the set of all strings that do not contain a non-empty substring that matches S, followed by S''.
* * parser.y (regterm, regclass): Relocate handlingKaz Kylheku2010-01-171-0/+5
| | | | of empty [] into regterm, via empty derivation.
* Regex syntactic tweaks: support the [] syntaxKaz Kylheku2010-01-161-0/+10
| | | | | to match no character and [^] as its complement, being synonymous with the wildcard dot.
* Version 028.Kaz Kylheku2010-01-161-0/+20
|
* Describe Kleene and non-greedy behavior more accurately.Kaz Kylheku2010-01-151-0/+1
|
* * txr.1: Get rid of parens from regex operator descriptions.Kaz Kylheku2010-01-151-0/+1
| | | | | Correct wrong text: all operators can take an empty regex. Clarify escaping rules within a character class.
* * txr.1: Get rid of parens from regex operator descriptions.Kaz Kylheku2010-01-151-0/+1
| | | | Correct wrong text: all operators can take an empty regex.
* * txr.1: Get rid of parens from regex operator descriptions.Kaz Kylheku2010-01-151-0/+4
|