| 1 | Pugs Apocryphon 2: Architecture |
|---|
| 2 | |
|---|
| 3 | - Reason of Pugs |
|---|
| 4 | - make Perl 6 programs run |
|---|
| 5 | - Explain the Perl6 parts more; assume no Haskell |
|---|
| 6 | - What is the difference between how Perl 5 and Perl 6 runs programs? |
|---|
| 7 | - Separate parse/compilation/runtime phase |
|---|
| 8 | - What does the Parser do? |
|---|
| 9 | - match the source with regexes defined in Perl 6 Grammar |
|---|
| 10 | - which is just a set of regexes to match language parts |
|---|
| 11 | - does not check "1=2" or any other compile time errors |
|---|
| 12 | - either parses into syntax tree, or report syntax error |
|---|
| 13 | - the syntax tree may be completely bogus |
|---|
| 14 | - What does the Compiler do? |
|---|
| 15 | - decide the "meaning" of syntax trees |
|---|
| 16 | - translate various special forms into the same underlying operations |
|---|
| 17 | - What is "PIL"? |
|---|
| 18 | - Pugs Intermediate Language |
|---|
| 19 | - very few node types |
|---|
| 20 | - Verbs: Apply (function call), Assign, Bind (give new name) |
|---|
| 21 | - Nouns: Literals, Expression |
|---|
| 22 | - expression: inline assembly, variables, thunks, code |
|---|
| 23 | - (explain the PIL forms more, with examples) |
|---|
| 24 | - Why "PIL"? |
|---|
| 25 | - doesn't care how program was "written", only what it "means" |
|---|
| 26 | - Don't program in PIL because it's very verbose |
|---|
| 27 | - But it represents anything Perl programs can do |
|---|
| 28 | - It only has five operations (also known as "nodes") |
|---|
| 29 | - The PIL evaluator |
|---|
| 30 | - At this moment is the reference implementation of how Perl 6 works |
|---|
| 31 | - Will eventually be written entirely in Perl 6 |
|---|
| 32 | - Will be one of the many backends in the end, among Parrot, Perl 5, and others |
|---|
| 33 | - The Code generator |
|---|
| 34 | - translates PIL operations into target languages |
|---|
| 35 | - the underlying language still have to provide a runtime and builtin functions |
|---|
| 36 | |
|---|