Online Eiffel Documentation
EiffelStudio

Differences between standard ECMA-367 and Eiffel Software implementation

Kernel classes

FeatureExampleETL2ECMA-367EiffelStudio
Fictitious class for tuplesTUPLENoYesYes

Features

FeatureExampleETL2ECMA-367EiffelStudio
Prefix and infix feature namesinfix "+"YesNoYes
Operator and bracket aliasesadd alias "+"NoYesYes, except for new rules for free operator names
Assigner commanditem alias "[]" (index: INTEGER): G assign putNoYesYes

Genericity

FeatureExampleETL2ECMA-367EiffelStudio
Mutually recursive constraintsA [H, G -> H]
B [H -> C, G -> ARRAY [H]]
NoYesYes
Full mutually recursive constraintsA [H -> G, G -> H]
NoYesNo
Expandedness restriction on formal genericA [reference G]
B [expanded H]
NoNoYes

Creating objects

FeatureExampleETL2ECMA-367EiffelStudio
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
NoYesYes
Bang-bang syntax!! a
!! a.make
!B! a
!B! a.make
YesNoYes, marked as obsolete
Keyword syntaxcreate a
create a.make
create {B} a
create {B} a.make
NoYesYes
Creation expressionprint (create {TIME}.make_now)NoYesYes
Generic creationcreate {G} x.makeNoYesYes

Feature calls

FeatureExampleETL2ECMA-367EiffelStudio
Precursor callPrecursorNoYesYes
Non-object callc := {COLOR}.greenNoYesYes
Assigner callx [i] := x [i] + 1NoYesYes
Bracket expression as call targetx [i].updateNoNoYes

Expressions

FeatureExampleETL2ECMA-367EiffelStudio
Bracket expressiony := x [i]NoYesYes
Creation expressionset_buffer (create {STRING}.make (100))NoYesYes
Manifest type{MY_TYPE}NoYesYes
Manifest tuple[a, b, c]NoYesYes
Agentlist.do_all (agent print (?))NoYesYes, except for inline agents
Once manifest stringonce "abc"NoYesYes

Constants

FeatureExampleETL2ECMA-367EiffelStudio
Verbatim string
x := "[
	This string is left-adjusted.
]"
y := "{
	This string is used "as is".
}"
NoYesYes
Manifest type qualifier{INTEGER_8} 123NoYesYes
Non-decimal integer0xFFNoYesHexadecimal integers
Integer with intermediate underscores1_000 0xFFFF_0000In groups by 3 digitsYesYes

Interfacing with external software

FeatureETL2ECMA-367EiffelStudio
Access to software written in CBasic syntax for any external softwareRegistered sub-languageSee details for C externals
Access to software written in C++Basic syntax for any external softwareRegistered sub-languageSee details for C++ externals
Access to dynamically loaded libraries (DLLs)Basic syntax for any external softwareRegistered sub-languageNo
Other external softwareBasic syntax for any external softwareUnregistered sub-languageNo