Detailed Precedence Table

The table below shows all the Operators that PTPScript supports, according to their precedence (importance), along with their type and associativity. The Operators with highest precedence (most important) are at the top. The actual level of each Operator is also shown.

Level Type Symbol Associativity Description
Individual terms
19 Constants
19 Numbers
19 " " String
19 ' ' String
19 ` ` String
19 """ """ String
19 ''' ''' String
19 Variables
Glued terms
18 Prefix . None Used with With command
18 Infix . Left Array syntax
18 Infix .. Left __CurrentLoop__ shortcut
Grouped terms
17 Prefix [ None Array syntax
17 Infix [ Left Array syntax
17 Prefix ] None Array syntax
17 Postfix ] None Array syntax
17 Prefix ( None Parentheses
17 Infix ( Left Parentheses
17 Prefix ) None Parentheses
17 Postfix ) None Parentheses
Auto-increment
16 Prefix ++ None Auto-increment
16 Postfix ++ None Auto-increment
16 Prefix -- None Auto-decrement
16 Postfix -- None Auto-decrement
Exponentiation
15 Infix ** Left Exponentiation (raise to power)
Symbolic unary
14 Prefix + None Cast to Number
14 Prefix - None Cast to negative Number
14 Prefix ? None Cast to Boolean
14 Prefix ! None Cast to negative Boolean (i.e. logical NOT)
14 Prefix ~ None Cast to String
14 Prefix @ None Cast to Array
14 Prefix +^ None Numeric bitwise NOT
14 Prefix ~^ None String bitwise NOT
14 Prefix ?^ None Boolean bitwise NOT
14 Prefix ??? None Existence
Multiplication and division
13 Infix * Left Numeric multiplication
13 Infix / Left Numeric division
13 Infix % Left Numeric modulus (remainder)
13 Infix ~* Left String repetition
13 Infix @* Left Array repetition
13 Infix +& Left Numeric bitwise AND
13 Infix ~& Left String bitwise AND
13 Infix ?& Left Boolean bitwise AND
13 Infix +< Left Numeric bitwise shift left
13 Infix ~< Left String bitwise shift left
13 Infix +> Left Numeric bitwise shift right
13 Infix ~> Left String bitwise shift right
Addition and subtraction
12 Infix + Left Numeric addition
12 Infix - Left Numeric subtraction
12 Infix ~ Left String concatenation
12 Infix @ Left Array merge
12 Infix +| Left Numeric bitwise OR
12 Infix ~| Left String bitwise OR
12 Infix ?| Left Boolean bitwise OR
12 Infix +^ Left Numeric bitwise XOR
12 Infix ~^ Left String bitwise XOR
12 Infix ?^ Left Boolean bitwise XOR
Named unary
11 Prefix destroy None Destruction
11 Prefix typeof None Type checking
11 Prefix abs None Numeric absolute value
11 Prefix cos None Numeric cosine
11 Prefix log None Numeric base-10 logarithm
11 Prefix ln None Numeric natural logarithm
11 Prefix sin None Numeric sine
11 Prefix tan None Numeric tangent
Range
10 Infix ... Left Range
Relational comparison
Standard comparison
9 Infix < Left Less than
9 Infix <= Left Less than or equal to
9 Infix > Left Greater than
9 Infix >= Left Greater than or equal to
String comparison
9 Infix lt Left Less than
9 Infix le Left Less than or equal to
9 Infix gt Left Greater than
9 Infix ge Left Greater than or equal to
Presence checking
9 Infix in Left Simple presence search
Equality comparison
Standard comparison
8 Infix == Left Equal to
8 Infix != Left Not equal to
8 Infix <> Left Not equal to
8 Infix === Left Identical to
8 Infix !== Left Not identical to
String comparison
8 Infix eq Left Equal to
8 Infix ne Left Not equal to
Type checking
8 Infix is Left Is type
Tight logical comparison
7 Infix && Left Logical AND
6 Infix || Left Logical OR
6 Infix ^^ Left Logical XOR
6 Infix |?| Left Logical ERR
Assignment
5 Infix = Right Set equal to
Exponentiation
5 Infix **= Right Exponentiation (raise to power) and set equal to
Multiplication and division
5 Infix *= Right Numeric multiplication and set equal to
5 Infix /= Right Numeric division and set equal to
5 Infix %= Right Numeric modulus (remainder) and set equal to
5 Infix ~*= Right String repetition and set equal to
5 Infix @*= Right Array repetition and set equal to
5 Infix +&= Right Numeric bitwise AND and set equal to
5 Infix ~&= Right String bitwise AND and set equal to
5 Infix ?&= Right Boolean bitwise AND and set equal to
5 Infix +<= Right Numeric bitwise shift left and set equal to
5 Infix ~<= Right String bitwise shift left and set equal to
5 Infix +>= Right Numeric bitwise shift right and set equal to
5 Infix ~>= Right String bitwise shift right and set equal to
Addition and subtraction
5 Infix += Right Numeric addition and set equal to
5 Infix -= Right Numeric subtraction and set equal to
5 Infix ~= Right String concatenation and set equal to
5 Infix @= Right Array merge and set equal to
5 Infix +|= Right Numeric bitwise OR and set equal to
5 Infix ~|= Right String bitwise OR and set equal to
5 Infix ?|= Right Boolean bitwise OR and set equal to
5 Infix +^= Right Numeric bitwise XOR and set equal to
5 Infix ~^= Right String bitwise XOR and set equal to
5 Infix ?^= Right Boolean bitwise XOR and set equal to
Range
5 Infix ...= Right Range and set equal to
Logical
5 Infix &&= Right Logical AND and set equal to
5 Infix ||= Right Logical OR and set equal to
5 Infix ^^= Right Logical XOR and set equal to
5 Infix |?|= Right Logical ERR and set equal to
Loose logical
4 Prefix not None Logical NOT
3 Infix and Left Logical AND
2 Infix or Left Logical OR
2 Infix xor Left Logical XOR
2 Infix err Left Logical ERR
Group separators
1 Prefix , None Parameter separator
1 Infix , Left Parameter separator
1 Infix : Left Key:value pair assignment
Comments
0 Prefix // None Comment
0 Infix // None Comment

In the table above, some Operators are listed more than once. For instance, closing parentheses - ) - are listed as both prefix and postfix, at the same level of precedence. This is because they can be used in both of those positions. Other Operators are listed at different levels - for instance the plus symbol - + - is listed as a high-precedence prefix operator and a lower-precedence infix operator. This is because the infix version performs numeric addition, and the prefix version is used for type-casting.

ptpscript/operators/precedence_tables/detailed.txt · Last modified: 2007/01/24 10:15
 
 
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki