diff options
| -rw-r--r-- | bpeg.c | 7 | ||||
| -rw-r--r-- | grammar.c | 1 | ||||
| -rw-r--r-- | vm.c | 1 |
3 files changed, 4 insertions, 5 deletions
@@ -86,10 +86,7 @@ int main(int argc, char *argv[]) } else if (FLAG("--verbose") || FLAG("-v")) { verbose = 1; } else if (FLAG("--pattern") || FLAG("-p")) { - vm_op_t *p = bpeg_pattern(flag); - check(p, "Pattern failed to compile"); - add_def(g, flag, "pattern", p); - ++npatterns; + rule = flag; } else if (FLAG("--replace") || FLAG("-r")) { vm_op_t *p = bpeg_replacement(bpeg_pattern("pattern"), flag); check(p, "Replacement failed to compile"); @@ -126,7 +123,7 @@ int main(int argc, char *argv[]) } vm_op_t *pattern = lookup(g, rule); - check(pattern != NULL, usage); + check(pattern != NULL, "No such rule: '%s'", rule); if (verbose) { print_pattern(pattern); @@ -13,6 +13,7 @@ const char *BPEG_BUILTIN_GRAMMAR = ( "replace-all = *&&@replacement &&$$;\n" "find-all = *(matching-line / {&&(\\n/$$)=>});\n" "matching-line = +&@pattern *. $ ?\\n;\n" + "only-matches = *{&&@pattern=>'@1\\n'};\n" // Helper definitions (commonly used) "crlf=\\r\\n;\n" @@ -377,6 +377,7 @@ void print_match(match_t *m, const char *color, int verbose) printf("\033[0;34m"); for (const char *r = m->name_or_replacement; *r; ) { if (*r == '\\') { + ++r; fputc(unescapechar(r, &r), stdout); continue; } else if (*r != '@') { |
