Ted Zlatanov wrote:
> is there a plan for P::FD at the moment? After Apocalypse 5, I'm very
> curious how P::FD will use the new Perl 6 regex engine.
It probably won't. The new regex engine will render P::FD redundant.
> I also would love to find out what features are planned, and maybe even help
> with some of them.
Thanks. I've appended my old ToDo list below, to give you an idea what I
was thinking, pre-A5.
What I'm thinking post-A5 is that the Perl 5 P::FD may be called Perl6::Regexes
instead, and simply implement the A5 design (with some custom extensions of
my own).
> Will this come in the Exegesis 5?
No. E5 won't talk about P::FD at all.
> Should we discuss it on [EMAIL PROTECTED], on the perl6 mailing lists,
> or telepathically?
You're welcome too, but I would have time to participate much, I'm afraid.
I'm on tour and very short on both time and connectivity at present. Sorry.
Damian
---------------------------------
To Do
=====
Generalize repetitions (A5)
-----------cut-----------cut-----------cut-----------cut-----------cut----------
some mechanism to easily specify required vs optional repeated
alternatives and mutually exclusive alernatives
-----------cut-----------cut-----------cut-----------cut-----------cut----------
Document why the use of return is wrong in an action (A5)
-----------cut-----------cut-----------cut-----------cut-----------cut----------
Fix line counter.
-----------cut-----------cut-----------cut-----------cut-----------cut----------
Fix truncation of traces
-----------cut-----------cut-----------cut-----------cut-----------cut----------
Superpositional parsing (A5):
rule candidate { (<any <protein_structure_1>
| <protein_structure_2>
| <protein_structure_3>
>)
$0 := { $1 > $threshold }
-----------cut-----------cut-----------cut-----------cut-----------cut----------
Allow rules to determine how much text has been consumed by rule (A5)
rule: sub1 sub2 sub3
{ $return = $RD_CONSUMED }
-----------cut-----------cut-----------cut-----------cut-----------cut----------
<autotext> support: allow Parse::RecDescemt to take a grammar
and construct a "reconstructor" for autotree'd data structures. For example:
$parse = Parse::RecDescent->new($autotree_grammar);
$unparse = Parse::RecDescent->antiparser($autotree_grammar);
$tree = $parse->startrule($text);
$tree->munge_somehow();
$text = $unparse->startrule($tree);
================================================================================
Require {...} for code blocks in directives (A5)
================================================================================
*Remove* tracing code if not <trace>
================================================================================
Warn on empty prods followed by other prods
================================================================================
* memoize terminals and non-terminals?
================================================================================
* inlining of simple rules
================================================================================
* Consider <autoerror> to automatically add an <error> production
to "pre-terminal" rules.
================================================================================
* Lookbehind (A5)
================================================================================
* Add backtracking to rules containing repetition specifiers (in
order to overcome repetitions "incorrigible" greed). (A5)
================================================================================
* Add stingy repetitions (A5)
================================================================================
* Handle left-recursion (preferably without rearranging grammar) (A5)
================================================================================
Generate #line directives to tie errors back into original file.
-----------cut-----------cut-----------cut-----------cut-----------cut----------
Tracer and error objects to permit user-redefinable tracing and error behaviours
-----------cut-----------cut-----------cut-----------cut-----------cut----------
Grammar namespaces:
-----------cut-----------cut-----------cut-----------cut-----------cut----------