rowan-peg 0.2.10

Convert ABNF like grammar to rust-peg build `rowan` lossless syntax tree
Documentation
;; use ABNF like grammar
;; char-val to case-sensitive
;; prose-val -> char classes
;; add peg lookaheads `!` `&`
;; add quiet `~`
;; add slice `$`
;; remove num-var
;;
;; vim:nowrap

exports [
    decl-list
    trivia = _
]

comment     = $(";" *<^\n>) @comment
whitespace  = $(*< \t\r\n>)
_           = whitespace *(comment whitespace)
ident       = $(!<0-9> +(<0-9a-zA-Z_->/<^\u{00}-\u{a0}>)) @ident
number      = $(+<0-9>) @number
string      = $(<"> *<^\"\r\n> <">) @string
matches     = $("<" *<^\x3e\r\n> ">") @matches
label       = ident / string
repeat-rest = "*" [number]
repeat      = "+"
            / number [repeat-rest]
            / repeat-rest
pat-expect  = "@" label
pat-atom    = ident !(_ "=")            ; a rule reference
            / string                    ; keyword
            / matches                   ; char classes
            / "[" _ pat-choice _ "]"    ; optional
            / "(" _ pat-choice _ ")"    ; simple paren
pat-op      = "&" pat-atom ; positive lookahead
            / "!" pat-atom ; negative lookahead
            / "~" pat-atom ; quiet
            / "$" pat-atom ; slice
            / repeat _ pat-atom
            / pat-atom
pat-list    = pat-op *(_ pat-op)
pat-choice  = pat-list *(_ "/" _ pat-list)
              [_ pat-expect]; extra expected branch
named       = ident _ "=" _
decl        = named pat-choice
export      = [named] ident
export-list = "exports" _ "[" _ *(export _) "]"
decl-list   = _ [export-list _] +(decl _)