Parrot
Allison Randal The Perl Foundation & O'Reilly Media, Inc.
Parrot Allison Randal The Perl Foundation & O'Reilly Media, - - PowerPoint PPT Presentation
Parrot Allison Randal The Perl Foundation & O'Reilly Media, Inc. There's an odd misconception in the computing world that writing compilers is hard. This view is fueled by the fact that we don't write compilers very often. People used to
Allison Randal The Perl Foundation & O'Reilly Media, Inc.
14
9 14
9 14 add
23
9 14
9 14 add
9 14 23
foo
return addr foo
9 return addr foo 12
return addr
Context: main
Context: main Context: foo
Continuation Context: main Context: foo
Continuation Context: main Context: foo Context: bar
Continuation
Continuation Context: main Context: foo Context: bar
Continuation
Continuation Context: main Context: foo Context: bar
I/O GC Events Threads OO Unicode Exceptions IMCC STM JIT
NQP PAST HLLCompiler
42
42 \d+ Parser grammar rule “integer” token integer { \d+ }
42 \d+ Parser grammar rule “integer” <integer> value: 42 Parse tree
42 \d+ Parser grammar rule “integer” <integer> value: 42 Parse tree integer Transform rule
42 \d+ Parser grammar rule “integer” <integer> value: 42 Parse tree integer Transform rule <PAST::Val> value: 42 returns: Integer AST node
42 \d+ Parser grammar rule “integer” <integer> value: 42 Parse tree integer AST tree grammar rule AST node PAST::Val Transform rule
<PAST::Val> value: 42 returns: Integer
42 \d+ Parser grammar rule “integer” <integer> value: 42 Parse tree integer Transform rule <PAST::Val> value: 42 returns: Integer AST node PAST::Val Transform rule <POST::Op> result: 1 OST node
42 \d+ Parser grammar rule “integer” <integer> value: 42 Parse tree integer Transform rule <PAST::Val> value: 42 returns: Integer AST node PAST::Val Transform rule <POST::Op> result: 1 OST node POST::Val Transform rule
42 \d+ Parser grammar rule “integer” <integer> value: 42 Parse tree integer Transform rule <PAST::Val> value: 42 returns: Integer AST node PAST::Val Transform rule <POST::Op> result: 1 OST node POST::Val 42 Transform rule
6 * 9
6 * 9 infix:* Parser grammar OPP rule
6 * 9 infix:* Parser grammar OPP rule <expr> type: 'infix:*' Parse tree <integer> value: 6 <integer> value: 9
<expr> type: 'infix:*' Parse tree <integer> value: 6 <integer> value: 9
<expr> type: 'infix:*' Parse tree expr Transform rule <integer> value: 6 <integer> value: 9
<expr> type: 'infix:*' Parse tree expr Transform rule <integer> value: 6 <integer> value: 9 AST tree <PAST::Op> name: infix:* <PAST::Val> value: 6 returns: Integer <PAST::Val> value: 9 returns: Integer
AST tree <PAST::Op> name: infix:* <PAST::Val> value: 6 returns: Integer <PAST::Val> value: 9 returns: Integer
PAST::Op Transform rule AST tree <PAST::Op> name: infix:* <PAST::Val> value: 6 returns: Integer <PAST::Val> value: 9 returns: Integer
PAST::Op Transform rule AST tree <PAST::Op> name: infix:* <PAST::Val> value: 6 returns: Integer <PAST::Val> value: 9 returns: Integer OST tree <POST::Ops> <POST::Ops> result: 6 <POST::Ops> result: 9 <POST::Op> name: n_mul variable setup <POST::Ops> result: $P1
– “Continuations and advanced flow control”
<http://www.ibm.com/developerworks/linux/library/l- advflow.html>
– “The case for virtual register machines” by
<http://portal.acm.org/citation.cfm?id=858575>