pegcel-macros 0.1.0

A PEG parser generator for Syn
Documentation
#[path = "../src/manual_grammar.rs"]
mod manual_grammar;

mod grammar {
    pegcel_macros::pegcel_syn! {
        use syn
        use crate::manual_grammar::UnnamedItem

        Grammar: {
            kind: GrammarUse
            uses: {&"use" Use}*
            items: NamedItem*
        }

        GrammarUse: {
            / Syn: {"use" "syn"}
        }

        Use: {
            r#use: "use"
            anchor: "::"?
            tree: syn::UseTree
        }

        Item: {
            / Named: {&{syn::Ident !"::" ":"} NamedItem}
            / Unnamed: UnnamedItem
        }

        NamedItem: {
            name: syn::Ident
            colon: ":"
            item: UnnamedItem
        }

        Items: {
            / OrderedChoice: {"/" NamedItem+ % "/"}
            / Sequence: Item*
        }

        Predicate: {
            / Positive: "&"
            / Negative: "!"
        }

        Repetition: {
            / ZeroPlus: {"*" {&"%" Interspersion}?}
            / OnePlus: {"+" {&"%" Interspersion}?}
            / ZeroOne: "?"
        }

        Interspersion: {
            / Terminated: {"%%" Symbol}
            / Separated: {"%" Symbol}
        }

        Symbol: {
            / Literal: syn::LitStr
            / Path: syn::Path
        }
    }
}

#[test]
fn meta_grammar_compiles() {}