Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EDT:EGL Language"
Line 1: | Line 1: | ||
== General Notes == | == General Notes == | ||
− | * | + | *<u>'''This document is not finished yet!'''</u> |
*"N/S" means Not Supported. | *"N/S" means Not Supported. | ||
*Anything that exists in RBD but isn't mentioned here is not included in EDT.<br> | *Anything that exists in RBD but isn't mentioned here is not included in EDT.<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> | ||
*'''Developers:''' include a link to Bugzilla for features not done yet, and mark items "Done" when you're finished.<br> | *'''Developers:''' include a link to Bugzilla for features not done yet, and mark items "Done" when you're finished.<br> | ||
+ | *[[EDT:Discussion topics from the language meetings]]<br> | ||
== Table 1: Part Types == | == Table 1: Part Types == | ||
Line 48: | Line 50: | ||
| <br> | | <br> | ||
|- | |- | ||
− | | bgcolor="#cccccc" | '' | + | | bgcolor="#cccccc" | ''Structured Record''<br> |
| <br> | | <br> | ||
| N/S | | N/S | ||
Line 123: | Line 125: | ||
'''Notes on Table 1'''<br> | '''Notes on Table 1'''<br> | ||
− | #In RBD a DataItem can only be used for primitive types. | + | #In RBD a DataItem can only be used for primitive types. In EDT it can be used for any type. |
#See also Table 2: Function Parameters.<br> | #See also Table 2: Function Parameters.<br> | ||
#Interfaces can be implemented by services and handlers (every kind of "logic part" which can be instantiated).<br> | #Interfaces can be implemented by services and handlers (every kind of "logic part" which can be instantiated).<br> |
Revision as of 16:11, 20 June 2011
Contents
General Notes
- This document is not finished yet!
- "N/S" means Not Supported.
- Anything that exists in RBD but isn't mentioned here is not included in EDT.
- 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.
- Developers: include a link to Bugzilla for features not done yet, and mark items "Done" when you're finished.
- EDT:Discussion topics from the language meetings
Table 1: Part Types
Part Types | Core | JavaScript | Java | Debug |
DataItem1 | |
|
|
|
Function2, 5 | |
|
|
|
Top-level function2, 5 | |
|
|
|
Delegate2 | |
|
|
|
Record |
|
|
|
|
Structured Record |
|
N/S | N/S | N/S |
ExternalType |
|
|
|
|
Handler |
|
|
|
|
Library |
|
|
|
|
Service |
|
|
|
|
Interface3 |
|
|
|
|
Enumeration |
|
|
|
|
Program4 |
|
N/S |
|
|
Array |
|
|
|
|
Nullability |
|
|
|
|
DataTable |
|
N/S | N/S | N/S |
Form |
|
N/S | N/S | N/S |
Notes on Table 1
- In RBD a DataItem can only be used for primitive types. In EDT it can be used for any type.
- See also Table 2: Function Parameters.
- Interfaces can be implemented by services and handlers (every kind of "logic part" which can be instantiated).
- There are no called programs. Use libraries for "local calls" and services for "remote calls".
- We intend to support function overloading in all implementations, even JavaScript.
Table 2: Function Parameters
Function Parameters | Core | JavaScript | Java | Debug |
In1 | |
|
|
|
Out | |
|
|
|
Inout1 | |
|
|
|
Ellipsis | |
|
|
|
Const | |
|
|
|
Field |
|
N/S | N/S | N/S |
SqlNullable |
|
N/S | N/S | N/S |
Notes on Table 2
- The default parameter modifier is In for references and Inout for values.
Table 3: Primitive Types
Primitive Types | Core | JavaScript | Java | Debug |
Any | |
|
|
|
Boolean | |
|
|
|
Dictionary | |
|
|
|
String(N)1 | |
|
|
|
String2 | |
|
|
|
Timestamp3 | |
|
|
|
Blob | |
N/S |
|
|
Clob | |
N/S |
|
|
Smallint | |
|
|
|
Int | |
|
|
|
Bigint | |
|
|
|
Decimal(N,M) | |
|
|
|
Decimal(N) | |
|
|
|
Decimal4 | |
|
|
|
Float | |
|
|
|
Smallfloat | |
|
|
|
Number5 | |
|
|
|
Byte(N)6 | |
|
|
|
Byte7 | |
|
|
|
Arraydictionary |
|
N/S | N/S | N/S |
Char |
|
N/S | N/S | N/S |
Dbchar |
|
N/S | N/S | N/S |
Mbchar |
|
N/S | N/S | N/S |
Unicode |
|
N/S | N/S | N/S |
Hex6 |
|
N/S | N/S | N/S |
Date3 |
|
N/S | N/S | N/S |
Time3 |
|
N/S | N/S | N/S |
Interval3 |
|
N/S | N/S | N/S |
Bin |
|
N/S | N/S | N/S |
Num |
|
N/S | N/S | N/S |
Numc |
|
N/S | N/S | N/S |
Pacf |
|
N/S | N/S | N/S |
Money |
|
N/S | N/S | N/S |
Notes on Table 3
- String(N) is a reference type in EDT.
- String is a reference type in EDT.
- Timestamp is the only supported date/time type. Use it in place of RBD's date, time, and interval. Date/time math produces timestamps or numbers.
- Decimal with no length or decimals is a reference type with an immutable value.
- Number is a reference type with an immutable value. Unlike in RBD, number variables can be declared anywhere a variable declaration is allowed.
- Byte(N) is a value type similar to RBD's hex. N indicates the number of bytes in the value.
- Byte with no length is a reference type with an immutable value of any length.
Table 4: Statements
Statements | Core | JavaScript | Java | Debug |
Variable declaration | |
|
|
|
Const declaration | |
|
|
|
Assignment | |
|
|
|
Move1 | |
N/S |
N/S |
N/S |
Return | |
|
|
|
Function invocation | |
|
|
|
Call2 | |
|
|
|
Label | |
|
|
|
Transfer | |
N/S |
|
|
Throw | |
|
|
|
Try | |
|
|
|
Case | |
|
|
|
If | |
|
|
|
While | |
|
|
|
For | |
|
|
|
Foreach3 | |
|
|
|
Exit | |
|
|
|
Continue | |
|
|
|
Empty statement (a semicolon) | |
|
|
|
Add | |
N/S |
|
|
Close | |
N/S |
|
|
Delete | |
N/S |
|
|
Get | |
N/S |
|
|
Replace | |
N/S |
|
|
Execute4 | |
N/S |
|
|
Prepare4 | |
N/S |
|
|
Open4 | |
N/S |
|
|
FreeSQL4 | |
N/S |
|
|
Goto |
|
N/S | N/S | N/S |
Set |
|
N/S | N/S | N/S |
Converse |
|
N/S | N/S | N/S |
Display |
|
N/S | N/S | N/S |
Print |
|
N/S | N/S | N/S |
Forward |
|
N/S | N/S | N/S |
Show |
|
N/S | N/S | N/S |
OpenUI |
|
N/S | N/S | N/S |
Notes on Table 4
- In RBD, a move statement between two references does a deep copy. Reference types should include a deep copy function to provide the same functionality in EDT.
- EDT doesn't have called programs, but services and native programs can be called.
- EDT's foreach statement will support iterating over an array.
- Support for these statements is tentative, pending the design for JPA in EDT.
What's left...
- Operators and expressions
- Conversions
- Stereotypes
- Annotations
- Language compliance test