diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2020-09-28 17:10:13 -0700 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2020-09-28 17:10:13 -0700 |
| commit | 54b14a35573aed89670228e5cbfbd820da24aeaf (patch) | |
| tree | 332e62e481f78e360f5ad42ba143c5694489940c | |
| parent | c15b118bb431bffaebb1f2a2d14c3f4e74a3218b (diff) | |
Tolerate spaces around `=` in @foo = baz
| -rw-r--r-- | compiler.c | 4 | ||||
| -rw-r--r-- | grammars/bpeg.bpeg | 2 |
2 files changed, 3 insertions, 3 deletions
@@ -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"}) |
