aboutsummaryrefslogtreecommitdiff
path: root/grammars
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2020-09-28 17:42:38 -0700
committerBruce Hill <bruce@bruce-hill.com>2020-09-28 17:42:38 -0700
commit544a88e9d4faa3f7e34316daaa01d2fa14d1d9f6 (patch)
tree77c3b3a35d04c7ab31aa5b7461d387ecf2a70b33 /grammars
parent54b14a35573aed89670228e5cbfbd820da24aeaf (diff)
Added +/*/? postfix operators
Diffstat (limited to 'grammars')
-rw-r--r--grammars/bpeg.bpeg18
1 files changed, 11 insertions, 7 deletions
diff --git a/grammars/bpeg.bpeg b/grammars/bpeg.bpeg
index bf2386e..ce10bc1 100644
--- a/grammars/bpeg.bpeg
+++ b/grammars/bpeg.bpeg
@@ -9,17 +9,21 @@ Def: @name=id _ `: __ (
# This is used for command line arguments:
String-pattern: 0+(`\ (escape-sequence / pat [`;]) / .)
-pat: suffixed-pat / simple-pat
+pat: simple-pat !(__("=="/`*/`+/`?)) / suffixed-pat
simple-pat: Upto-and / Dot / String / Char-range / Char / Escape-range / Escape / No
/ Nodent / Repeat / Optional / After / Before / Capture / Replace / Ref / parens
-suffixed-pat: Eq-pat / simple-pat [
- @!={`* => "'*' is not a BPEG operator. Use 0+<pat> instead of <pat>*"}
- / @!={`+ => "'+' is not a BPEG operator. Use 1+<pat> instead of <pat>+"}
- / @!={`? => "'?' is not a BPEG operator. Use [<pat>] instead of <pat>?"}
-]
+suffixed-pat: (
+ Eq-pat
+ / Star-pat
+ / Plus-pat
+ / Question-pat
+)
-Eq-pat: @first=simple-pat "==" @second=pat
+Eq-pat: @first=pat__"=="__@second=pat
+Star-pat: pat __ `* @min={=>"0"} @max="" [__`%__@sep=pat]
+Plus-pat: pat __ `+ @min={=>"1"} @max="" [__`%__@sep=pat]
+Question-pat: pat __ `?
Dot: `. !`.
String: (