Difference between revisions of "EDT:EGL Language"

From Eclipsepedia

Jump to: navigation, search
m (add edt category)
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== General Notes  ==
 
== General Notes  ==
  
*<u>'''This document is not finished yet!'''</u>  It's being populated from the design meetings. Design meeting notes are at [[EDT:Discussion topics from the language meetings]].
+
*This document was populated from design meetings. Meeting notes are at [[EDT:Discussion topics from the language meetings]].  
*"N/S" means Not Supported.  
+
*"N/S" means Not Supported. We may support N/S features in the future.  
 
*Anything that exists in RBD but isn't mentioned here is not included in EDT. Or maybe we forgot about it. Nobody's perfect.<br>  
 
*Anything that exists in RBD but isn't mentioned here is not included in EDT. Or maybe we forgot about it. Nobody's perfect.<br>  
 
*The work in the Core category includes the parser, model, and validation.<br>  
 
*The work in the Core category includes the parser, model, and validation.<br>  
 
*The work in the JavaScript, Java, and Debug categories includes both the generator and runtime.<br>  
 
*The work in the JavaScript, Java, and Debug categories includes both the generator and runtime.<br>  
 
*Text <span style="background:#FFA500">with an orange background</span> shows differences in features supported by both EDT and RBD.  
 
*Text <span style="background:#FFA500">with an orange background</span> shows differences in features supported by both EDT and RBD.  
*'''Developers:''' include a link to Bugzilla for features not done yet, and mark items "Done" when you're finished.  
+
*Features <span style="background:#FFFF00">with a yellow background</span> are planned for EDT 1.0, but not EDT 0.7.0.
 +
*'''Developers:''' include a link to Bugzilla for features not done yet, and mark items "Done" when you're finished.
  
== Table 1: Part Types ==
+
== Language Elements ==
  
{| width="400" cellspacing="1" cellpadding="1" border="1" style=""
+
*[[EDT:EGL Language Part Types]]
|-
+
*[[EDT:EGL Language Function Parameters]]
| bgcolor="#999999" align="center" | '''''Part Types'''''
+
*[[EDT:EGL Language Primitive Types]]
| bgcolor="#999999" align="center" | '''Core'''
+
*[[EDT:EGL Language Primitive Type Conversions]]
| bgcolor="#999999" align="center" | '''JavaScript'''
+
*[[EDT:EGL Language System Types and Functions]]
| bgcolor="#999999" align="center" | '''Java'''
+
*[[EDT:EGL Language Statements]]
| bgcolor="#999999" align="center" | '''Debug'''
+
*[[EDT:EGL Language Literals]]
|-
+
*[[EDT:EGL Language Operators and Expressions]]
| bgcolor="#cccccc" | ''DataItem<sup>1</sup>''
+
*[[EDT:EGL Language Stereotypes and Annotations]]
| <br>
+
*[[EDT:EGL Language Tests]]
| <br>
+
*[[EDT:EGL Language conversion]]
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Function<sup>2, 5</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Top-level function<sup>2, 5</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Delegate<sup>2</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Record''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Structured Record''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''ExternalType''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Handler''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Library''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Service''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Interface<sup>3</sup>''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Enumeration''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Program<sup>4</sup>''<br>
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Array''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Nullability<sup>6</sup>''<br>
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''DataTable''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Form''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|}
+
  
'''Notes on Table 1'''<br>
+
  [[Category: EDT]]
 
+
#<span style="background:#FFA500">In RBD a DataItem can only be used for primitive types. In EDT it can be used for any type.</span>
+
#See also Table 2: Function Parameters.
+
#Interfaces can be implemented by services <span style="background:#FFA500">and handlers (every kind of "logic part" which can be instantiated)</span>.
+
#<span style="background:#FFA500">There are no called programs in EDT. Use libraries for "local calls" and services for "remote calls".</span>
+
#<span style="background:#FFA500">We intend to support function overloading in all implementations, even JavaScript.</span>
+
#<span style="background:#FFA500">Nullability means that a variable may really be null.  It's not an "I'm null" flag like in RBD.  A NullValueException will be thrown if you try to access a field or function of a null variable, even a record. A NullValueException will be thrown if a null variable is an operand to a math operator, an array access, a substring access, a comparison, or a bitwise operator.</span> The string concatenation operators will work the same as in RBD with respect to nulls. &nbsp;:: treats null as the empty string, and&nbsp;?: results in null if either operand is null. <span style="background:#FFA500">A question mark won't be allowed on the second operand of the AS and ISA operators (the name of the type).</span>
+
 
+
== Table 2: Function Parameters  ==
+
 
+
{| width="400" cellspacing="1" cellpadding="1" border="1" style=""
+
|-
+
| bgcolor="#999999" align="center" | '''''Function Parameters'''''
+
| bgcolor="#999999" align="center" | '''Core'''
+
| bgcolor="#999999" align="center" | '''JavaScript'''
+
| bgcolor="#999999" align="center" | '''Java'''
+
| bgcolor="#999999" align="center" | '''Debug'''
+
|-
+
| bgcolor="#cccccc" | ''In<sup>1</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Out''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Inout<sup>1</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Ellipsis''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Const''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Field''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''SqlNullable''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|}
+
 
+
'''Notes on Table 2'''<br>
+
 
+
#The default parameter modifier is <span style="background:#FFA500">In for references</span> and Inout for values.<br>
+
 
+
== Table 3: Primitive Types  ==
+
 
+
{| width="400" cellspacing="1" cellpadding="1" border="1" style=""
+
|-
+
| bgcolor="#999999" align="center" | '''''Primitive Types'''''
+
| bgcolor="#999999" align="center" | '''Core'''
+
| bgcolor="#999999" align="center" | '''JavaScript'''
+
| bgcolor="#999999" align="center" | '''Java'''
+
| bgcolor="#999999" align="center" | '''Debug'''
+
|-
+
| bgcolor="#cccccc" | ''Any''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Boolean''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Dictionary''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''String(N)<sup>1</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''String<sup>2</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Timestamp<sup>3</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Blob''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Clob''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Smallint''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Int''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Bigint''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Decimal(N,M)''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Decimal(N)''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Decimal<sup>4</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Float''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Smallfloat''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Number<sup>5</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Bytes(N)<sup>6</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Bytes<sup>7</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Arraydictionary''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Char''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Dbchar''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Mbchar''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Unicode''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Hex<sup>6</sup>''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Date<sup>3</sup>''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Time<sup>3</sup>''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Interval<sup>3</sup>''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Bin''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Num''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Numc''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Pacf''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Money''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|}
+
 
+
'''Notes on Table 3'''<br>
+
 
+
#<span style="background:#FFA500">String(N) is a reference type in EDT.</span>
+
#<span style="background:#FFA500">String is a reference type in EDT.</span>
+
#Timestamp is the only supported date/time type. Use it in place of RBD's date, time, and interval. <span style="background:#FFA500">Date/time math produces timestamps or numbers.</span>
+
#<span style="background:#FFA500">Decimal with no length or decimals is a reference type with an immutable value.</span>
+
#<span style="background:#FFA500">Number is a reference type with an immutable value. Unlike in RBD, number variables can be declared anywhere a variable declaration is allowed.</span>
+
#Bytes(N) is a value type similar to RBD's hex. N indicates the number of bytes in the value. (In RBD, the length of a hex is the number of nibbles not the nubmer of bytes.)
+
#Bytes with no length is a reference type with an immutable value of any length.
+
 
+
== Table 4: Statements  ==
+
 
+
{| width="400" cellspacing="1" cellpadding="1" border="1" style=""
+
|-
+
| bgcolor="#999999" align="center" | '''''Statements'''''
+
| bgcolor="#999999" align="center" | '''Core'''
+
| bgcolor="#999999" align="center" | '''JavaScript'''
+
| bgcolor="#999999" align="center" | '''Java'''
+
| bgcolor="#999999" align="center" | '''Debug'''
+
|-
+
| bgcolor="#cccccc" | ''Variable declaration<sup>5</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Const declaration''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Assignment''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Move<sup>1</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Return''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Function invocation''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Call<sup>2</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Label''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Transfer''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Throw''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Try''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Case''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''If''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''While''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''For''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Foreach<sup>3</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Exit''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Continue''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Empty statement (a semicolon)''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Add''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Close''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Delete''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Get''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Replace''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Execute<sup>4</sup>''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Prepare<sup>4</sup>''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Open<sup>4</sup>''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''FreeSQL<sup>4</sup>''
+
| <br>
+
| N/S<br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Goto''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Set''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Converse''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Display''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Print''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Forward''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''Show''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''OpenUI''<br>
+
| <br>
+
| N/S
+
| N/S
+
| N/S
+
|}
+
 
+
'''Notes on Table 4'''<br>
+
 
+
#EDT won't support every variation of RBD's move statement. There will be support for '''move byName''', '''move for''', and '''move for all'''. A move statement without one of the additional keywords is only allowed between two references, and it results in the target being assigned a copy of the source's value. If/when we support structured records, we might not support '''move byName''' on them because of the complex (unclean) design.
+
#EDT doesn't have called programs, but services and native programs can be called.
+
#<span style="background:#FFA500">EDT's foreach statement will support iterating over an array.</span>
+
#Support for these statements is tentative, pending the design for JPA in EDT.
+
# New syntax will allow setting annotations on declarations without the use of curly braces.  In RBD we usually do '''<span style="font-family: times, 'Times New Roman', serif;">x int {myAnnotation = 3};</span>''' but another way to do the same thing is '''<span style="font-family: times, 'Times New Roman', serif;">x int {@myAnnotation{3}};</span>'''.  In EDT we will allow that to be outside of curly braces and before the declaration, for example '''<span style="font-family: times, 'Times New Roman', serif;">@myAnnotation{3} x int;</span>'''.
+
 
+
 
+
== Table 5: Literals  ==
+
 
+
{| width="400" cellspacing="1" cellpadding="1" border="1" style=""
+
|-
+
| bgcolor="#999999" align="center" | '''''Literals'''''
+
| bgcolor="#999999" align="center" | '''Core'''
+
| bgcolor="#999999" align="center" | '''JavaScript'''
+
| bgcolor="#999999" align="center" | '''Java'''
+
| bgcolor="#999999" align="center" | '''Debug'''
+
|-
+
| bgcolor="#cccccc" | ''null''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''boolean<sup>1</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''integer<sup>2</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''fixed-decimal<sup>3</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''floating point''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''string<sup>4</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''bytes<sup>5</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''array''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''char''
+
|
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''mbchar''
+
|
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''dbchar''
+
|
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''hex''
+
|
+
| N/S
+
| N/S
+
| N/S
+
|}
+
 
+
'''Notes on Table 5'''<br>
+
 
+
#As in RBD, there are four boolean literals: true false yes no
+
#Integer literals have 1-32 digits, an optional leading sign, and no decimal point. The type of the literal depends on the value. If the value fits in a smallint, then the type is smallint. If the value doesn't fit in a smallint but it does fit in an int, then the type is int. Similarly for bigint. If the value is too large for a bigint, then the type is decimal(X), where X is the number of digits in the value.
+
#Fixed-decimal literals have 1-32 digits, an optional leading sign, and a decimal point. At least one digit must follow the decimal point, but it's permissible to have no digits before the decimal point. The type of a fixed-decimal literal is decimal(X,Y), where X is the total number of digits and Y is the number of digits to the right of the decimal point.
+
#String literals are enclosed in double quotes. An optional ux prefix may appear before the opening double quote. The ux prefix means the string is defined as Unicode codepoints in hexadecimal. For example "012" and ux"003000310032" have the same value. The letters u and x may be in any case.
+
#A bytes literal is written as 0x or 0X followed by an even number of hexadecimal digits. For example 0x03AB is a literal whose type is bytes(2).
+
 
+
== Table 6: Operators and expressions  ==
+
 
+
{| width="400" cellspacing="1" cellpadding="1" border="1" style=""
+
|-
+
| bgcolor="#999999" align="center" | '''''Operators and expressions<sup>1</sup>'''''
+
| bgcolor="#999999" align="center" | '''Core'''
+
| bgcolor="#999999" align="center" | '''JavaScript'''
+
| bgcolor="#999999" align="center" | '''Java'''
+
| bgcolor="#999999" align="center" | '''Debug'''
+
|-
+
| bgcolor="#cccccc" | ''. (member access)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''=''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''function invocation''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''new''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''{ } (set-values block)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''@''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''[ ] (array access)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''[ ] (dynamic access)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''[ ] (substring)<sup>2</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''isa<sup>3</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''as<sup>3</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''unary (+ -&nbsp;! ~)<sup>4, 5</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''math (+ - * /&nbsp;% **)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''assigning math (+= -= *= /=&nbsp;%= **=)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''::''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''?:''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''logical (And Or &amp;&amp; &#124;&#124;)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''comparison (&lt; &gt; &lt;= &gt;= ==&nbsp;!=)''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''bitwise (&amp; | Xor &lt;&lt; &gt;&gt; &gt;&gt;&gt;)<sup>4, 5</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''assigning bitwise (&amp;= |= Xor= &lt;&lt;= &gt;&gt;= &gt;&gt;&gt;=)<sup>4, 5</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''if-then-else'' (condition ? val1 : val2)''<sup>6</sup>''
+
|
+
|
+
|
+
|
+
|-
+
| bgcolor="#cccccc" | ''in<sup>7</sup>''
+
|
+
| N/S
+
| N/S
+
| N/S
+
|-
+
| bgcolor="#cccccc" | ''like matches<sup>8</sup>''
+
|
+
| N/S
+
| N/S
+
| N/S
+
|}
+
 
+
'''Notes on Table 6'''<br>
+
 
+
# 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:#FFA500">Substrings are immutable, so they can't be the target of an assignment or the argument to an inout parameter.</span>
+
# <span style="background:#FFA500">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), &lt;&lt; is a left shift, &gt;&gt; is a right shift where the leftmost bits become zero, &gt;&gt;&gt; is a right shift where the sign is copied into the leftmost bits.
+
# Bitwise operators are only supported on int, bigint, 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 on the array type to provide similar behavior.
+
# We'll have functions on the string type to provide similar behavior.
+
 
+
 
+
== What's left...  ==
+
 
+
*Conversions
+
**result of conversion errors?
+
**implicit conversions? (e.g. what RBD does for int = boolean, string = any)
+
**defaultNumericFormat, defaultMoneyFormat, defaultTimestampFormat, defaultDateFormat, defaultTimeFormat
+
**numeric to/from numeric
+
**string to/from numeric
+
**string to/from boolean
+
**string to/from bytes
+
**string to/from timestamp
+
**numeric to/from boolean
+
**numeric to/from bytes
+
**numeric to/from timestamp
+
**bytes to/from boolean
+
**bytes to/from timestamp
+
**boolean to/from timestamp
+
*Stereotypes
+
**program stereotypes
+
***BasicProgram
+
***UIProgram
+
***TextUIProgram
+
***VGWebTransaction
+
**library stereotypes
+
***BasicLibrary
+
***NativeLibrary
+
***RUIPropertiesLibrary
+
**record stereotypes
+
***BasicRecord
+
***Exception
+
***SQLRecord
+
***CSVRecord
+
***DLISegment
+
***PSBRecord
+
***IndexedRecord
+
***RelativeRecord
+
***SerialRecord
+
***MQRecord
+
***ConsoleForm
+
***VGUIRecord
+
**handler stereotypes
+
***BasicHandler
+
***RUIHandler
+
***RUIWidget
+
***BirtHandler
+
***JasperReport
+
***JSFHandler
+
**externaltype stereotypes
+
***NativeType
+
***JavaObject
+
***JavaScriptObject
+
***HostProgram
+
**datatable stereotypes...form stereotypes...
+
*Annotations (details TBD)
+
*Our libraries and functions within our types (details TBD)
+
*Language compliance test (details TBD)
+
 
+
<br>
+

Latest revision as of 16:45, 24 October 2011

[edit] General Notes

  • This document was populated from design meetings. Meeting notes are at EDT:Discussion topics from the language meetings.
  • "N/S" means Not Supported. We may support N/S features in the future.
  • Anything that exists in RBD but isn't mentioned here is not included in EDT. Or maybe we forgot about it. Nobody's perfect.
  • The work in the Core category includes the parser, model, and validation.
  • The work in the JavaScript, Java, and Debug categories includes both the generator and runtime.
  • Text with an orange background shows differences in features supported by both EDT and RBD.
  • Features with a yellow background are planned for EDT 1.0, but not EDT 0.7.0.
  • Developers: include a link to Bugzilla for features not done yet, and mark items "Done" when you're finished.

[edit] Language Elements