Online Eiffel Documentation |
Documentation Home > Tools > EiffelStudio > EiffelStudio Reference > Compiler > Differences between ETL 2nd printing and Eiffel Software implementation |
EiffelStudio |
Differences between standard ECMA-367 and Eiffel Software implementation |
Feature | Example | ETL2 | ECMA-367 | EiffelStudio |
Fictitious class for tuples | TUPLE | No | Yes | Yes |
Feature | Example | ETL2 | ECMA-367 | EiffelStudio |
Prefix and infix feature names | infix "+" | Yes | No | Yes |
Operator and bracket aliases | add alias "+" | No | Yes | Yes, except for new rules for free operator names |
Assigner command | item alias "[]" (index: INTEGER): G assign put | No | Yes | Yes |
Feature | Example | ETL2 | ECMA-367 | EiffelStudio |
Mutually recursive constraints | A [H, G -> H] B [H -> C, G -> ARRAY [H]] | No | Yes | Yes |
Full mutually recursive constraints | A [H -> G, G -> H] | No | Yes | No |
Expandedness restriction on formal generic | A [reference G] B [expanded H] | No | No | Yes |
Feature | Example | ETL2 | ECMA-367 | EiffelStudio |
Implicit creation procedure (version of ANY.default_create) | class A feature ... end -- The following instructions are equivalent: create {A} a create {A} a.default_create | No | Yes | Yes |
Bang-bang syntax | !! a !! a.make !B! a !B! a.make | Yes | No | Yes, marked as obsolete |
Keyword syntax | create a create a.make create {B} a create {B} a.make | No | Yes | Yes |
Creation expression | print (create {TIME}.make_now) | No | Yes | Yes |
Generic creation | create {G} x.make | No | Yes | Yes |
Feature | Example | ETL2 | ECMA-367 | EiffelStudio |
Precursor call | Precursor | No | Yes | Yes |
Non-object call | c := {COLOR}.green | No | Yes | Yes |
Assigner call | x [i] := x [i] + 1 | No | Yes | Yes |
Bracket expression as call target | x [i].update | No | No | Yes |
Feature | Example | ETL2 | ECMA-367 | EiffelStudio |
Bracket expression | y := x [i] | No | Yes | Yes |
Creation expression | set_buffer (create {STRING}.make (100)) | No | Yes | Yes |
Manifest type | {MY_TYPE} | No | Yes | Yes |
Manifest tuple | [a, b, c] | No | Yes | Yes |
Agent | list.do_all (agent print (?)) | No | Yes | Yes, except for inline agents |
Once manifest string | once "abc" | No | Yes | Yes |
Feature | Example | ETL2 | ECMA-367 | EiffelStudio |
Verbatim string | x := "[ This string is left-adjusted. ]" y := "{ This string is used "as is". }" | No | Yes | Yes |
Manifest type qualifier | {INTEGER_8} 123 | No | Yes | Yes |
Non-decimal integer | 0xFF | No | Yes | Hexadecimal integers |
Integer with intermediate underscores | 1_000 0xFFFF_0000 | In groups by 3 digits | Yes | Yes |
Feature | ETL2 | ECMA-367 | EiffelStudio |
Access to software written in C | Basic syntax for any external software | Registered sub-language | See details for C externals |
Access to software written in C++ | Basic syntax for any external software | Registered sub-language | See details for C++ externals |
Access to dynamically loaded libraries (DLLs) | Basic syntax for any external software | Registered sub-language | No |
Other external software | Basic syntax for any external software | Unregistered sub-language | No |
Copyright 1993-2006 Eiffel Software. All rights reserved. |