Perl6-Pugs
view release on metacpan or search on metacpan
perl5/Pugs-Compiler-Rule/TODO view on Meta::CPAN
TODO for Pugs::Compiler::Rule (PCR)
- integrate pure-regex into the main compiler
- fix static count for repeated captures:
{ <x> <x>+ } -- the first capture is not captured to array
- add rollback for [ x <!before k> ]+
- should 'unmatch' last 'x' if there is a 'k' after it
- add 'negate' node to Regex
- add tests for 'negate'
- finish remaining metasyntax in <!...> Grammar
- static signature for '$^a'
- add 'inlined' switch to disable PadWalker lookups
- fix the <ws> rule
Unicode:
- \v \h \V \H
Sigspace switch:
- 'doubled' <ws> doesn't work
my $rule = Pugs::Compiler::Rule->compile('a (b) * c' );
- but this works:
my $rule = Pugs::Compiler::Rule->compile('a (b )*c' );
- implement, test in non-ratchet rules
Ratchet switch:
- quantifiers
- implement ?? +? *?
- implement ?+ ++ *+
- implement captures to Array inside quantifiers
- is :ratchet allowed as a runtime switch?
- are there runtime switches?
- is :+ the non-ratchet specifier?
Perl 6 parser:
- implement Perl 6 minilanguages (and categories).
each language generate entries for the tokenizer hash
<%statement_control|%prefix|%term>
- implement the main tokenizer using the minilanguages as terms
Priorities:
- features used in PGE P6 Grammar
- <after ...> in non-ratchet
- char classes
- make PadWalker optional, as most distros don't hold PW 1.0
- '%var := xxx'; '@var := xxx'; %<var> := ; @<var> :=
- rule parameters
- add placeholder 'not implemented' messages in the right places
- make Emitter::Rule::Perl5 subclassable - such that closures can be
parsed/compiled by a custom parser
- make the 'return' block functionally detectable (instead of regex)
Bugs:
- $variable should look into the user pad
Categories (some things belong to P::C::Perl6) :
- see "Syntactic categories" in S05 (extensibility)
- finish documenting add_op( %options )
- memoize/recompile dynamically
- special cases (test):
<tight> <op>+ [<tight> <op>+]* <tight>?
1;;;2 - ignore extra ;;?
1,,2
1, 2,
1 Y 2 Y
loop ($a;;$b) { ... } - special form via macro?
Tests:
- unify ratchet/non-ratchet tests
- add categories looser/tighter than current boundaries
- backtracking control ':'
- <'... <?... <!...
Related projects:
- implement PCR using pugs
- implement Pugs::Compiler::PILN ?
- not a priority - p5 could load ready-made YAML from Pugs
Other:
- see 'not implemented' messages in Pugs::Emitter::Rule::Perl5
- closures should be called on the Match object
- rule documentation (shorter than S05)
- examples of use
- incomplete rule syntax (see Pugs::Compiler::Rule pod);
- more escaped chars
( run in 0.913 second using v1.01-cache-2.11-cpan-524268b4103 )