Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EDT:EGL Language Operators and Expressions"
(22 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
== Operators and expressions (Table 7) == | == Operators and expressions (Table 7) == | ||
− | {| cellspacing="1" cellpadding="1" border="1" | + | {| cellspacing="1" cellpadding="1" border="1" style="width: 496px; height: 1035px" |
|- | |- | ||
| bgcolor="#999999" align="center" | '''''Operators and expressions<sup>1</sup>''''' | | bgcolor="#999999" align="center" | '''''Operators and expressions<sup>1</sup>''''' | ||
Line 32: | Line 32: | ||
| bgcolor="#cccccc" | ''{ } (set-values block)'' | | bgcolor="#cccccc" | ''{ } (set-values block)'' | ||
| <br>done | | <br>done | ||
− | | <br> | + | | 0.5d<br> |
| done<br> | | done<br> | ||
|- | |- | ||
Line 42: | Line 42: | ||
| bgcolor="#cccccc" | ''[ ] (array access)'' | | bgcolor="#cccccc" | ''[ ] (array access)'' | ||
| <br>done | | <br>done | ||
− | | <br> | + | | done<br> |
| done<br> | | done<br> | ||
|- | |- | ||
| bgcolor="#cccccc" | ''[ ] (dynamic access)'' | | bgcolor="#cccccc" | ''[ ] (dynamic access)'' | ||
| done<br> | | done<br> | ||
− | | <br> | + | | 1d<br> |
− | | | + | | done {{bug|353653}}<br> |
|- | |- | ||
| bgcolor="#cccccc" | ''[ ] (substring)<sup>2</sup>'' | | bgcolor="#cccccc" | ''[ ] (substring)<sup>2</sup>'' | ||
− | | | + | | done {{bug|354165}}<br> |
| done<br> | | done<br> | ||
| done<br> | | done<br> | ||
|- | |- | ||
| bgcolor="#cccccc" | ''isa<sup>3</sup>'' | | bgcolor="#cccccc" | ''isa<sup>3</sup>'' | ||
− | | <br> | + | | <br>done {{bug|354167}} |
− | | <br> | + | | 1d<br> |
− | | | + | | done {{bug|353654}}<br> |
|- | |- | ||
| bgcolor="#cccccc" | ''as<sup>3</sup>'' | | bgcolor="#cccccc" | ''as<sup>3</sup>'' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
| <br>done | | <br>done | ||
− | | <br> | + | | done<br> |
− | | | + | | done {{bug|353655}}<br> |
+ | |- | ||
+ | | bgcolor="#ffff00" | ''unary (~)<sup>4, 5</sup>'' | ||
+ | | bgcolor="#ffff00" | done | ||
+ | | bgcolor="#ffff00" | done {{bug|366875}}<br> | ||
+ | | bgcolor="#ffff00" | done {{bug|366876}}<br> | ||
+ | |- | ||
+ | | bgcolor="#cccccc" | ''unary (+ - !)'' | ||
+ | | done | ||
+ | | done | ||
+ | | done | ||
|- | |- | ||
| bgcolor="#cccccc" | ''math (+ - * / % **)<sup>9</sup>'' | | bgcolor="#cccccc" | ''math (+ - * / % **)<sup>9</sup>'' | ||
| <br>done | | <br>done | ||
− | | <br> | + | | 1d<br> |
| done<br> | | done<br> | ||
|- | |- | ||
Line 82: | Line 87: | ||
| bgcolor="#cccccc" | ''::'' | | bgcolor="#cccccc" | ''::'' | ||
| <br>done | | <br>done | ||
− | | <br> | + | | 0.5d<br> |
− | | | + | | done {{bug|353656}}<br> |
|- | |- | ||
| bgcolor="#cccccc" | ''?:'' | | bgcolor="#cccccc" | ''?:'' | ||
| <br>done | | <br>done | ||
− | | <br> | + | | 0.5d<br> |
− | | | + | | done {{bug|353656}}<br> |
|- | |- | ||
| bgcolor="#cccccc" | ''logical (And Or && ||)'' | | bgcolor="#cccccc" | ''logical (And Or && ||)'' | ||
Line 97: | Line 102: | ||
| bgcolor="#cccccc" | ''comparison (< > <= >= == !=)'' | | bgcolor="#cccccc" | ''comparison (< > <= >= == !=)'' | ||
| <br>done | | <br>done | ||
− | | <br> | + | | 2d<br> |
− | | 2d<br> | + | | 2d {{bug|353657}}<br> |
|- | |- | ||
− | | bgcolor="#cccccc" | ''bitwise (& | Xor | + | | bgcolor="#cccccc" | ''bitwise (& | Xor)<sup>5</sup>'' |
− | | | + | | done |
− | + | | 0.5d<br> | |
− | + | | 0.25d {{bug|353658}}<br> | |
− | + | ||
− | + | ||
− | + | ||
− | | 0. | + | |
|- | |- | ||
− | | bgcolor="#cccccc" | ''assigning bitwise (&= |= Xor= <<= >>= >>>=)<sup>4, 5</sup>'' | + | | bgcolor="#cccccc" | ''assigning bitwise (&= |= Xor=)<sup>5</sup>'' |
− | | | + | | done |
− | + | | 0.5d<br> | |
− | + | | 0.5d {{bug|353658}}<br> | |
− | [https://bugs.eclipse.org/bugs/show_bug.cgi?id=352742 Validation needs to allow these operators | + | |- |
+ | | bgcolor="#ffff00" | ''bit shifting (<< >> >>> <<= >>= >>>=)<sup>4,5</sup>'' | ||
+ | | bgcolor="#ffff00" | done | ||
+ | [https://bugs.eclipse.org/bugs/show_bug.cgi?id=352742 Validation needs to allow these operators] | ||
− | | | + | | bgcolor="#ffff00" | done |
− | | | + | | bgcolor="#ffff00" | done |
|- | |- | ||
− | | bgcolor="# | + | | bgcolor="#ffff00" | ''in<sup>7</sup>'' |
− | | | + | | bgcolor="#ffff00" | 1d |
− | | | + | | bgcolor="#ffff00" | N/S |
− | | | + | | bgcolor="#ffff00" | N/S |
|- | |- | ||
− | | bgcolor="# | + | | bgcolor="#ffff00" | ''like matches<sup>8</sup>'' |
− | | 1d | + | | bgcolor="#ffff00" | <br>1d |
− | | | + | | bgcolor="#ffff00" | done<br>(see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=352939 IR bug]) |
− | | N/S | + | | bgcolor="#ffff00" | N/S |
|- | |- | ||
− | | bgcolor="#cccccc" | '' | + | | bgcolor="#cccccc" | ''is/not'' |
− | | | + | | done |
| N/S | | N/S | ||
| N/S | | N/S | ||
+ | |- | ||
+ | | bgcolor="#ffff00" | ''Ternary Operator <br>(condition ? val1 : val2)<sup>6</sup><br>'' | ||
+ | | bgcolor="#ffff00" | 3d {{bug|366872}}<br> | ||
+ | | bgcolor="#ffff00" | .5d {{bug|366873}}<br> | ||
+ | | bgcolor="#ffff00" | .5d {{bug|366874}}<br> | ||
+ | |- | ||
+ | | bgcolor="#ffff00" | | ||
+ | ''Object Expression <br>{key : value, ''<br>''"key" : value}<sup>10</sup>'' | ||
+ | |||
+ | | bgcolor="#ffff00" | done{{bug|366742}}<br> | ||
+ | | bgcolor="#ffff00" | {{bug|366860}}<br> | ||
+ | | bgcolor="#ffff00" | {{bug|366861}}<br> | ||
|} | |} | ||
Line 137: | Line 153: | ||
#We'll document error conditions of operators and expressions, and their resulting exceptions. Whenever possible this documentation will be comments in the EGL source file for a type. | #We'll document error conditions of operators and expressions, and their resulting exceptions. Whenever possible this documentation will be comments in the EGL source file for a type. | ||
− | #<span style="background: | + | #<span style="background: rgb(255,165,0)">Substrings are immutable, so they can't be the target of an assignment or the argument to an inout parameter.</span> |
− | #<span style="background: | + | #<span style="background: rgb(255,165,0)">The type cannot be a nullable type. Nullability is not part of a type signature.</span> |
− | #There are new bitwise operators in EDT. ~ is a bitwise NOT (also called the compliment), << is a left shift, >> is a right shift where the leftmost bits become zero, | + | #There are new bitwise operators in EDT. ~ is a bitwise NOT (also called the compliment), << is a left shift, >>> is a right shift where the leftmost bits become zero (logical), >> is a right shift where the sign is copied into the leftmost bits (arithmetic). |
− | #Bitwise operators are only supported on values of type int. | + | #Bitwise operators are only supported on values of type int and smallint. |
#The if-then-else operator is borrowed from languages like C and Java. The condition's type must be boolean. The two values must have the same type. | #The if-then-else operator is borrowed from languages like C and Java. The condition's type must be boolean. The two values must have the same type. | ||
#We'll have functions in the array type to provide similar behavior. | #We'll have functions in the array type to provide similar behavior. | ||
#We'll have functions in the string type to provide similar behavior. | #We'll have functions in the string type to provide similar behavior. | ||
− | #Date/time math is not supported in EDT. Functions on the date and timestamp types provide similar behavior. | + | #Date/time math is not supported in EDT. Functions on the date and timestamp types provide similar behavior. |
+ | #Object expression is borrowed from java script, which allows an object to be created "on the fly". The key can either be an ID or a string and the value can be any expression that is valid on the right hand side of an assignment. |
Latest revision as of 11:30, 19 June 2012
Please see the parent of this page, EDT:EGL Language.
Operators and expressions (Table 7)
Operators and expressions1 | Core | JavaScript | Java |
. (member access) | done |
done |
done |
= | done |
done |
done |
function invocation | done |
done |
done |
new | done |
done |
done |
{ } (set-values block) | done |
0.5d |
done |
@ | done |
done (no work for generators) |
done (no work for generators) |
[ ] (array access) | done |
done |
done |
[ ] (dynamic access) | done |
1d |
done bug 353653 |
[ ] (substring)2 | done bug 354165 |
done |
done |
isa3 | done bug 354167 |
1d |
done bug 353654 |
as3 | done |
done |
done bug 353655 |
unary (~)4, 5 | done | done bug 366875 |
done bug 366876 |
unary (+ - !) | done | done | done |
math (+ - * / % **)9 | done |
1d |
done |
assigning math (+= -= *= /= %= **=)9 | done |
0.5d |
done |
:: | done |
0.5d |
done bug 353656 |
?: | done |
0.5d |
done bug 353656 |
logical (And Or && ||) | done |
done |
done |
comparison (< > <= >= == !=) | done |
2d |
2d bug 353657 |
bitwise (& | Xor)5 | done | 0.5d |
0.25d bug 353658 |
assigning bitwise (&= |= Xor=)5 | done | 0.5d |
0.5d bug 353658 |
bit shifting (<< >> >>> <<= >>= >>>=)4,5 | done | done | done |
in7 | 1d | N/S | N/S |
like matches8 | 1d |
done (see IR bug) |
N/S |
is/not | done | N/S | N/S |
Ternary Operator (condition ? val1 : val2)6 |
3d bug 366872 |
.5d bug 366873 |
.5d bug 366874 |
Object Expression |
donebug 366742 |
bug 366860 |
bug 366861 |
Notes on Table 7
- We'll document error conditions of operators and expressions, and their resulting exceptions. Whenever possible this documentation will be comments in the EGL source file for a type.
- Substrings are immutable, so they can't be the target of an assignment or the argument to an inout parameter.
- The type cannot be a nullable type. Nullability is not part of a type signature.
- There are new bitwise operators in EDT. ~ is a bitwise NOT (also called the compliment), << is a left shift, >>> is a right shift where the leftmost bits become zero (logical), >> is a right shift where the sign is copied into the leftmost bits (arithmetic).
- Bitwise operators are only supported on values of type int and smallint.
- The if-then-else operator is borrowed from languages like C and Java. The condition's type must be boolean. The two values must have the same type.
- We'll have functions in the array type to provide similar behavior.
- We'll have functions in the string type to provide similar behavior.
- Date/time math is not supported in EDT. Functions on the date and timestamp types provide similar behavior.
- Object expression is borrowed from java script, which allows an object to be created "on the fly". The key can either be an ID or a string and the value can be any expression that is valid on the right hand side of an assignment.