Oh, sorry... Larry Wall didn't actually to Phoenix-pm. At least not that
I know of. This was a forward from me. Thought ya'll might find this 
interesting... on a Perl 5 level, in a Perl 6 sort of way, and also on
the subject of software refactoring.

-scott

On  0, Larry Wall <[EMAIL PROTECTED]> wrote:
> On Thu, Dec 08, 2005 at 11:51:52AM +0200, Yuval Kogman wrote:
> : On Wed, Dec 07, 2005 at 16:48:11 -0500, Peter Schwenn wrote:
> : > Dear Perl6 Language,
> : > 
> : > I am Perl user from near year 0.  For me the easiest way to learn (,
> : > track, and get to the point of contributing to) Perl6 would be a Perl
> : > grammar (a regex rule set in, preferably, Perl6) that transforms any
> : > Perl5 script into a Perl6.  Of couse, besides learning Perl6 for a
> : > regex'r or Perl5'r such as myself, and tracking, and documenting 6, it
> : > would have huge use for Perl5 users making or considering the
> : > transition.
> : 
> : IMHO machine translation is not that good a way to start learning -
> : the real benefit of Perl 6 is in the features which have no perl 5
> : equivalents and solve problems much more elegantly.
> 
> Except it would be lovely to have a smart enough refactoring translator
> that it could recognize where those elegant solutions are possible and
> at least give the option of attempting them.  Or at least a hint that
> there might be a better way.
> 
> : The best thing to do is to hang out on #perl6 and get involved with
> : the test suite, as well as reading the synopses.
> : 
> : Perhaps writing a toy program or something like that could also
> : help.
> 
> Sure, but some of our toys are bigger than others.  :-)
> 
> : > Is there such a Perl5->Perl6 translator underway?
> : 
> : Larry Wall is working on using the perl (5) interpreter to create
> : compiled output (as opposed to just something that executes in
> : memory) that can then be read by a translator without actually
> : parsing perl 5.
> 
> Yes, I have a version of 5.9.2 that dumps out some *very* strange
> XML that represents, as closely as possible, the exact meaning of
> the code to Perl 5, along with all the syntactic bits.  I then filter
> that strange XML back into something approximating an AST.  I am in
> the process of proving to myself that I'm getting enough information
> out of this to recreate the original Perl 5, so I jokingly call this
> my Perl5-to-Perl5 translator.  As of today, I'm able to translate
> 76.57% of the t/*/*.t files that come with the Perl distribution.
> Considering that last week this number was down at about 5%, it would
> seem that I've been making a lot of progress.  But most of the work
> went into that first 5%, and a lot of work will likely go into the
> last 5% as well.  To get that first 5% I basically had to completely
> refactor the lexer and the grammar without changing anything, which
> is of course impossible.  The Perl 5 parser forgets or misplaces an
> astounding variety of information that the translator needs, and
> you can't just go and tell it to turn off the optimizations, because
> in fact most of those optimizations are deeply interwingled with
> semantic analysis and transformations as well.
> 
> Basically, every skipspace() in toke.c and every op_free() in op.c
> and every rule reduction in perly.y loses necessary information.
> To attempt to do what I'm currently doing you would have to be
> completely insane like me.  It's a total nightmare.  If I were
> Catholic I'd be hoping this all counts as pennance for my past sins,
> and gets me out of 100 million years of Purgatory or so.  But being
> a Protestant, I'm merely repenting of my past sins, and thinking
> about maybe repenting my future ones.
> 
> And if I were Jewish I'd've said "Oy vey" many times over.  :-)
> 
> Anyway, once I get to 100% of the t/ files, I'll make it translate
> all of CPAN back to itself.  And at some point I'll take a first
> whack at the Perl5-to-Perl6 translator, then open it up for community
> participation.  It's still just a bit too early for that, though,
> because there's such a delicate interplay between refactoring bits
> of perl without changing anything vs trying to guess whether we are
> getting enough type and structural information out to recreate the
> original in the backend.  There are already more than 10000 lines of
> code in the backend just to undo the damage done by the Perl 5 engine.
> 
> : Before this happens this will be very very hard - the high level
> : language has vast amounts of implications on execution etc, but the
> : opcode tree is much more simpler to predict (for a computer).
> 
> Right.  But my intent is to write a really good translator, and that
> implies that it has to be a multi-level translation.  That involves
> keeping track of all the subtle semantic and pragmatic information
> as well as the basic syntactic information.  Otherwise we might as
> well just feed Perl 5 to babblefish and see if Perl 6 comes out...
> 
> : > p.s. The developing form of such a grammar could likely lead to
> : > a grammar package which facilitates rule sets for languages in
> : > other domains, in terms of illuminating means of choosing among modes
> : > for rule ordering, collecting, scoping, re-application, recursion, 
> exclusion and so forth.
> : 
> : Since perl 5's actual parser and tokenizer will be used for this it
> : won't be very extensible, but this is important because perl is
> : reaaaaaaaaaaaaaaaaaaaaaaaaallly hard to parse.
> 
> And it's oh about 20 times harder to tell if you've parsed it
> correctly from a semantic point of view.  Consider that every little
> instrumentation tweak I've made to the lexer has had about a 50%
> chance of inducing strange distortions in the meaning of "Perl".
> I would be completely lost without the existing regression tests.
> That is why I went for minimal instrumentation and try to undo most
> of the damage in back end.  (Or I guess it'll be a "middle end"
> once we start translating to Perl 6.)
> 
> As for the original question, I think that the Perl 6 grammar will
> be a much better example for how to parse other languages than a
> Perl 5 grammar would be, since one of the underlying design currents
> from the beginning has been that Perl 6 had to be a language that
> was amenable to parsing by Perl 6 rules (with a little help from a
> bottom-up operator-precedence expression parser.)
> 
> Larry
> _______________________________________________
> Phoenix-pm mailing list
> [EMAIL PROTECTED]
> http://mail.pm.org/mailman/listinfo/phoenix-pm

Reply via email to