Jump to: navigation, search

Difference between revisions of "EDT:EGL Language"

m (add edt category)
 
(28 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== General Notes  ==
 
== General Notes  ==
  
*<blockquote></blockquote><u>'''This document is not finished yet!'''</u>
+
*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.  
*"N/S" means Not Supported.  
+
*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.<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>  
*'''Developers:''' include a link to Bugzilla for features not done yet, and mark items "Done" when you're finished.<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.  
== Table 1: Part Types  ==
+
*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.
{| width="400" cellspacing="1" cellpadding="1" border="1" style=""
+
|-
+
| bgcolor="#999999" align="center" | '''''Part Types'''''
+
| bgcolor="#999999" align="center" | '''Core'''
+
| bgcolor="#999999" align="center" | '''JavaScript'''
+
| bgcolor="#999999" align="center" | '''Java'''
+
| bgcolor="#999999" align="center" | '''Debug'''
+
|-
+
| bgcolor="#cccccc" | ''DataItem<sup>1</sup>''
+
| <br>
+
| <br>
+
| <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" | ''Structed 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''<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>
+
 
+
#In RBD a DataItem can only be used for primitive types.&nbsp; In EDT it can be used for any type.
+
#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>
+
#There are no called programs. Use libraries for "local calls" and services for "remote calls".<br>  
+
#We intend to support function overloading in all implementations, even JavaScript.<br>
+
 
+
== 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 In for references 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" | ''Byte(N)<sup>6</sup>''
+
| <br>
+
| <br>
+
| <br>
+
| <br>
+
|-
+
| bgcolor="#cccccc" | ''Byte<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>
+
 
+
#String(N) is a reference type in EDT.<br>
+
#String is a reference type in EDT.<br>
+
#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.<br>
+
#Decimal with no length or decimals is a reference type with an immutable value.<br>
+
#Number is a reference type with an immutable value. Unlike in RBD, number variables can be declared anywhere a variable declaration is allowed.<br>
+
#Byte(N) is a value type similar to RBD's hex. N indicates the number of bytes in the value.<br>
+
#Byte with no length is a reference type with an immutable value of any length.<br>
+
 
+
== 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''
+
| <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> N/S
+
| <br> N/S
+
| <br> N/S
+
|-
+
| 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>
+
 
+
#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.<br>
+
#EDT doesn't have called programs, but services and native programs can be called.<br>
+
#EDT's foreach statement will support iterating over an array.<br>
+
#Support for these statements is tentative, pending the design for JPA in EDT.<br>
+
  
== What's left...<br> ==
+
== Language Elements ==
  
*Operators and expressions
+
*[[EDT:EGL Language Part Types]]
*Conversions  
+
*[[EDT:EGL Language Function Parameters]]
*Stereotypes
+
*[[EDT:EGL Language Primitive Types]]
*Annotations  
+
*[[EDT:EGL Language Primitive Type Conversions]]
*Language compliance test
+
*[[EDT:EGL Language System Types and Functions]]
 +
*[[EDT:EGL Language Statements]]
 +
*[[EDT:EGL Language Literals]]
 +
*[[EDT:EGL Language Operators and Expressions]]
 +
*[[EDT:EGL Language Stereotypes and Annotations]]
 +
*[[EDT:EGL Language Tests]]
 +
*[[EDT:EGL Language conversion]]
  
<br>
+
  [[Category: EDT]]

Latest revision as of 15:45, 24 October 2011

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.

Language Elements