Nodes
This file declares the different node-types that occur in the parse tree. These types may be generated from the parser output (see Tree.pm), or by the compiler itself during a pass.
- sv_literal
-
Represents a scalar literal value.
- type
-
The literal's type, either one of the scalar types,
PerlHashfor an anonymous hash reference, orPerlArrayfor an anonymous array reference. - lval
-
The thing's value. This is not the same as the code-generating
valmethod. For scalar types,lvalis a string; for reference types, a reference to the contents' parse tree.
- variable
-
A variable.
- type
-
Either one of the scalar types,
PerlHash, orPerlArray. - global
-
True if the variable is global (currently unimplemented).
- implicit
-
True for implicit block parameters, e.g.
$^a. - topical
-
True for members of the current topic, e.g.
$.foo. - name
-
The variable's name. For simple variables, this is the literal name, including sigil (e.g.
$foo). For "complicated" variables, this is a reference to their parse tree (currently unimplemented).
- Binop
-
A node type representing a binary infix operation. Note that comparison operators are not binary, since they can be chained. Both comma and semicolon are binary.
- hype
-
A "hyped" operator. Its single member,
opis the normal operator that has been lifted. If it turns out that other things besides operators can be hyped, op may refer to more complex nodes. - apply_rhs
-
The right-hand side of an apply operation (e.g. the "foo()" in "$a.foo()").
- prop
-
The function- or property-name being accessed (e.g. "foo").
- subscripts
-
A reference to a list of subscripts, or an empty array if none are present. Subscripts may be either an
indicesnode, as for variable subscripts, or "something else" representing a parameter list. This is kind of ugly, and may change once these things actually get implemented.
- indices
-
A single subscript, e.g.
[@xs].- type
-
The type of thing on which the subscript operates, either
PerlHashorPerlArray. - indices
-
The parse tree for the subscript contents.
- subscript_exp
-
An item and one or more indices.
- thing
-
The expression or variable to be subscripted.
- subscripts
-
A reference to an array of indices.
- incr
-
An increment or decrement operator.
- post
-
True if the operator is a postincrement.
- op
-
The operator.
- thing
-
The incremented expression.
- prefix
-
A prefix operator. Many things are prefix operators: filetests (possibly combined), declared functions, and unary
-,~,\\, and!.- name
-
The operator name.
- args
-
The argument tree.
- context
-
A single context operator.
- ctx
-
The operator.
- thing
-
The operand.
- pair
-
A pair (e.g.
a => "pair"). - compare
-
A comparison sequence. Its single member,
seq, is a reference to a list of operators and operands in left-to-right order. For example,1 lt 3 lt "three"becomes[1, "lt", 3, "lt", "three"] - ternary
-
A ternary operation.
- if
-
The test.
- then
-
The "true" branch.
- else
-
The "false" branch.
- scope_class
-
Qualifiers that occur before the variables in a declaration.
- scope
-
The variable scope, e.g. "my", "our", "temp".
- class
-
The variable class, e.g. "int".
- decl
-
A declaration of one or more variables, not including initializers.
- qual
-
The variables' scope/class.
- vars
-
The variables' names.
- props
-
A list of properties (e.g. "is foo(42)").
- property
-
A single variable, class, or function property.
- name
-
The property name.
- args
-
The argument list (for e.g.
something(1, 2)).
- but
-
A node representing a "but" clause, e.g.
$foo = 23 but false but Inf.- thing
-
The exceptional thing.
- buts
-
A reference to an array of exception clauses.
- adverb
-
An adverbial modifier (i.e. ':').
- thing
-
The left-hand side of the colon.
- adv
-
The right-hand side.
- params
-
A sub parameter list (not argument list).
- req
-
A reference to an array of required parameters, or an empty array if none.
- opt
-
A reference to an array of optional parameters, i.e. those occuring after the ';', or an empty array if none.
- rest
-
The name of the final "slurping" parameter, or
undefif none present.
- param
-
A subroutine parameter.
- qual
-
Variable scope/class.
- var
-
The variable.
- props
-
Its properties.
- init
-
An initializer expression, or
undefif none.
- initializer
-
A parameter initializer (not an initializer in a variable declaration).
- op
-
The initializing operator, probably
=. - expr
-
The initialization expression.
- sub_def
-
A subroutine definition or declaration.
- qual
-
Sub scope.
- name
- props
-
An array of subroutine properties, or an empty array if none.
- closure
-
The closure associated with this name.
- closure
-
A closure, which may be either an anonymous function or the parameters and body of a named subroutine.
- params
-
The subroutine parameter list, or
undefif no parameter list was given. The appropriate implicit parameter list then depends on context. - block
-
The sequence of statements making up the closure body. This is a reference to an array of statements, or a single
yaddanode for...definitions, or undef for a declaration.
- yadda
-
A node representing a
...statement. Its single member,msg, is either undef or an appropriate error message to be generated if the statement is reached. - guard
-
A guard (statement modifier?), e.g. the
unlessindie unless $foo.- name
-
The modifier name, either "if", "unless", "while", "until", or "for".
- expr
- test
- directive
-
A "use", "package", or "module" directive
- name
-
The directive name (e.g. "use").
- thing
-
The directive's object (e.g. "perl" in "use perl").
- args
-
Whatever else is on the directive line.
- label
-
A statement label. It will appear before the labeled statement in a statement sequence.
- loop
-
A
loop(;;) { ... }statement.- init
- test
- incr
-
The initialization, test, and increment expressions in the loop header.
- block
-
The block (sequence of statements, not closure) controlled by the loop.
- class_def
-
A class definition
- qual
-
Class scope.
- name
- props
- block
- Regexes or rules
- P6C::ValueList
-
List operators and functions with named parameters currently receive their arguments in different formats -- the former as a tree of binary ',' ops, the latter as an array. This is a common class to do context handling for both.
- P6C::Register
-
Gratuitous object? Not quite... It's a way of passing a temporary register in place of an unexpanded rvalue. Useful for e.g. autoincrement, where we have the register lying around.
NOTE: this would be a good place to take care of conversions between register types. Right now things are always passed in P regs, but we could do better by passing back a wrapped S, I, or N register, which would be promoted if necessary. On the other hand, we might do better using context to do this. Hopefully all will be clear once things get a bit more developed.
2 POD Errors
The following errors were encountered while parsing the POD:
- Around line 11:
=over without closing =back
- Around line 323:
Expected text after =item, not a bullet