summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/c1/grammar/peg.txt35
-rw-r--r--docs/c1/grammar/zbnf.txt35
2 files changed, 40 insertions, 30 deletions
diff --git a/docs/c1/grammar/peg.txt b/docs/c1/grammar/peg.txt
index cee9c84..7b28a99 100644
--- a/docs/c1/grammar/peg.txt
+++ b/docs/c1/grammar/peg.txt
@@ -2,11 +2,12 @@
Stream <- Unit ( Blank Unit )* !.
-Unit <- Blank* Datum
+Unit <- Blank* Datum
Blank <- [\t-\r ] / Comment
+
Datum <- OneDatum ( JoinChar? OneDatum )*
JoinChar <- '.' / ':'
@@ -21,22 +22,25 @@ SkipLine <- (!'\n' .)* '\n'?
OneDatum <- BareString / CladDatum
+
BareString <- SpecBareChar ( BareChar / JoinChar )*
/ BareChar+
+SpecBareChar <- '+' / '-' / JoinChar / DIGIT
+
+BareChar <- ALPHA / DIGIT
+ / '!' / '$' / '%' / '*' / '+' / '-' / '/'
+ / '<' / '=' / '>' / '?' / '^' / '_' / '~'
+
+
CladDatum <- PipeStr / QuoteStr / HashExpr / QuoteExpr / List
PipeStr <- '|' ( PipeStrChar / '\' StringEsc )* '|'
QuoteStr <- '"' ( QuotStrChar / '\' StringEsc )* '"'
-HashExpr <- '#' ( RuneExpr / HashBang / LabelExpr / HashDatum )
+HashExpr <- '#' HashExprs
QuoteExpr <- "'" Datum / '`' Datum / ',' Datum
List <- ParenList / SquareList / BraceList
-SpecBareChar <- '+' / '-' / JoinChar / DIGIT
-
-BareChar <- ALPHA / DIGIT
- / '!' / '$' / '%' / '*' / '+' / '-' / '/'
- / '<' / '=' / '>' / '?' / '^' / '_' / '~'
PipeStrChar <- (![|\\] .)
QuotStrChar <- (!["\\] .)
@@ -49,14 +53,17 @@ StringEsc <- '\' / '|' / '"' / ( HTAB / SP )* LF ( HTAB / SP )*
HexByte <- HEXDIG HEXDIG
UnicodeSV <- HEXDIG+
-RuneExpr <- Rune ( '\' BareString / CladDatum )?
-HashBang <- '!' [\t ]* HBLine '\n'?
-LabelExpr <- '%' Label ( '%' / '=' Datum )
-HashDatum <- '\' BareString / CladDatum
-Rune <- ALPHA ( ALPHA / DIGIT )*
-HBLine <- HBChars+ [\t ]* ( HBChars+ )?
+HashExprs <- '!' [\t ]* HBangLine '\n'?
+ / '%' Label ( '%' / '=' Datum )
+ / '\' BareString / CladDatum
+ / Rune ( '\' BareString / CladDatum )?
+
+HBangLine <- HBChars+ [\t ]* ( HBChars+ )?
+HBChars <- (![\t\n ] .)
Label <- HEXDIG+
+Rune <- ALPHA ( ALPHA / DIGIT )*
+
ParenList <- '(' ListBody ')'
SquareList <- '[' ListBody ']'
@@ -64,8 +71,6 @@ BraceList <- '{' ListBody '}'
ListBody <- Unit* ( Blank* '&' Unit )? Blank*
-HBChars : ~( SP | HTAB | LF )
-
DIGIT <- [0-9]
ALPHA <- [a-zA-Z]
diff --git a/docs/c1/grammar/zbnf.txt b/docs/c1/grammar/zbnf.txt
index 704db22..923ac83 100644
--- a/docs/c1/grammar/zbnf.txt
+++ b/docs/c1/grammar/zbnf.txt
@@ -2,11 +2,12 @@
Stream : Unit ( Blank Unit )*
-Unit : Blank* [Datum]
+Unit : Blank* [Datum]
Blank : '\t'...'\r' | SP | Comment
+
Datum : OneDatum ( [JoinChar] OneDatum )*
JoinChar : '.' | ':'
@@ -21,22 +22,25 @@ SkipLine : ( ~LF )* [LF]
OneDatum : BareString | CladDatum
+
BareString : SpecBareChar ( BareChar | JoinChar )*
| BareChar+
+SpecBareChar : '+' | '-' | JoinChar | DIGIT
+
+BareChar : ALPHA | DIGIT
+ | '!' | '$' | '%' | '*' | '+' | '-' | '/'
+ | '<' | '=' | '>' | '?' | '^' | '_' | '~'
+
+
CladDatum : PipeStr | QuoteStr | HashExpr | QuoteExpr | List
PipeStr : '|' ( PipeStrChar | '\' StringEsc )* '|'
QuoteStr : '"' ( QuotStrChar | '\' StringEsc )* '"'
-HashExpr : '#' ( RuneExpr | HashBang | LabelExpr | HashDatum )
+HashExpr : '#' HashExprs
QuoteExpr : "'" Datum | '`' Datum | ',' Datum
List : ParenList | SquareList | BraceList
-SpecBareChar : '+' | '-' | JoinChar | DIGIT
-
-BareChar : ALPHA | DIGIT
- | '!' | '$' | '%' | '*' | '+' | '-' | '/'
- | '<' | '=' | '>' | '?' | '^' | '_' | '~'
PipeStrChar : ~( '|' | '\' )
QuotStrChar : ~( '"' | '\' )
@@ -49,14 +53,17 @@ StringEsc : '\' | '|' | '"' | ( HTAB | SP )* LF ( HTAB | SP )*
HexByte : HEXDIG HEXDIG
UnicodeSV : HEXDIG+
-RuneExpr : Rune [ '\' BareString | CladDatum ]
-HashBang : '!' ( SP | HTAB )* HBLine [ LF ]
-LabelExpr : '%' Label ( '%' | '=' Datum )
-HashDatum : '\' BareString | CladDatum
-Rune : ALPHA ( ALPHA | DIGIT )*
-HBLine : HBChars+ ( SP | HTAB )* [ HBChars+ ]
+HashExprs : '!' ( SP | HTAB )* HBangLine [ LF ]
+ | '%' Label ( '%' | '=' Datum )
+ | '\' BareString | CladDatum
+ | Rune [ '\' BareString | CladDatum ]
+
+HBangLine : HBChars+ ( SP | HTAB )* [ HBChars+ ]
+HBChars : ~( SP | HTAB | LF )
Label : HEXDIG+
+Rune : ALPHA ( ALPHA | DIGIT )*
+
ParenList : '(' ListBody ')'
SquareList : '[' ListBody ']'
@@ -64,8 +71,6 @@ BraceList : '{' ListBody '}'
ListBody : Unit* [ Blank* '&' Unit ] Blank*
-HBChars : ~( SP | HTAB | LF )
-
;; Local Variables:
;; eval: (flyspell-mode -1)