On Tue, Feb 02, 2010 at 12:23:50AM +0100, Carl Mäsak wrote: : Another thing I started thinking about: if Perl 6 professes to be able : to put on the hat -- syntactically and semantically -- of most any : other programming language out there, through the use of a simple 'use : Language::Java' or 'use Language::Ruby' -- how will Perl 6 compensate : for the fact that its parser is one-pass whereas most other languages : do two passes or more? Specifically, will some programs in those other : languages fail to compile under a Perl 6 language module due to the : fact that a type keyword was referred to before it was declared? If : multiple passes introduce linguistic race conditions, what about : outright linguistic infelicities due to the Perl 6 limitation of : one-pass parsing?
The one-pass ideal is only for standard Perl 6 and other languages that make that commitment. Once you switch to another language, you should use whatever kind of recognizer you need for that language. Since Perl is Turing complete, it can (in theory) emulate any atomaton in the right column in the table at the end of: http://en.wikipedia.org/wiki/Unrestricted_grammar In short, it's "simple" only from the standpoint of the *user* of the module. Module creators, on the other hand, should be acquainted with the concept of vicarious suffering before they begin. Larry