in reply to Re^2: Perl is not Dynamically Parseable
in thread Perl is not Dynamically Parseable
Let's find a program where the prototype is non-deterministic and affects context.
BEGIN { *call_to_inspect = ( rand() < 0.5 ? sub ($) {} : sub (@) {} ); }
You can detect some changes in the compile-time state of a prototype by its effect on context.
BEGIN { *call_to_query = ( rand() < 0.5 ? sub ($) {} : sub (@) {} ); } sub inspector { print wantarray ? 1 : 0, "\n" } call_to_inspect(inspector());
Let's observe:
>perl a.pl 1 >perl a.pl 1 >perl a.pl 0 >perl a.pl 1
Therefore, there exists a function call in a program for which two instance of the Perl parser have different prototypes for the named function.
Therefore, there exists a program for which two instance of the Perl parser produce different output.
Or for short, Perl cannot be parsed.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Perl is not Dynamically Parseable
by Jeffrey Kegler (Hermit) on Oct 13, 2009 at 16:13 UTC | |
by ikegami (Patriarch) on Oct 13, 2009 at 17:04 UTC |