- Introduction
- Overview
- Parrot
- What is Parrot?
- Key Parrot Goals
- Parrot under the hood
- Basic opcodes
- PMCs ("Parrot Magic Cookies")
- PIR - Parrot Intermediate Representation
- PIR
- Parrot Compiler Toolkit
- Parrot Compiler Toolkit
- Basic compilation overview
- Basic compilation overview
- Basic compilation overview
- Basic compilation overview
- What the compiler writer needs to create
- Compiler creation in Parrot
- Parrot compiler shell
- Parse grammars in PGE
- Parse grammars in PGE
- calc example - grammar
- calc example -- test parsing
- HLLCompiler class
- Parrot Abstract Syntax Tree (PAST)
- Converting parse tree to PAST
- Example: if_stmt
- Example: if_stmt (cont'd)
- Example: if_stmt (cont'd)
- Example: if_stmt (cont'd)
- Example: if_stmt (cont'd)
- calc example -- adding actions
- calc example -- adding actions
- calc example -- src/parser/actions.pm
- calc example -- PAST output
- calc example -- as PIR!
- calc example -- as executable!
- Operator precedence
- Bottom-up parsing in PCT
- Defining a bottom-up parser
- Defining a bottom-up parser
- Adding a new operator to the parser
- Adding a new operator to the parser
- Syntactic categories
- Operator traits
- Defining an operation
- Defining an operation, cont'd
- PAST:Op nodes
- PAST::Val nodes
- PAST::Var nodes
- PAST::Block nodes
- NQP - Not Quite Perl
- NQP overview
- A sample NQP program
- Key features of NQP
- NQP operators
- Things NQP does not have (yet?)
- NQP design principles
- Declaring subroutines in NQP
- Method and subroutine calls in NQP
- Inline PIR ( Q:PIR {...} )
- Review
- Effectiveness of Parrot Compiler Toolkit
- Parrot performance
- Next steps
- How to get Parrot
- Conclusions