== 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.