Difference between revisions of "SHIP:Sail:Operators"

From Serious Documentation
Jump to: navigation, search
Line 7: Line 7:
 
! width="5%" align="center" | Group
 
! width="5%" align="center" | Group
 
! width="15%" align="center" | Operator(s)
 
! width="15%" align="center" | Operator(s)
! width="70%" align="left" | Description
+
! width="45%" align="left" | Description
! width="15%" align="left" | Order
+
! width="35%" align="left" | Order
 
|-
 
|-
|1
+
|align="center"|1
|.
+
|align="center"|.
 
|Identifier qualification
 
|Identifier qualification
 
|rowspan=2|Left-to-right
 
|rowspan=2|Left-to-right
 
|-
 
|-
|rowspan=1|2
+
|align="center"|2
|<nowiki>++ --</nowiki>
+
|align="center"|<nowiki>++</nowiki>&#160;&#160;<nowiki>--</nowiki><br>()
()
+
|Post-increment/decrement<br>Function call
|Post-increment/decrement
 
Function call
 
 
|-
 
|-
|3
+
|align="center"|3
|<nowiki>++ --</nowiki>
+
|align="center"|<nowiki>++</nowiki>&#160;&#160;<nowiki>--</nowiki><br><nowiki>+ -</nowiki><br><nowiki>!</nowiki>&#160;&#160;<nowiki>~</nowiki>
<nowiki>+ -</nowiki>
+
|Pre-increment/decrement<br>Unary plus/minus<br>Logical/Bitwise NOT
<nowiki>! ~</nowiki>
 
|Pre-increment/decrement
 
Logical/Bitwise NOT
 
 
|Right-to-left
 
|Right-to-left
 
|-
 
|-
|4
+
|align="center"|4
|<nowiki>* / %</nowiki>
+
|align="center"|<nowiki>*</nowiki>&#160;&#160;<nowiki>/</nowiki>&#160;&#160;<nowiki>%</nowiki>
 
|Multiplication, Division, Modulus
 
|Multiplication, Division, Modulus
 
|rowspan=10|Left-to-Right
 
|rowspan=10|Left-to-Right
 
|-
 
|-
|5
+
|align="center"|5
|<nowiki>+ -</nowiki>
+
|align="center"|<nowiki>+</nowiki>&#160;&#160;<nowiki>-</nowiki>
 
|Addition, Subtraction
 
|Addition, Subtraction
 
|-
 
|-
|6
+
|align="center"|6
|<nowiki><< >></nowiki>
+
|align="center"|<nowiki><<</nowiki>&#160;&#160;<nowiki>>></nowiki>
 
|Bitwise left, right shift
 
|Bitwise left, right shift
 
|-
 
|-
|7
+
|align="center"|7
|<nowiki>< <=
+
|align="center"|&lt;&#160;&#160;&lt;<nowiki>=</nowiki><br>&gt;&#160;&#160;&gt;<nowiki>=</nowiki>
> >=</nowiki>
+
|Less than, Less than or equal<br>Greater than, greater than or equal
|Less than, Less than or equal
 
Greater than, greater than or equal
 
 
|-
 
|-
|8
+
|align="center"|8
|<nowiki>== !=</nowiki>
+
|align="center"|<nowiki>==</nowiki>&#160;&#160;<nowiki>!=</nowiki>
 
|Equal, not equal
 
|Equal, not equal
 
|-
 
|-
|9
+
|align="center"|9
|<nowiki>&</nowiki>
+
|align="center"|<nowiki>&</nowiki>
 
|Bitwise AND
 
|Bitwise AND
 
|-
 
|-
|10
+
|align="center"|10
|<nowiki>^</nowiki>
+
|align="center"|<nowiki>^</nowiki>
 
|Bitwise XOR
 
|Bitwise XOR
 
|-
 
|-
|11
+
|align="center"|11
|<nowiki>|</nowiki>
+
|align="center"|<nowiki>|</nowiki>
 
|Bitwise OR
 
|Bitwise OR
 
|-
 
|-
|12
+
|align="center"|12
|<nowiki>&&</nowiki>
+
|align="center"|<nowiki>&&</nowiki>
 
|Logical AND
 
|Logical AND
 
|-
 
|-
|13
+
|align="center"|13
|<nowiki>||</nowiki>
+
|align="center"|<nowiki>||</nowiki>
 
|Logical OR
 
|Logical OR
 
|-
 
|-
|14
+
|align="center"|14
|<nowiki>:?</nowiki>
+
|align="center"|<nowiki>:?</nowiki>
 
|Ternary Conditional
 
|Ternary Conditional
 
|Right-to-Left; Expression between <nowiki>?</nowiki> and ? always parsed as if parenthesized.
 
|Right-to-Left; Expression between <nowiki>?</nowiki> and ? always parsed as if parenthesized.
 
|-
 
|-
|15
+
|align="center"|15
|<nowiki>=
+
|align="center"|<nowiki>=</nowiki><br><nowiki>+=</nowiki>&#160;&#160;<nowiki>-=</nowiki><br><nowiki>*=</nowiki>&#160;&#160;<nowiki>/=</nowiki>&#160;&#160;<nowiki>%=</nowiki><br><nowiki><<=</nowiki>&#160;&#160;<nowiki>>>=</nowiki><br><nowiki>&=</nowiki>&#160;&#160;<nowiki>^=</nowiki>&#160;&#160;<nowiki>|=</nowiki>
+= -=
+
|Assignment<br>Add- and Subtract-assign<br>Multiply-, Divide-, and Modulus-assign<br>Bitwise left, right shift-assign<br>Bitwise AND, XOR, OR assign
*= /= %=
 
<<= >>=
 
&= ^= |=</nowiki>
 
|Assignment
 
Add- and Subtract-assign
 
Multiply-, Divide-, and Modulus-assign
 
Bitwise left, right shift-assign
 
Bitwise AND, XOR, OR assign
 
 
|Right-to-Left
 
|Right-to-Left
 
|}
 
|}

Revision as of 07:01, 13 May 2015

The following standard mathematical operators are available in Sail, listed in precedence order from first to last. Exceptions from C/Java are noted.

SHIPSail Operators and Precedence
Group Operator(s) Description Order
1 . Identifier qualification Left-to-right
2 ++  --
()
Post-increment/decrement
Function call
3 ++  --
+ -
!  ~
Pre-increment/decrement
Unary plus/minus
Logical/Bitwise NOT
Right-to-left
4 *  /  % Multiplication, Division, Modulus Left-to-Right
5 +  - Addition, Subtraction
6 <<  >> Bitwise left, right shift
7 <  <=
>  >=
Less than, Less than or equal
Greater than, greater than or equal
8 ==  != Equal, not equal
9 & Bitwise AND
10 ^ Bitwise XOR
11 | Bitwise OR
12 && Logical AND
13 || Logical OR
14 :? Ternary Conditional Right-to-Left; Expression between ? and ? always parsed as if parenthesized.
15 =
+=  -=
*=  /=  %=
<<=  >>=
&=  ^=  |=
Assignment
Add- and Subtract-assign
Multiply-, Divide-, and Modulus-assign
Bitwise left, right shift-assign
Bitwise AND, XOR, OR assign
Right-to-Left