-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Pipp is Parrot’s PHP.
The project Pipp aims to implement the programming language PHP
on top of the virtual machine Parrot.
Pipp parses PHP source code with the Parrot Grammar Engine and then transforms the parse tree
into an Parrot Abstract Syntax Tree.
For execution the Parrot Abstract Syntax Tree is translated to Parrot Byte Code and then executed
by the virtual machine.
See Implementation status for what should currently be working.
- Get and build Parrot
- Get Pipp from github:
cd languages; make co-pipp
- Configure Pipp:
perl Configure.pl
- Build Pipp:
cd pipp; make
- Run some tests:
make smoke
- See the test results at Smolder
PHP 5.3 is the reference implementation, therefore the PHP 5.3 test suite is used for specification testing.
Here are the test results for the core and the extensions ‘standard’ and ‘Reflection’ at revision 36093 on 2009-01-28:
===================================================================== TEST RESULT SUMMARY --------------------------------------------------------------------- Exts skipped : 75 Exts tested : 2 --------------------------------------------------------------------- Number of tests : 9229 4717 Tests skipped : 4512 ( 48.9%) -------- Tests warned : 0 ( 0.0%) ( 0.0%) Tests failed : 4646 ( 50.3%) ( 98.5%) Expected fail : 5 ( 0.1%) ( 0.1%) Tests passed : 66 ( 0.7%) ( 1.4%) --------------------------------------------------------------------- Time taken : 14658 seconds =====================================================================
Bug reports and patches for Pipp are highly appreciated. Currently there is no separate issue tracking for Pipp.
So please follow the instructions in http://svn.perl.org/parrot/trunk/docs/submissions.pod for filing contributions.
The initial name of this project was Plumhead, named after the Plum-headed Parakeet.
An initial goal of Pipp was to provide a side by side comparison of different parser and tree transformation techniques.
That’s why until Parrot 0.8.2 there were three different variants of Pipp.
Pipp PCT
Parse with the parrot compiler toolkit and with grammar action defined in NQP. This is the default variant.
Pipp PHC
Takes XML output from phc and transform it with XSLT to NQP setting up a PAST datastructure. NQP is Not Quite Perl6.
Pipp antlr3
ANTLR3 generates Java classes as Parser and TreeParser.
CGI parameter parsing in done in the Parrot library [CGI; QueryHash]
.