1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
TXR 042
2011-11-??
Features
- Access to environment via @(next :env)
- New @(gather) directive for matching out-of-order material.
- Horizontal functions:
- TXR can now parse grammars.
- Variable syntax allows capture of text spanned by function calls:
e.g. @{var (func x y)}: text spanned by (func x y) goes into var.
- Horizontal modes for numerous directives such as @(bind), @(local), ...
- Lisp-style bindings output.
- Interactive breakpoint/step debugger added.
This is an experimental prototype, but already quite useful.
- Directives following a variable match have searching semantics now,
as do function calls. @a@(foo) will scan for a match for @(foo),
and the text skipped over is captured by a.
- New :resolve keyword in @(some) directive allowing conflicting
variable bindings to be set in separate clauses and resolved.
- deffilter is more powerful: arguments are evaluated so filters can
be computed by the query.
Bugs
- Horizontal @(some) directive hooked in.
- @(freeform) with no data fails to match instead of throwing strange error.
- Setting non-local variables from a function works now.
- Stability fix: several long-time uninitialized variable bugs found,
and some faulty object initialization orders.
- :vars in @(collect)/@(coll) does not fire an exception about missing
required variables if no variable bindings are produced at all,
allowing strict collects to have explicit matches for unwanted material
without triggering this nuisance error.
- @(repeat)/@(rep) allow empty body.
Internal
- New infrastructure for matching location info to source forms.
Location info (currently just the line number) is associated with
source forms via a weak hash table.
- Character literals are now Lispy (hash-backslash syntax), based on Scheme.
- Added quote, unquote and splicing syntax similar to Lisp. Not used
for anything yet.
- Improved Valgrind integration: more accurate, timely detection of
uninitialized fields in heap objects.
Misc.
- A TXR syntax highlighting file for the Vim editor exists
now. See the txr.vim file.
TXR 041
2011-10-30
Features
- New :append keyword in @(output) to append instead of overwriting.
- Variable contents can be treated as input sources using :string
and :list keywords in @(next). Variables can be treated as output
destinations using :into keyword in @(output).
- New @(set) directive for destructive assignment to a variable.
- New filters: :upcase and :downcase.
- @(bind) can now compare left and right objects through filters.
- Filters can now be chained into compound filters.
- Pattern matching functions can be used as filters.
- Shorthand notation in @(deffilter) when multiple strings map to the
same replacement string.
- @(cat) directive changes syntax.
- Error handling improvements in parser: no more reams and reams of
errors.
Bugs
- Runaway recursion in @(block) directive, introduced in 040.
- Fixed bug in matching list variable against text, at the same
time clarifying semantics to longest-match.
- Fixed potential excessive memory use caused by refactoring in 040.
|