Dual-license your content for inclusion in The Perl 5 Wiki using this HOWTO, or join us for a chat on irc.freenode.net#PerlNet.


From PerlNet

Jump to: navigation, search

This article is a stub. It is requested that it be improved and expanded. You can help PerlNet by expanding it. Once it has been improved, this message should be removed.

Parrot is a virtual machine that serves as an abstraction layer for any language with a compiler front-end implemented on Parrot.

Parrot Languages

In addition to Perl 6, Parrot currently has several dozen client languages (Arc, APL, bc, Befunge-93, Brainf**k, C (C99), Common Lisp, ECMAScript (aka Javascript), Forth, Generic Imperative Language, GNU m4, HQ9 Plus, Jako, Java, Java VM bytecode, Joy, JSON, Lazy K, LISP, LOLCODE, Lua, Markdown, MiniPerl (Perl 1.0), NQP (Not Quite Perl), Octave, Ook!, Perl 6, PHP, Python, QuickBASIC 4.5, Ruby, Scheme, Shakespeare, Smalltalk, the "squaak" tutorial language, Tcl, Unlambda, WMLScript, and .Net bytecode. Parrot accepts input as Parrot Abstract Syntax Tree (PAST), Parrot Intermediate Representation (PIR) and Parrot Assembly (PASM). All of these can be generated by compilers that target the Parrot Virtual Machine. Of these, PAST and PIR are human readable. PIR hides away low-level details like function calling conventions whereas PASM doesn't) partially or completely implemented on its framework.

Parrot accepts PASM (Parrot Assembly Language), PIR (Parrot Intermediary Representation), and any implemented client language as input for compilation to the natively run PBR (Parrot Bytecode). In addition to immediate execution, compilation may be used to generate PBR for later execution. And, implemented languages may be compiled to PIR, rather than bytecode, allowing for human-readable code that can be run on Parrot irregardless of what client languages may be implemented on the destination system.

Personal tools