Eiffel programming language reserved words

    Contents
    1. Reserved words
      1. across
      2. agent
      3. alias
      4. all
      5. and
      6. as
      7. assign
      8. attribute
      9. check
      10. class
      11. convert
      12. create
      13. Current
      14. debug
      15. deferred
      16. do
      17. else
      18. elseif
      19. end
      20. ensure
      21. expanded
      22. export
      23. external
      24. False
      25. feature
      26. from
      27. frozen
      28. if
      29. implies
      30. inherit
      31. inspect
      32. invariant
      33. like
      34. local
      35. loop
      36. not
      37. note
      38. obsolete
      39. old
      40. once
      41. only
      42. or
      43. Precursor
      44. redefine
      45. rename
      46. require
      47. rescue
      48. Result
      49. retry
      50. select
      51. separate
      52. then
      53. True
      54. TUPLE
      55. undefine
      56. until
      57. variant
      58. Void
      59. when
      60. xor

In the Eiffel programming language, there are certain words that are considered "reserved". These words have specific meanings recognized by the compiler. As such, it is invalid to attempt to use a reserved word as an ordinary language identifier.

The reserved words listed in the ISO/ECMA standard are shown below with a brief explanation of their meanings. Links are given where appropriate to the syntax definitions and to descriptions in the online documentation. Occasionally, references to the June 2006 standard document are used and are recognizable as clause numbers in parentheses, i.e., three integers separated by dots, for example: (8.14.1)

Info: The list below includes all the Eiffel reserved words. Some of these words are considered language keywords while others are not. The distinction is that language keywords are reserved words that are used only as syntactical markers, and have no inherent semantic value. Examples are the keywords do and end. Non-keyword reserved words are those that do carry semantic value, such as True and Current.

Note: The set of reserved words supported by the Eiffel Software implementation may vary somewhat from those specified in the current standard. See the "differences" chapter of the online documentation for information on these variances.

Reserved words

across

Introduces an iteration.

agent

Used to specify an agent.

Syntax.

alias

Used to identify an alternative or alias feature name.

Syntax.

Usage for infix/prefix notations.

Usage in interfaces to external software.

Syntax.

all

Used in export adaptation to indicate that a chosen export status applies to all features inherited from a given parent.

Syntax.

and

The logical conjunction operator. Strict when used alone, nonstrict when used with then.

as

Used when renaming features in descendant classes.

Syntax.

assign

Used to designate assigner commands.

Syntax.

attribute

Introduces an attribute body, as in self-initializing attributes.

Syntax.

check

Identifies a check instruction.

Syntax.

class

Used in a class header in the declaration of a class.

Class header syntax.

convert

Used in converter clauses.

Syntax.

Used in feature names for operator aliases, supporting mixed type expressions causing a conversion of the target (8.5.14).

Syntax.

create

In the creators part of a class, introduces those procedures which can be used to initialize instances.

Syntax.

Introduces a creation instruction.

Syntax.

Introduces a creation expression (8.20.18)

Syntax.

In constrained genericity, introduces a list of names of features which can be used as creation procedures with a generic class for a particular formal generic parameter. (8.12.10)

Syntax.

Current

A predefined entity indicating the current object.

Entity syntax.

Anchored types syntax.

debug

Introduces a debug instruction.

Syntax.

deferred

Used in class header to indicate a deferred class.

Syntax.

Used in routine body to indicate a deferred feature.

Syntax.

do

Introduces a sequence of instructions as a routine body, as shown in the Hello World example.

Syntax.

else

Used in conditional and multi-branch instructions to introduce a sequence of instructions to be executed in the case that no specified conditions are met.

Conditional syntax.

Multi-branch syntax.

Used as part of the double reserved word or else, the semi-strict disjunction operator.

Syntax.

Used after the reserved word require as a precondition extension, allowing the weakening of an inherited precondition (8.10.3).

Syntax.

elseif

Used in conditional instructions to effect a "multi-branch" choice instruction.

Syntax.

end

Serves to terminate several Eiffel programming language constructs.

Syntax for:

Class declarationsFeature bodiesInheritance partsCheck instructionsGeneric constraints: renaming and constraint creatorsConditional instructionsMulti-branch instructionsLoopsDebug instructions

ensure

Introduces a postcondition.

When followed by the reserved word then denotes a postcondition extension, allowing the strengthening of an inherited postcondition (8.10.3).

Syntax.

expanded

Used in a class header to indicate that a class is expanded.

Syntax.

export

Used to change the export status (availability to clients) of inherited features.

Syntax.

external

Denotes an external routine. External routines are commonly defined to interface with C external routines and C++ external routines.

Syntax

False

Boolean manifest constant.

Syntax.

feature

Introduces a feature clause.

Syntax.

from

Used in loop initialization.

Syntax.

frozen

Used in a class header to mark a class explicitly as frozen. A frozen class prohibits it from serving as a "conforming parent" to other classes. (8.4.5).

Syntax.

Used in a feature declaration to mark a feature as frozen. A frozen feature cannot be redefined by heir classes.

Syntax.

Used with a formal generic parameter to indicate that conformance of generic derivations of the class require identical actual generic parameters. (8.12.3)

Syntax.

if

Introduces a conditional.

Syntax.

implies

The semi-strict logical implication operator.

inherit

Used in an inherit clause.

Syntax.

inspect

Introduces a multi-branch instruction.

Syntax.

invariant

Used to introduce an invariant assertion as a class invariant or loop invariant.

Assertions syntax.

Syntax of class declaration including class invariant.

Syntax of loop including loop invariant.

like

Used in the declaration of an anchored entity.

Syntax.

local

Introduces the local variable declarations in a feature body.

Feature bodies syntax.

Local variable declarations syntax.

loop

Introduces a loop body.

Syntax.

not

The logical negation operator.

note

Used to begin a Notes part, in a class declaration, a feature declaration, or a check instruction.

Syntax.

obsolete

Used to mark obsolete features and classes.

Feature declarations syntax.

Class declarations declarations syntax.

Obsolete mark syntax.

old

Introduces an old expression. Old expressions are valid only in the postconditions of routines.

Syntax.

once

Used to introduce once routines and once string expressions.

Once routine syntax.

Once string syntax.

only

Used in an only postcondition clause. (8.9.11)

Syntax.

or

The logical disjunction operator. Strict when used alone, nonstrict when used with else.

Precursor

Allows a redefined routine to access the routine it redefines, i.e, its precursor.

Syntax.

redefine

Used in an inheritance part of a class declaration to list those inherited features which, in the heir class, will receive new implementations, specifications, or both, i.e, those features being redefined.

Redefine syntax.

rename

Used in an inheritance part of a class declaration to provide alternative names for inherited features in an heir class.

Used to rename features in a generic constraint. (8.12.8).

Syntax.

require

Introduces a precondition.

When followed by the reserved word else denotes a precondition extension, allowing the weakening of an inherited precondition (8.10.3).

Syntax.

rescue

Introduces a rescue clause in a feature body.

Syntax.

Result

A predefined entity used to represent the final result of a function.

Syntax.

retry

An instruction valid only in rescue clauses and used to re-execute the routine in which it appears.

Syntax.

select

Used in an inheritance part of a class declaration to resolve possible ambiguities related to polymorphism and dynamic binding in the presence of repeated inheritance.

Syntax.

separate

Reserved for future use.

Note: Used in EiffelStudio implementations version 6.8 and later to support Concurrent programming with SCOOP.

then

Used in conditional and multi-branch instructions to introduce a sequence of instructions to be executed in the case that a condition is met.

Conditional syntax.

Multi-branch syntax.

Used as part of the double reserved word and then, the semi-strict conjunction operator.

Syntax.

Used after the reserved word ensure as a postcondition extension, allowing the strengthening of an inherited postcondition (8.10.3).

Syntax.

True

Boolean manifest constant.

Syntax.

TUPLE

Denotes a TUPLE type.

Syntax.

undefine

Used in an inheritance part of a class declaration to uneffect an inherited feature.

Syntax.

until

Used in loop initialization.

Syntax.

variant

Introduces a loop variant.

Syntax.

Void

A predefined entity name representing a void (a.k.a., null) reference.

when

Used in a multi-branch instruction to introduce cases.

Syntax.

xor

The exclusive disjunction operator.

047ce062-45de-f25c-f356-ee8ec0fc2d1d