The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
== Pegex To Do

- ~ instead of /~/
- warn or error on duplicat rule names
- report accurate position of failure (deepest)
- Bind a b | c => a [ b | c ]
- Make all regexes ignore whitespace (x)
- ~ not expanded in subrule inclusion
- Fix github issues and pul req
- Detect endless looping grammars
- Error on /<x>/ when x is not a regex rule

----

== lib/Pegex.pm

Sugar wrapper for Pegex tools.

== lib/Pegex/Receiver.pm

Receiver base class. Not really needed.

== lib/Pegex/Grammar.pm

This is the Pegex Runtime. It should probably be split into Pegex::Parser.

It has a parse method.
It has grammar, grammar_text and grammar_tree.
It has a receiver.
It has input, position and match_groups.

== lib/Pegex/Pegex/AST.pm

This is the default receiver. It can create a meaningful data structure from
any parse.

== lib/Pegex/Pegex/Grammar.pm

The Pegex::Grammar subclass representing Pegex itself. It has a precompiled
grammar_tree in it.

== lib/Pegex/Compiler.pm

Takes the Pegex grammar and uses it to parse and optimize a foobar
grammar_text into a grammar_tree.

== lib/Pegex/Pegex/AST.pm

The receiver class for Pegex::Compiler. Produces a grammar AST.

== lib/Pegex/Bootstrap.pm

The bootstrapping hack compiler for compiling the Pegex grammar itself.

== lib/Pegex/Mo.pm

OO base class.