diff options
Diffstat (limited to 'docs/c1/grammar/zbnf.txt')
| -rw-r--r-- | docs/c1/grammar/zbnf.txt | 35 |
1 files changed, 20 insertions, 15 deletions
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) |
