lrpeg 0.4.1

Left recursive PEG parser generator
Documentation
grammar <- ws definition+ EOI;

definition <- XID_IDENTIFIER ws "<-" ws expression ";"? ws;

expression <- sequence ("/" ws sequence)*;

sequence <- alternative+;

alternative <- alternative "?" ws
        / alternative "*" ws
        / alternative "+" ws
        / "(" ws expression ")" ws
        / primary ws;

primary <- "&" ws primary
        / "!" ws primary
        / regex ws
        / XID_IDENTIFIER ws
        / string_literal ws
        / "." ws;

string_literal <- re#"([^"\\]|\\.)*"#
        /  re#'([^'\\]|\\.)*'#;

regex <- re#re\#([^\#\\]|\\.)*\##;

ws <- WHITESPACE;