From 54b14a35573aed89670228e5cbfbd820da24aeaf Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 28 Sep 2020 17:10:13 -0700 Subject: Tolerate spaces around `=` in @foo = baz --- compiler.c | 4 ++-- grammars/bpeg.bpeg | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/compiler.c b/compiler.c index 1f2d9ff..ba53579 100644 --- a/compiler.c +++ b/compiler.c @@ -267,9 +267,9 @@ vm_op_t *bpeg_simplepattern(file_t *f, const char *str) case '@': { op->op = VM_CAPTURE; const char *a = *str == '!' ? &str[1] : after_name(str); - if (a > str && a[0] == '=' && a[1] != '>') { + if (a > str && after_spaces(a)[0] == '=' && after_spaces(a)[1] != '>') { op->args.capture.name = strndup(str, (size_t)(a-str)); - str = a + 1; + str = after_spaces(a) + 1; } vm_op_t *pat = bpeg_simplepattern(f, str); check(pat, "Expected pattern after @"); diff --git a/grammars/bpeg.bpeg b/grammars/bpeg.bpeg index 88dc6b1..bf2386e 100644 --- a/grammars/bpeg.bpeg +++ b/grammars/bpeg.bpeg @@ -49,7 +49,7 @@ Repeat: ( Optional: `[ __ extended-pat (__`] / @!={=> "Expected closing square bracket here"}) After: `< _ pat Before: `> _ pat -Capture: `@ [_ @capture-name=(id/`!) !"=>" `=] _ (@capture=pat / @!={=> "Expected pattern to capture"}) +Capture: `@ [_ @capture-name=(id/`!) __ !"=>" `=] __ (@capture=pat / @!={=> "Expected pattern to capture"}) Replace: `{ __ ( [@replace-pat=extended-pat __] "=>" [__ @replacement=String] ) __ (`} / @!={=> "Expected closing brace here"}) -- cgit v1.2.3