In the PAST
- After producing a parse tree, transform it to an abstract syntax tree
- Pugs Intermediate Language (PIL) as a starting point
- PIL basic node types (still changing)
PVal A literal value
PVar A variable
PNoop No-op
PAssign Assignment operation
PBind Binding operation
PApp All other operations, function calls, or method calls
PSub A subroutine declaration
PCode A code block
PExp An expression
PStmt A statement
PStmts A sequence of statements
PNil A list-terminator for PStmts lists (Lisp-style)
PLit An intermediate node for literal values
PRawName An intermediate node for variable names
PThunk Node for lazy or deferred evaluation
PPad Create a new lexical pad
PPos Current parse location in the source code (for
issuing useful debugging messages)