=item C<.>
-Binary. The dot operator. Allows for accessing sub-members, methods, or
+The dot operator. Allows for accessing sub-members, methods, or
virtual methods of nested data structures.
my $obj->process(\$content, {a => {b => [0, {c => [34, 57]}]}}, \$output);
=item C<|>
-Binary. The pipe operator. Similar to the dot operator. Allows for
+The pipe operator. Similar to the dot operator. Allows for
explicit calling of virtual methods and filters (filters are "merged"
with virtual methods in CGI::Ex::Template and TT3) when accessing
hashrefs and objects. See the note for the "." operator.
=item C<** ^ pow>
-Binary. X raised to the Y power. This isn't available in TT 2.15.
+Right associative binary. X raised to the Y power. This isn't available in TT 2.15.
[% 2 ** 3 %] => 8
=item C<!>
-Unary not. Negation of the value.
+Prefix not. Negation of the value.
=item C<->
=item C<*>
-Binary. Multiplication.
+Left associative binary. Multiplication.
=item C</ div DIV>
-Binary. Division. Note that / is floating point division, but div and
+Left associative binary. Division. Note that / is floating point division, but div and
DIV are integer division.
[% 10 / 4 %] => 2.5
=item C<% mod MOD>
-Binary. Modulus.
+Left associative binary. Modulus.
[% 15 % 8 %] => 7
=item C<+>
-Binary. Addition.
+Left associative binary. Addition.
=item C<->
-Binary. Minus.
+Left associative binary. Minus.
=item C<_ ~>
-Binary. String concatenation.
+Left associative binary. String concatenation.
[% "a" ~ "b" %] => ab
=item C<< < > <= >= >>
-Binary. Numerical comparators.
+Non associative binary. Numerical comparators.
=item C<lt gt le ge>
-Binary. String comparators.
+Non associative binary. String comparators.
=item C<== eq>
-Binary. Equality test. TT chose to use Perl's eq for both operators.
+Non associative binary. Equality test. TT chose to use Perl's eq for both operators.
There is no test for numeric equality.
=item C<!= ne>
-Binary. Non-equality test. TT chose to use Perl's ne for both
+Non associative binary. Non-equality test. TT chose to use Perl's ne for both
operators. There is no test for numeric non-equality.
=item C<&&>
-Multiple arity. And. All values must be true. If all values are true, the last
+Left associative binary. And. All values must be true. If all values are true, the last
value is returned as the truth value.
[% 2 && 3 && 4 %] => 4
=item C<||>
-Multiple arity. Or. The first true value is returned.
+Right associative binary. Or. The first true value is returned.
[% 0 || '' || 7 %] => 7
+Note: perl is left associative on this operator - but it doesn't matter because
+|| has its own precedence level. Setting it to right allows for CET to short
+circuit earlier in the expression optree (left is (((1,2), 3), 4) while right
+is (1, (2, (3, 4))).
+
=item C<..>
-Binary. Range creator. Returns an arrayref containing the values
+Non associative binary. Range creator. Returns an arrayref containing the values
between and including the first and last arguments.
[% t = [1 .. 5] %] => variable t contains an array with 1,2,3,4, and 5
=item C<? :>
-Ternary. Can be nested with other ?: pairs.
+Ternary - right associative. Can be nested with other ?: pairs.
[% 1 ? 2 : 3 %] => 2
[% 0 ? 2 : 3 %] => 3
=item C<*= += -= /= **= %= ~=>
-Self-modifying assignment. Sets the left hand side
+Self-modifying assignment - right associative. Sets the left hand side
to the operation of the left hand side and right (clear as mud).
In order to not conflict with SET, FOREACH and other operations, this
operator is only available in parenthesis.
=item C<=>
-Assignment. Sets the left-hand side to the value of the righthand side. In order
+Assignment - right associative. Sets the left-hand side to the value of the righthand side. In order
to not conflict with SET, FOREACH and other operations, this operator is only
available in parenthesis. Returns the value of the righthand side.
=item C<not NOT>
-Lower precedence version of the '!' operator.
+Prefix. Lower precedence version of the '!' operator.
=item C<and AND>
-Lower precedence version of the '&&' operator.
+Left associative. Lower precedence version of the '&&' operator.
=item C<or OR>
-Lower precedence version of the '||' operator.
+Right associative. Lower precedence version of the '||' operator.
=item C<hash>
-Multiple arity. This operator is not used in TT. It is used internally
+This operator is not used in TT. It is used internally
by CGI::Ex::Template to delay the creation of a hash until the
execution of the compiled template.
=item C<array>
-Multiple arity. This operator is not used in TT. It is used internally
+This operator is not used in TT. It is used internally
by CGI::Ex::Template to delay the creation of an array until the
execution of the compiled template.
=item UNDEFINED_ANY
This is not a TT configuration option. This option expects to be a code
-ref that will be called if a variable is undefined during a call to get_variable.
+ref that will be called if a variable is undefined during a call to play_expr.
It is passed the variable identity array as a single argument. This
is most similar to the "undefined" method of Template::Stash. It allows
for the "auto-defining" of a variable for use in the template. It is
CGI::Ex::Template uses its own mechanism for loading filters. TT
would use the Template::Filters object to load filters requested via the
FILTER directive. The functionality for doing this in CGI::Ex::Template
-is contained in the list_filters method and the get_variable method.
+is contained in the list_filters method and the play_expr method.
Full support is offered for the FILTERS configuration item.
may be more appropriate to say we are parsing a term or an expression).
The following table shows a variable or expression and the corresponding parsed tree
-(this is what the parse_variable method would return).
+(this is what the parse_expr method would return).
one [ 'one', 0 ]
one() [ 'one', [] ]
Executes a parsed tree (returned from parse_tree)
-=item C<get_variable>
+=item C<play_expr>
Turns a variable identity array into the parsed variable. This
method is also responsible for playing operators and running virtual methods
Allow for the multitudinous ways that TT parses arguments. This allows
for positional as well as named arguments. Named arguments can be separated with a "=" or "=>",
and positional arguments should be separated by " " or ",". This only returns an array
-of parsed variables. To get the actual values, you must call get_variable on each value.
+of parsed variables. To get the actual values, you must call play_expr on each value.
=item C<parse_tree>
Used by load_parsed_tree. This is the main grammar engine of the program. It
uses method in the $DIRECTIVES hashref to parse different DIRECTIVE TYPES.
-=item C<parse_variable>
+=item C<parse_expr>
Used to parse a variable, an expression, a literal string, or a number. It
returns a parsed variable tree. Samples of parsed variables can be found in the VARIABLE PARSE TREE
=item C<undefined_any>
-Called during get_variable if a value is returned that is undefined. This could
+Called during play_expr if a value is returned that is undefined. This could
be used to magically create variables on the fly. This is similar to Template::Stash::undefined.
It is suggested that undefined_get be used instead. Default behavior returns undef. You
may also pass a coderef via the UNDEFINED_ANY configuration variable. Also, you can try using