mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-17 08:50:50 +00:00
205 lines
25 KiB
ReStructuredText
205 lines
25 KiB
ReStructuredText
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| Precedence | Operator | Type | Associativity | Description |
|
|
+============+==================+=========+===============+===================================================================+
|
|
| 512 | ``...`` | prefix | n/a | Spread operator |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| => 300 | ``|`` | infix | Left | Twig filter call |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``(`` | | | Twig function call |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``.``, ``?.`` | | | Get an attribute on a variable |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``[`` | | | Array access |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 500 | ``-`` | prefix | n/a | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``+`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 300 => 5 | ``??`` | infix | Right | Null coalescing operator (a ?? b) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 250 | ``=>`` | infix | Left | Arrow function (x => expr) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 200 | ``**`` | infix | Right | Exponentiation operator |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 100 | ``is`` | infix | Left | Twig tests |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``is not`` | | | Twig tests |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 60 | ``*`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``/`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``//`` | | | Floor division |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``%`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 50 => 70 | ``not`` | prefix | n/a | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 40 => 27 | ``~`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 30 | ``+`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``-`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 25 | ``..`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 20 | ``==`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``!=`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``<=>`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``<`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``>`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``>=`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``<=`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``not in`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``in`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``matches`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``starts with`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``ends with`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``has some`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``has every`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``===`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``!==`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 18 | ``b-and`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 17 | ``b-xor`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 16 | ``b-or`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 15 | ``and`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 12 | ``xor`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 10 | ``or`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 5 | ``?:``, ``? :`` | infix | Right | Elvis operator (a ?: b) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 0 | ``(`` | prefix | n/a | Explicit group expression (a) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``?`` | infix | Left | Conditional operator (a ? b : c) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``=`` | | Right | Assignment operator |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``literal`` | prefix | n/a | A literal value (boolean, string, number, sequence, mapping, ...) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
|
|
When a precedence will change in 4.0, the new precedence is indicated by the arrow ``=>``.
|
|
|
|
Here is the same table for Twig 4.0 with adjusted precedences:
|
|
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| Precedence | Operator | Type | Associativity | Description |
|
|
+============+==================+=========+===============+===================================================================+
|
|
| 512 | ``...`` | prefix | n/a | Spread operator |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``(`` | infix | Left | Twig function call |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``.``, ``?.`` | | | Get an attribute on a variable |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``[`` | | | Array access |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 500 | ``-`` | prefix | n/a | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``+`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 300 | ``|`` | infix | Left | Twig filter call |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 250 | ``=>`` | infix | Left | Arrow function (x => expr) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 200 | ``**`` | infix | Right | Exponentiation operator |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 100 | ``is`` | infix | Left | Twig tests |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``is not`` | | | Twig tests |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 70 | ``not`` | prefix | n/a | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 60 | ``*`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``/`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``//`` | | | Floor division |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``%`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 30 | ``+`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``-`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 27 | ``~`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 25 | ``..`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 20 | ``==`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``!=`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``<=>`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``<`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``>`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``>=`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``<=`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``not in`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``in`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``matches`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``starts with`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``ends with`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``has some`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``has every`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``===`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``!==`` | | | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 18 | ``b-and`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 17 | ``b-xor`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 16 | ``b-or`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 15 | ``and`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 12 | ``xor`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 10 | ``or`` | infix | Left | |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 5 | ``??`` | infix | Right | Null coalescing operator (a ?? b) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``?:``, ``? :`` | | | Elvis operator (a ?: b) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| 0 | ``(`` | prefix | n/a | Explicit group expression (a) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``?`` | infix | Left | Conditional operator (a ? b : c) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``=`` | | Right | Assignment operator |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|
|
| | ``literal`` | prefix | n/a | A literal value (boolean, string, number, sequence, mapping, ...) |
|
|
+------------+------------------+---------+---------------+-------------------------------------------------------------------+
|