diff options
Diffstat (limited to 'docs/c1/grammar/peg.txt')
| -rw-r--r-- | docs/c1/grammar/peg.txt | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/docs/c1/grammar/peg.txt b/docs/c1/grammar/peg.txt index c391162..465123f 100644 --- a/docs/c1/grammar/peg.txt +++ b/docs/c1/grammar/peg.txt @@ -21,28 +21,28 @@ SkipLine <- (!'\n' .)* '\n'? OneDatum <- BareString / CladDatum - -BareString <- ( '.' / '+' / '-' / DIGIT ) ( BareChar / '.' )* +BareString <- SpecBareChar ( BareChar / JoinChar )* / BareChar+ CladDatum <- PipeStr / QuoteStr / HashExpr / QuoteExpr / List PipeStr <- '|' ( PipeStrChar / '\' StringEsc )* '|' QuoteStr <- '"' ( QuotStrChar / '\' StringEsc )* '"' -HashExpr <- '#' ( RuneExpr / LabelExpr / HashDatum ) +HashExpr <- '#' ( RuneExpr / HashBang / LabelExpr / HashDatum ) QuoteExpr <- "'" Datum / '`' Datum / ',' Datum List <- ParenList / SquareList / BraceList +SpecBareChar <- '+' / '-' / JoinChar / DIGIT + BareChar <- ALPHA / DIGIT - / '!' / '$' / '%' / '*' / '+' - / '-' / '/' / '<' / '=' / '>' - / '?' / '@' / '^' / '_' / '~' + / '!' / '$' / '%' / '*' / '+' / '-' / '/' + / '<' / '=' / '>' / '?' / '^' / '_' / '~' PipeStrChar <- (![|\\] .) QuotStrChar <- (!["\\] .) StringEsc <- '\' / '|' / '"' / ( HTAB / SP )* LF ( HTAB / SP )* - / 'a' / 'b' / 't' / 'n' / 'v' / 'f' / 'r' / 'e' + / '0' / 'a' / 'b' / 't' / 'n' / 'v' / 'f' / 'r' / 'e' / 'x' HexByte* ';' / 'u' UnicodeSV ';' @@ -50,6 +50,7 @@ HexByte <- HEXDIG HEXDIG UnicodeSV <- HEXDIG+ RuneExpr <- Rune ( '\' BareString / CladDatum )? +HashBang <- '!' [\t ]* BareString LabelExpr <- '%' Label ( '%' / '=' Datum ) HashDatum <- '\' BareString / CladDatum @@ -76,3 +77,8 @@ HEXDIG <- [0-9a-fA-F] # Due to a quirk in the peg tool this file is used with, the grammar # must not allow an empty stream. Therefore, the Unit rule has its # Datum declared as mandatory rather than optional. + + +# Local Variables: +# eval: (flyspell-mode -1) +# End: |
