Re: Parse::FastDescent

[email protected] (Damian Conway)
Newsgroups perl.recdescent
Message-ID <[email protected]>
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----------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.