diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-05-22 20:03:13 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-05-22 20:03:13 -0700 |
commit | 42afde14b0e59de2e0f938806323dad9e2e5ed06 (patch) | |
tree | 3d00929c93994345382cc10dae674704cd5ef11a /match.c | |
parent | a580c45de5a825165f46d95206d9ac3c2c52fcd6 (diff) | |
download | txr-42afde14b0e59de2e0f938806323dad9e2e5ed06.tar.gz txr-42afde14b0e59de2e0f938806323dad9e2e5ed06.tar.bz2 txr-42afde14b0e59de2e0f938806323dad9e2e5ed06.zip |
txr: support variable in postive match.
In the @{var mod} syntax in the pattern language, allow mod to
be a variable which contains a regex or integer, not just an
integer or regex literal.
* match.c (h_var): Check for modifier being a variable, and
resolve it.
* parser.y (modifiers): Allow a SYMTOK phrase.
* txr.1: Documented.
Diffstat (limited to 'match.c')
-rw-r--r-- | match.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -596,6 +596,11 @@ static val h_var(match_line_ctx *c) sym, nao); } + if (bindable(modifier)) { + val mpair = tx_lookup_var_ubc(modifier, c->bindings, elem); + modifier = cdr(mpair); + } + if (pair) { /* If the variable already has a binding, we replace it with its value, and treat it as a string match. |