Tweaks to CLI, bugfix for escape replacements

This commit is contained in:
Bruce Hill 2020-09-12 01:32:59 -07:00
parent 5c047efcb7
commit e967345937
3 changed files with 4 additions and 5 deletions

7
bpeg.c
View File

@ -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);

View File

@ -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"

1
vm.c
View File

@ -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 != '@') {