Differences between ETL 2nd edition and ISE implementation
Added keywords:
- Precursor
- Tilde operator: new symbol used by the Agent mechanism.
- create: Instead of using the
famous exclamation mark to create an instance of a class, you can use
the keyword `create'. Below you
will find a correspondence table between the old and the new syntax.
The old syntax is still valid, but at some points ISE will remove it
from its implementation:
Old syntax | New
syntax |
!! a | create a |
!! a.make | create
a.make |
!B! a | create {B}
a |
!B! a.make | create
{B} a.make |
Added semantics:
- generic creation
- expression creation: you can now create an object within an
expression. For example, you want to create an object and pass it as
an argument to a function. Before you had to create a local variables,
to create the object and pass it to the function. Now, you simply need
to pass to the function the creation expression. Here a small example:
Old method | New method |
local
a: STRING
do
!! a.make (10)
f (a)
end
|
do
f (create {STRING}.make (10))
end
|
This is also very useful since it can also improve the power of assertions.
- mutually recursive constraints: one can now write class A [H,
G->H] or class B [H -> C, G -> ARRAY [H]]. As a result, the
declaration A [D, E] is valid only if E is a descendant of D. In the
same maner, the declaration B [E, ARRAY [D]] is not valid, if E is a
descendant of D.
- Tuples
- Agents
Added external support
Look at the page for C and C++
with the introduction of `struct' and C++ externals encapsulation. |