peg-matching-0.1.0.0: input/peg/peg.peg
-- Hierarchical syntax
Grammar <- Spacing Definition+ EndOfFile
Definition <- Identifier LEFTARROW Expression
Expression <- Sequence (SLASH Sequence)*
Sequence <- Prefix*
Prefix <- (AND / NOT)? Suffix
Suffix <- Primary (QUESTION / STAR / PLUS)?
Primary <- Identifier !LEFTARROW / OPEN Expression CLOSE / Literal / Class / DOT
-- Lexical syntax
Identifier <- IdentStart IdentCont* Spacing
IdentStart <- [a-zA-Z_]
IdentCont <- IdentStart / [0-9]
Literal <- ["] (!["] Char)* ["] Spacing / ['] (!['] Char)* ['] Spacing
Class <- "[" (!"]" Range)* "]" Spacing
Range <- Char "-" Char / Char
Char <- Escaped / "\\" [0-2][0-7][0-7] / "\\" [0-7][0-7]? / !"\\" .
Escaped <- "\\" Escaped2
Escaped2 <- [nrt'"] / "[" / "]" / "\\"
LEFTARROW <- "<-" Spacing
SLASH <- "/" Spacing
AND <- "&" Spacing
NOT <- "!" Spacing
QUESTION <- "?" Spacing
STAR <- "*" Spacing
PLUS <- "+" Spacing
OPEN <- "(" Spacing
CLOSE <- ")" Spacing
DOT <- "." Spacing
Spacing <- (Space / Comment)*
Comment <- "--" (!EndOfLine .)* EndOfLine
Space <- " " / "\t" / EndOfLine
EndOfLine <- "\r\n" / "\n" / "\r"
EndOfFile <- !.