Preface:Meeting the challenge of software quality (in progress)
Preface to the third edition
About the status of Eiffel
About the language description
Contents
1.1 OVERVIEW
1.2 GENERAL PROPERTIES
1.3 THE SOFTWARE PROCESS IN EIFFEL
Clusters and the cluster model
Seamlessness and reversibility
Generalization and reuse
Constant availability
Compilation technology
Quality and functionality
1.4 HELLO WORLD
1.5 THE STATIC PICTURE: SYSTEM ORGANIZATION
Systems
Classes
Class relations
The global inheritance structure
Clusters
External software
1.6 THE DYNAMIC STRUCTURE: EXECUTION MODEL
Objects, fields, values and references
Features
A simple class
Creating and initializing objects
Entities
Calls
Infix and prefix notation
Type declaration
Type categories
Basic operations
Deep operations and persistence
Memory management
Information hiding and the call rule
Execution scenario
Abstraction
1.7 GENERICITY
1.8 DESIGN BY CONTRACT, ASSERTIONS, EXCEPTIONS
Design by Contract basics
Expressing assertions
Using assertions for built-in reliability
Run-time assertion monitoring
The short form of a class
Exception handling
Other applications of Design by Contract
1.9 THE INHERITANCE MECHANISM
Basic inheritance structure
Redefinition
Polymorphism
Dynamic binding
Deferred features and classes
Applications of deferred classes
Structural property classes
Multiple inheritance and feature renaming
Inheritance and contracts
Join and uneffecting
Changing the export status
Flat and flat-short forms
Repeated inheritance and selection
Constrained genericity
Assignment attempt
Covariance and anchored declarations
1.10 OTHER IMPORTANT MECHANISMS
Once routines, shared objects, smart initialization and on-demand execution
Constant attributes
Instructions
Lexical conventions
1.11 CONCURRENCY AND FURTHER DEVELOPMENTS
SCOOP
Other developments
2 2 Syntax, validity and semantics
2.1 OVERVIEW
2.2 SYNTAX: COMPONENTS, SPECIMENS, CONSTRUCTS
Syntax, BNF-E
Component, construct, specimen
Construct Specimen convention
Construct Name convention
2.3 TERMINALS, NON-TERMINALS AND TOKENS
Terminal, non-terminal, token
2.4 THE LEXICAL LEVEL
2.5 PRODUCTIONS
Production
Kinds of production
Aggregate productions
Aggregate production
Choice productions
Choice production
Repetition productions
Repetition production, separator
Using recursive productions
One production per non-terminal
Basic syntax description rule
Non-production syntax rules
Non-production syntax rule
2.6 REPRESENTING TERMINALS
Textual conventions
2.7 VALIDITY
Validity constraint
Valid
2.8 INTERPRETING THE CONSTRAINTS
2.9 SEMANTICS
Semantics
2.10 CORRECTNESS
2.11 TWO-TIER DEFINITION AND UNFOLDED FORMS
2.12 THE CONTEXT OF EXECUTING SYSTEMS
Execution terminology
2.13 TEXTUAL CONVENTIONS
Upper name, lower name
Syntax (non-production): Semicolon Optionality rule
3 3 The architecture of Eiffel software
3.1 OVERVIEW
3.2 CLASSES
3.3 CLASS TEXTS AND CLASS NAMES
3.4 CLUSTERS
Cluster, subcluster, contains directly, contains
Terminal cluster, internal cluster
3.5 SYSTEMS
Universe
System, root type name, root procedure name
Type dependency
Root type, root procedure, root class
4 4 Classes
4.1 OVERVIEW
4.2 OBJECTS
4.3 FEATURES
4.4 USE OF CLASSES
4.5 THE CURRENT CLASS
Current class
4.6 CLASS TEXT STRUCTURE
4.7 PARTS OF A CLASS TEXT
4.8 ANNOTATING A CLASS
4.9 CLASS HEADER
Deferred classes
Expanded classes
Validity of a class header
Expanded, frozen, deferred, effective class
4.10 FORMAL GENERIC PARAMETERS
4.11 OBSOLETE MARK
5 5 Features
5.1 OVERVIEW
5.2 THE ROLE OF FEATURES
5.3 FEATURE CATEGORIES
5.4 IMMEDIATE AND INHERITED FEATURES
Inherited, immediate; origin; redeclaration; introduce
5.5 FEATURES PART: EXAMPLE
5.6 GRAPHICAL REPRESENTATION
5.7 FEATURES PART: SYNTAX
5.8 FORMS OF FEATURE
Feature categories: overview
5.9 FEATURE DECLARATIONS: EXAMPLES
5.10 FEATURE DECLARATIONS: SYNTAX
5.11 FEATURE BODIES
5.12 HOW TO RECOGNIZE FEATURES
Variable attribute
Constant attribute
Routine, function, procedure
Command, query
5.13 THE SIGNATURE OF A FEATURE
Signature, argument signature of a feature
5.14 FEATURE NAME
Feature principle
Syntax (non-production): Alias Syntax rule
Operator feature, bracket feature, identifier-only
Identifier of a feature name
Same feature name, same operator, same alias
5.15 OPERATOR FEATURES
5.16 ASSIGNER PROCEDURES
5.17 BRACKET FEATURE
5.18 SYNONYMS AND MULTIPLE DECLARATION
Synonym
Unfolded form of a possibly multiple declaration
5.19 VALIDITY OF FEATURE DECLARATIONS
5.20 SCOPE OF NAMES
5.21 OBSOLETE FEATURES
5.22 NO IN-CLASS OVERLOADING
6 6 The inheritance relation
6.1 OVERVIEW
6.2 AN INHERITANCE PART
6.3 FORM OF THE INHERITANCE PART
Syntax (non-production): Feature adaptation
Parent part for a type, for a class
6.4 GRAPHICAL CONVENTION
6.5 ANY
Unfolded Inheritance Part of a class
6.6 NONE
6.7 RELATIONS INDUCED BY INHERITANCE
Multiple, single inheritance
Inherit, heir, parent
Conforming, non-conforming parent
Ancestor types of a type, of a class
Ancestor, descendant
Proper ancestor, proper descendant
6.6 PROHIBITING CYCLES
6.7 ADAPTING INHERITED FEATURES
6.8 NON-CONFORMING INHERITANCE
6.9 RENAMING
6.10 FEATURES AND THEIR NAMES
Final name, extended final name, final name set
Inherited name
Declaration for a feature
6.11 INDEPENDENCE OF INHERITANCE AND EXPANSION
7 7 Clients and exports
7.1 OVERVIEW
7.2 ENTITIES
7.3 CONVENTIONS
Client relation between classes and types
Client relation between classes
Supplier
7.4 SIMPLE CLIENTS
Simple client
7.5 EXPANDED CLIENTS
Expanded client
7.6 GENERIC CLIENTS
Generic client, generic supplier
7.7 INDIRECT CLIENTS
Indirect client
7.8 EXPORT CONTROLS AND INFORMATION HIDING
Restricting exports
Exporting to oneself
Exporting to descendants
Making a feature secret
Adapting the export status of inherited features
Expanding or restricting the export status
The export status of features
Client set of a Clients part
Rules on setting the export status
Client set of a feature
Available for call, available
Exported, selectively available, secret
7.9 -DOCUMENTING THE CLIENT INTERFACE OF A CLASS
Selecting features
Contract views
Secret, public
Incremental contract view, short form
Contract view, flat-short form
8 8 Routines
8.1 OVERVIEW
8.2 ROUTINE DECLARATION
8.3 FORMAL ARGUMENTS
Formal argument, actual argument
8.4 USING A VARIABLE NUMBER OF ARGUMENTS
8.5 ROUTINE BODY
Once routine, once procedure, once function
8.6 LOCAL VARIABLES AND RESULT
Local variable
8.7 EXTERNALS
8.8 TYPES OF INSTRUCTIONS
9 9 Correctness and contracts
9.1 OVERVIEW
9.2 WHY ASSERTIONS?
9.3 GRAPHICAL CONVENTION
9.4 USES OF ASSERTIONS
9.5 FORM OF ASSERTIONS
Syntax (non-production): Assertion Syntax rule
Precondition, postcondition, invariant
9.6 UNFOLDING ASSERTIONS UNDER INHERITANCE
9.7 ASSERTIONS ON INDIVIDUAL FEATURES
Preconditions and postconditions
The contract of a routine
Contract, subcontract
Constraints on routine assertions
Availability of an assertion clause
“Old” expression
“Only” clause
Unfolded feature list of an Only clause
Unfolded Only clause
9.8 CLASS INVARIANTS
9.9 THE CONSISTENCY OF A CLASS
Hoare triple notation (total correctness)
9.10 CHECK INSTRUCTIONS
Check-correct
9.11 LOOP INVARIANTS AND VARIANTS
Loop invariant and variant
Loop-correct
9.12 THE CORRECTNESS OF A CLASS
Correctness (class)
9.13 RULES OF RUN-TIME ASSERTION MONITORING
Associated boolean expression
Local unfolded form of an assertion
Assertion monitoring
Levels of assertion monitoring
Invariant and qualified calls
10 10 Feature adaptation
10.1 OVERVIEW
10.2 TERMINOLOGY: REDECLARATION, REDEFINITION, EFFECTING
10.3 REDECLARING INHERITED FEATURES: WHY AND HOW
Redeclare, redeclaration
10.4 FEATURE ADAPTATION CLAUSES
10.5 WHY REDEFINE?
10.6 REDEFINITION EXAMPLES
10.7 THE REDEFINITION CLAUSE
10.8 REDEFINITION IN THE SOFTWARE PROCESS
10.9 CHANGING THE SIGNATURE
10.10 THE NEED FOR ANCHORED DECLARATIONS
10.11 DEFERRED FEATURES
10.12 DEFERRED CLASSES FOR DESCRIBING ABSTRACTIONS
10.13 DEFERRED CLASSES FOR SYSTEM DESIGN AND ANALYSIS
10.14 EFFECTING A DEFERRED FEATURE
10.15 PARTIALLY DEFERRED CLASSES AND PROGRAMMED ITERATION
10.16 REDECLARATION AND TYPING
10.17 REDECLARATION AND ASSERTIONS
10.18 RULES ON INHERITED ASSERTIONS
Unfolded form of an assertion
Assertion extensions
Covariance-aware form of an assertion extension
Combined precondition, postcondition
10.19 UNDEFINING A FEATURE
Inherited as effective, inherited as deferred
10.20 REDEFINITION AND EFFECTING
Effect, effecting
Redefine, redefinition
10.21 THE JOIN MECHANISM
10.22 MERGING EFFECTIVE FEATURES
10.23 NAME CLASHES
Name clash
10.24 ADDING TO INHERITED BEHAVIOR: PRECURSOR
The need for a precursor mechanism
Precursor basics and examples
Choosing between multiple precursors
Precursor specification
Relative unfolded form of a Precursor
Unfolded form of a Precursor
10.25 REDEFINITION AND UNDEFINITION RULES
10.26 DEFERRED AND EFFECTIVE FEATURES AND CLASSES
Effective, deferred feature
Effecting
Deferred class property
Effective class property
10.27 ORIGIN AND SEED
Origin, seed
10.28 REDECLARATION RULES
10.29 RULES ON JOINING FEATURES
Precursor (joined features)
Transposition to a class or type
Transposition
Unfolded redeclaration
11 11 Types
11.1 OVERVIEW
11.2 THE ROLE OF TYPES
11.3 WHERE TO USE TYPES
11.4 HOW TO DECLARE A TYPE
11.5 INSTANCES AND VALUES
11.6 INSTANCES OF A CLASS
Instance, direct instance of a class
11.7 BASE CLASS, BASE TYPE AND TYPE SEMANTICS
Base principle
Base rule
Base class and base type of an expression
11.8 CLASS TYPES WITHOUT GENERICITY
11.9 EXPANDED TYPES
Role of expanded types
Defining expanded types
Expanded type, reference type
Basic types
Basic type
11.10 ANCHORED TYPES
Anchor, anchored type, anchored entity
Anchored examples
Anchoring to Current
Anchoring to an expanded or generic
Avoiding anchor cycles
Anchor set; cyclic anchor
Types and classes involved in a type
Validity and semantics of anchored types
Deanchored form of a type
11.11 GUARANTEEING ATTACHMENT
Attached, detachable
11.12 STAND-ALONE TYPES
Stand-alone type
12 12 Genericity
12.1 OVERVIEW
12.2 GENERIC CLASSES
12.3 GENERIC CLASSES AND GENERIC DERIVATIONS
Generic class; constrained, unconstrained
Generic derivation, non-generic type
12.4 SELF-INITIALIZING FORMAL PARAMETERS
Self-initializing formal parameter
12.5 CONSTRAINED AND UNCONSTRAINED GENERICITY
Constraint, constraining types of a Formal_generic
12.6 CONSTRAINED GENERICITY
12.7 RULES ON CONSTRAINED GENERICITY
Constraining creation features
12.8 CONSTRAINTS AND CREATION
Generic-creation-ready type
12.9 RECURSIVE GENERIC CONSTRAINTS
12.10 SEMANTICS OF GENERIC TYPES
Base type of a single-constrained formal generic
Base type of an unconstrained formal generic
Reference or expanded status of a formal generic
12.11 CURRENT TYPE, FEATURES OF A TYPE
Current type
Features of a type
12.12 APPLYING GENERICITY TO TYPES
Generic substitution
Generic Type Adaptation rule
12.13 THE CASE OF MULTIPLE CONSTRAINTS
Generically constrained feature name
Base type of a multi-constraint formal generic type
13 13 Tuples
13.1 OVERVIEW
13.2 TUPLES IN A NUTSHELL
13.3 USING TUPLE TYPES AND TUPLES
Type sequence of a tuple type
Value sequences associated with a tuple type
13.4 ANONYMOUS CLASSES
13.5 CONFORMANCE ==== TO BE REWRITTEN
13.6 MULTIPLE RESULTS AND VARIABLE NUMBERS OF ARGUMENTS
Emulating multiple results
Emulating a variable number of arguments
13.7 TUPLES AS ARRAYS ==== TO BE REWRITTEN
14 14 Conformance
14.1 OVERVIEW
14.2 CONVERTIBILITY AND COMPATIBILITY
Compatibility between types
Compatibility between expressions
Expression conformance
14.3 APPLICATIONS OF CONFORMANCE
14.4 EXPRESSION AND SIGNATURE CONFORMANCE
Covariant argument
14.5 DIRECT AND INDIRECT CONFORMANCE
Conformance path
14.6 CONFORMANCE TO A NON-GENERIC REFERENCE TYPE
14.7 GENERICALLY DERIVED REFERENCE TYPES
14.8 FORMAL GENERIC PARAMETER CONFORMANCE
14.9 EXPANDED TYPE CONFORMANCE
14.10 TUPLE TYPE CONFORMANCE
14.11 ANCHORED TYPE CONFORMANCE
15 15 Convertibility
Conversion procedure, conversion type
Conversion query, conversion feature
Converting to a class
Converting to and from a type
Converting “through”
Explicit conversion
Statically satisfied precondition
16 Repeated inheritance
16.1 OVERVIEW
16.2 CASES OF REPEATED INHERITANCE
Repeated inheritance, ancestor, descendant
16.3 THE TWO QUESTIONS OF REPEATED INHERITANCE
16.4 SHARING AND REPLICATION
Sharing, replication
16.5 THE CASE OF REDECLARED FEATURES
16.6 THE CASE OF ATTRIBUTES
16.7 THE CASE OF CONFLICTING GENERIC DERIVATIONS
16.8 KEEPING THE ORIGINAL VERSION OF A REDEFINED FEATURE
16.9 USING REPLICATION: COUNTERS AND ITERATION
16.10 THE SEMANTICS OF REPLICATION
16.11 RETAINING VICTORS FROM ALTERNATIVE BRANCHES
16.12 THE NEED FOR SELECT
16.13 THE REPEATED INHERITANCE CONSISTENCY CONSTRAINT
Version
Multiple versions
Dynamic binding version
16.14 THE INHERITED FEATURES OF A CLASS
Inherited features
Precursor
17 17 Control structures
17.1 OVERVIEW
17.2 COMPOUND
17.3 CONDITIONAL
Secondary part
Prevailing immediately
17.4 MULTI-BRANCH CHOICE
Inspect expression
Interval
Unfolded form of a multi-branch
Unfolded form of an interval
Inspect values of a multi-branch
17.5 OBJECT TEST
17.6 USING SELECTION INSTRUCTIONS PROPERLY
17.7 LOOP
Loop structure and properties
Loop semantics
Ensuring non-void references in a loop
17.8 THE DEBUG INSTRUCTION
18 18 Attributes
18.1 OVERVIEW
18.2 GRAPHICAL REPRESENTATION
18.3 VARIABLE ATTRIBUTES
18.4 ATTRIBUTES IN FULL FORM
18.5 CONSTANT ATTRIBUTES
18.6 CONSTANT ATTRIBUTES WITH MANIFEST VALUES
19 19 Objects, values and entities
19.1 OVERVIEW
19.2 OBJECTS AND THEIR TYPES
19.3 VALUES AND INSTANCES
Reference, void, attached, attached to
19.4 BASIC TYPES
19.5 REFERENCE AND COPY SEMANTICS
Object semantics
19.6 COMPOSITE OBJECTS AND THEIR FIELDS
Non-basic class, non-basic type, field
Subobject, composite object
19.7 REFERENCE ATOMICITY
19.8 EXPRESSIONS AND ENTITIES
Entity, variable, read-only
19.9 SEMANTICS: EVALUATING AND INITIALIZING ENTITIES
Self-initializing type
Self-initializing variable
Evaluation position, precedes
Setter instruction
Properly set variable
Variable setting and its value
Execution context
20 20 Creating objects
20.1 OVERVIEW
20.2 FORMS OF CREATION: AN OVERVIEW
Creation operation
20.3 BASIC FORM OF CREATION INSTRUCTIONS
20.4 OMITTING THE CREATION PROCEDURE
20.5 CREATORS AND INHERITANCE
20.6 USING AN EXPLICIT TYPE
20.7 RESTRICTING CREATION AVAILABILITY
20.8 THE CASE OF EXPANDED TYPES
20.9 CREATING INSTANCES OF FORMAL GENERICS
20.10 PRECONDITIONS OF CREATION PROCEDURES
20.11 CREATION SYNTAX AND VALIDITY
Unfolded Creators part of a class
Creation procedures of a class
Creation procedure property
Creation procedures of a type
Available for creation; general creation procedure
Creation target, creation type
Unfolded form of a creation instruction
20.12 CREATION SEMANTICS
20.13 REMOTE CREATION
20.14 CREATION EXPRESSIONS AND ANONYMOUS OBJECTS
Properties of a creation expression
20.15 GARBAGE COLLECTION
Garbage Collection, not enough memory available
21 21 Comparing and duplicating objects
21.1 OVERVIEW
21.2 COPYING AN OBJECT
21.3 EQUALITY EXPRESSIONS
Object comparison features from ANY
Copying and cloning features from ANY
Deep equality, copying and cloning
Effect of a copy operation
Specification of default copy
Tuning copy semantics
21.4 CLONING AN OBJECT
Using cloning
Twin
Specification of default cloning
Cloning, types and factories
21.5 DEEP COPYING AND CLONING
21.6 OBJECT EQUALITY
21.7 DEEP EQUALITY
22 22 Attaching values to entities
22.1 OVERVIEW
22.2 ROLE OF REATTACHMENT OPERATIONS
Reattachment, source, target
22.3 FORMS OF UNCONDITIONAL REATTACHMENT
22.4 SYNTAX AND VALIDITY OF ASSIGNMENT
22.5 THE STATUS OF FORMAL ROUTINE ARGUMENTS
22.6 CONVERSIONS
22.7 SEMANTICS OF REATTACHMENT
22.8 AN EXAMPLE
22.9 ABOUT REATTACHMENT
22.10 EFFECT ON GENERIC PROGRAMMING
22.11 POLYMORPHISM
Dynamic type
Polymorphic expression; dynamic type and class sets
22.12 ASSIGNER CALL
22.13 SEMI-STRICT OPERATORS
The notion of strictness
The need for semi-strict operators
More on strictness
22.14 CONDITIONAL REATTACHMENT
Limitations of unconditional reattachment
22.15 MEMORY MANAGEMENT
22.16 SEMANTICS OF EQUALITY
23 23 Feature call
23.1 OVERVIEW
23.2 PARTS OF A CALL
23.3 USES OF CALLS
23.4 UNIFORM ACCESS
23.5 OPERATOR AND BRACKET FORMS
23.6 COMPLEX TARGETS
23.7 CALL SYNTAX
Unqualified, qualified call
23.8 COMPONENTS OF A CALL
Target of a call
Target type of a call
Feature of a call
23.9 NON-OBJECT CALLS
Imported form of a Non_object_call
23.10 CLASS VALIDITY
Export validity
Argument validity
Target validity and Void-Safe Eiffel
Combining the rules
Void-Unsafe
23.11 INTRODUCTION TO CALL SEMANTICS
Target Object
23.12 DYNAMIC BINDING
Dynamic feature of a call
23.13 THE IMPORTANCE OF BEING DYNAMIC
23.14 ONCE ROUTINES
Once basics
Once uses
Predefined once keys
Further once tuning
Once routine semantics
Freshness of a once routine call
Latest applicable target and result of a non-fresh call
23.15 ATTRIBUTES AND EXTERNALS
23.16 THE MACHINERY OF EXECUTING CALLS
Scheme for a routine call
Current object and routine
Naming the current object
23.17 PRECISE CALL SEMANTICS
Rule for non-once routines
General call semantics
23.18 CALLS AS EXPRESSIONS
Type of a Call used as expression
24 24 Eradicating void calls
24.1 OVERVIEW
24.2 OVERALL SCHEME
24.3 THE OBJECT TEST
Object-Test Local
Conjunctive, disjunctive, implicative; Term, semistrict term
Scope of an Object-Test Local
24.4 VOID TESTS
Read-only void test
Scope of a read-only void test
24.5 CERTIFIED ATTACHMENT PATTERNS
Certified Attachment Pattern
24.6 ATTACHED EXPRESSIONS
Attached expression
25 25 Typing-related properties
25.1 OVERVIEW
Catcall
25.2 SYNTAX VARIANTS
25.3 BASIC CONCEPTS
25.4
25.5 SYSTEM-LEVEL VALIDITY
25.6 VIOLATING SYSTEM VALIDITY
25.7 NOTES ON THE TYPE POLICY
25.8 WHY DISTINGUISH?
25.9 A LOOK AT THE DYNAMIC CLASS SET
25.10 THE CALL VALIDITY RULE
25.11 CREATION VALIDITY (SYSTEM-LEVEL)
26 26 Exception handling
26.1 OVERVIEW
26.2 WHAT IS AN EXCEPTION?
Failure, exception, trigger
26.3 EXCEPTION HANDLING POLICY
26.4 RESCUE CLAUSES AND ORGANIZED PANIC
26.5 THE DEFAULT RESCUE
26.6 RETRY INSTRUCTIONS AND RESUMPTION
26.7 SYSTEM FAILURE AND THE EXCEPTION HISTORY TABLE
26.8 SYNTAX AND VALIDITY OF THE EXCEPTION CONSTRUCTS
26.9 EXCEPTION CORRECTNESS
Exception-correct
26.10 SEMANTICS OF EXCEPTION HANDLING
Rescue block
Type of an exception
26.11 EXCEPTION CORRECTNESS
26.12 FINE-TUNING THE MECHANISM
Ignoring, continuing an exception
26.13 OVERVIEW
26.14 PLATFORM-DEPENDENT SIGNAL CODES
26.15 CLASS EXCEPTIONS
27 27 Agents, iteration and introspection
27.1 OVERVIEW
27.2 A QUICK PREVIEW
27.3 FROM CALLS TO AGENTS
Feature calls and their operands
Operands of a call
Operand position
Delaying calls
Agents and their operands
Construction time, call time
27.4 AGENT TYPES
27.5 CALL AGENTS
All-closed agents
Keeping operands open
The brace convention
Omitting the argument list
A summary of the possibilities
Syntactical forms for a call agent
27.6 USING AGENTS
GUI programming: establishing a direct connection to the Business Model
Integrating a function
Iteration examples
27.7 TWO ADVANCED EXAMPLES
Error processing without the mess
Once per object
27.8 USING INLINE AGENTS
27.9 ACCESSING FEATURE PROPERTIES
27.10 THE BASE CLASS AND TYPE
27.11 AGENT SYNTAX
Syntax of call agents
Syntax of inline agents
27.12 AGENT VALIDITY
Validity of call agents
Target type of an call agent
Validity of inline agents
Associated feature of an inline agent
27.13 AGENT SEMANTICS
Call-agent equivalent of an inline agent
Call-agent equivalent of an inline agent
Open and closed operands
Open and closed operands
Open and closed operand positions
Type and value of an agent expression
Type of an agent expression
28 28 Expressions
28.1 OVERVIEW
28.2 GENERAL FORM OF EXPRESSIONS
28.3 SUBEXPRESSIONS
Subexpression, operand
28.4 PARENTHESIZED EXPRESSIONS
28.5 OPERATOR EXPRESSIONS
Operator expression basics
Operator expression syntax
Precedence and Parenthesized Form
Operator precedence levels
Parenthesized Form of an expression
Accounting for target conversion
Target-converted form of a binary expression
Operator expression validity and semantics
28.6 SEMISTRICT BOOLEAN OPERATORS
Semistrict operators
28.7 BRACKET EXPRESSIONS
28.8 THE EQUIVALENT DOT FORM
Equivalent Dot Form of an expression
28.9 BOOLEAN EXPRESSIONS
28.10 ENTITIES
28.11 THE TYPE OF AN EXPRESSION
Type of an expression
28.12 EXPRESSIONS AND THE SEMICOLON
29 29 Constants
29.1 OVERVIEW
29.2 GENERAL FORM OF CONSTANTS
Syntax (non-production): Sign Syntax rule
Syntax (non-production): Character Syntax rule
29.3 FORCING A TYPE ON A CONSTANT
29.4 THE TYPE OF A CONSTANT
Type of a manifest constant
Manifest value of a constant
29.5 INTEGER CONSTANTS
29.6 REAL CONSTANTS
29.7 CHARACTER CONSTANTS
29.8 MANIFEST STRINGS
Syntax (non-production): Line sequence
Syntax (non-production): Manifest String rule
Basic manifest strings
Line_wrapping_part
Verbatim strings
Prefix, longest break prefix, left-aligned form
Choosing between basic and verbatim manifest strings
“Once” string expressions
Run-time model for manifest strings
29.9 MANIFEST TUPLES
29.10 SEMANTICS OF CONSTANT ATTRIBUTES
30 30 Basic types
30.1 OVERVIEW
30.2 EXPANSION STATUS
30.3 BASIC CLASSES AND THEIR INHERITANCE STRUCTURE
Basic types and their sized variants
Sized variants of STRING
30.4 BOOLEANS
30.5 CHARACTERS
30.6 INTEGERS
30.7 REALS
30.8 ADDRESSES
31 31 Interfacing with C, C++ and other environments
31.1 OVERVIEW: THE COMPONENT COMBINATOR
31.2 WHAT EIFFEL CAN DO WITH THE REST OF THE WORLD
31.3 WHEN TO USE EXTERNAL SOFTWARE
31.4 REGISTERED LANGUAGES AND THE ROLE OF C
31.5 BASICS OF EXTERNAL ROUTINES
31.6 EXECUTING AN EXTERNAL CALL
31.7 ARGUMENT AND RESULT TRANSMISSION
31.8 PASSING THE ADDRESS OF AN EIFFEL FEATURE
31.9 SPECIAL INTERFACE SUBLANGUAGES
31.10 GENERAL SUBLANGUAGE MECHANISMS
Specifying an external routine signature
Specifying external files
31.11 THE C INTERFACE SUBLANGUAGE
Syntax specification
Specifying C code inline
Controlling the Eiffel-C type correspondence
31.12 THE C++ INTERFACE SUBLANGUAGE
The syntax specification
Conditions on C++ features
Processing C++ features
Extra argument
31.13 WRAPPING C++ CLASSES: LEGACY++
The role of Legacy++
Calling Legacy++
Result of applying Legacy++
Legacy++ limitations
Legacy++ example
31.14 USING DYNAMIC LINKE LIBRARIES (DLLS)
The static DLL sublanguage
31.15 DESC: CALLING A DLL ROUTINE DETERMINED AT RUN TIME
DESC overview
Creating a library object
Creating a routine object
Type codes
Calling a routine
Accessing the result of a function
Consistency requirements and protection against errors
Sharing and freeing
31.16 THE CECIL LIBRARY
Cecil overview
Cecil role and status
Compiling for Cecil
Avoiding abusive optimization
Basic Cecil conventions
Initializing the Eiffel 4 run-time
Manipulating values of basic Eiffel types
Manipulating Eiffel class types
Accessing an Eiffel object
Creating an Eiffel object
Calling routines
Requesting a non-existing routine
Accessing field objects
ISE Eiffel specifics
32 32 Lexical components
32.1 OVERVIEW
32.2 CHARACTER SETS
Syntax (non-production): Character, character set
32.3 CHARACTER CATEGORIES
Letter, alpha_betic, numeric, alpha_numeric, printable
32.4 GENERAL FORMAT
32.5 BREAKS
Break character, break
32.6 COMMENTS
Expected, free comment
Syntax (non-production): “Blanks or tabs”, new line
Syntax (non-production): Free Comment rule
Header comment rule
32.7 TEXT LAYOUT
Symbol, word
Syntax (non-production): Break rule
32.8 LETTER CASE
32.9 TOKEN CATEGORIES
32.10 RESERVED WORDS
Reserved word, keyword
Syntax (non-production): Double Reserved Word rule
32.11 SPECIAL SYMBOLS
Special symbol
32.12 IDENTIFIERS
Syntax (non-production): Identifier
32.13 OPERATORS
Predefined operator
Standard operator
Operator symbol
Free operator
32.14 CHARACTERS
Syntax (non-production): Manifest character
Special characters and their codes
Syntax (non-production): Percent variants
32.15 STRINGS
Syntax (non-production): String, simple string
32.16 INTEGERS
32.17 REAL NUMBERS
Syntax (non-production): Real number
33.1 OVERVIEW
34.1 OVERVIEW
34.2 LETTER CASE
34.3 CHOICE OF NAMES
34.4 GRAMMATICAL CATEGORIES FOR FEATURE NAMES
34.5 GROUPING FEATURES
34.6 HEADER COMMENTS
34.7 OTHER COMMENTS
34.8 EIFFEL NAMES IN COMMENTS
34.9 LAYOUT
34.10 OPTIONAL SEMICOLONS
34.11 LEXICAL CONVENTIONS
34.12 FONTS
34.13 GUIDELINES FOR ANNOTATING CLASSES
35.1 OVERVIEW
35.2 INPUT AND OUTPUT FEATURES
35.3 DUPLICATION AND COMPARISON ROUTINES
35.4 OBJECT PROPERTIES
35.5 PLATFORM-DEPENDENT FEATURES
35.6 OTHER UNIVERSAL FEATURES
36.1 OVERVIEW
36.2 REPRESENTATION
36.3 RESIZING
36.4 BASIC ARRAY HANDLING
36.5 COPYING AND COMPARING ARRAYS
36.6 MANIFEST ARRAYS
36.7 STRINGS
37.1 OVERVIEW
37.2 CLASSES FOR PERSISTENCE
37.3 OBJECTS AND THEIR DEPENDENTS
37.4 RETRIEVAL, TYPING, AND THE ASSIGNMENT ATTEMPT
37.5 STORING AND RETRIEVING AN ENTIRE STRUCTURE
37.6 CLASS STORABLE
37.7 ENVIRONMENTS
37.8 OPENING AND CLOSING ENVIRONMENTS
37.9 RECORDING AND ACCESSING OBJECTS IN AN ENVIRONMENT
37.10 THE OBJECTS OF AN ENVIRONMENT
37.11 REQUESTING INFORMATION ABOUT ENVIRONMENTS
37.12 STORING ENVIRONMENTS
37.13 RETRIEVING AN ENVIRONMENT
37.14 AN ENVIRONMENT EXAMPLE
37.15 CLASS ENVIRONMENT
38.1 OVERVIEW
38.2 PURPOSE OF THE CLASS
38.3 INPUT TECHNIQUES
38.4 CLASS STANDARD_FILES
A A ELKS: The Eiffel Library Kernel Standard
A.1 OVERVIEW
A.2 CONTENTS OF THIS STANDARD
A.3 COMPATIBILITY CONDITIONS
A.4 REQUIRED CLASSES
A.5 REQUIRED ANCESTRY LINKS
A.6 SHORT FORMS OF REQUIRED CLASSES
A.6.1 CLASS ANY
A.6.2 CLASS TYPE
A.6.3 CLASS PART_COMPARABLE
A.6.4 CLASS COMPARABLE
A.6.5 CLASS HASHABLE
A.6.6 CLASS NUMERIC
A.6.7 CLASS INTERVAL
A.6.8 CLASS BOOLEAN
A.6.9 CLASS CHARACTER
A.6.10 CLASS INTEGER_GENERAL
A.6.11 CLASS INTEGER
A.6.12 CLASS INTEGER_8
A.6.13 CLASS INTEGER_16
A.6.14 CLASS INTEGER_64
A.6.15 CLASS REAL_GENERAL
A.6.16 CLASS REAL
A.6.17 CLASS TYPED_POINTER
A.6.18 CLASS POINTER
A.6.19 CLASS ARRAY
A.6.20 CLASS ANONYMOUS
A.6.21 CLASS STRING
A.6.22 CLASS STD_FILES
A.6.23 CLASS FILE
A.6.24 CLASS STORABLE
A.6.25 CLASS MEMORY
A.6.26 CLASS EXCEPTIONS
A.6.27 CLASS ARGUMENTS
A.6.28 CLASS PLATFORM
A.6.29 CLASS ONCE_MANAGER
A.6.30 CLASS ROUTINE
A.6.31 CLASS PROCEDURE
A.6.32 CLASS FUNCTION
A.6.33 CLASS PREDICATE
B B Specifying systems in Lace (in progress)
C C On language design and evolution
E E A brief history of Eiffel
F F Language changes from the previous edition
38.5 SEMANTIC EXTENSIONS AND CHANGES
G G Changes from early versions
H H An Eiffel tutorial
I I Eiffel bibliography (not done)
K K Syntax in alphabetical order
L L Reserved words, special symbols, operator precedence
M Syntax diagrams (not done)
Eiffel Analysis, Design and Programming Language
ECMA-367-3 (Draft)
Standard
ECMA-367
Eiffel Analysis, Design and Programming Language
1.1 Overview
1.2 “The Standard”
1.3 Aspects covered
1.4 Aspects not covered
2.1 Definition
2.2 Compatibility and non-default options
2.3 Departure from the Standard
3.1 Earlier Eiffel language specifications
3.2 Eiffel Kernel Library
3.3 Floating point number representation
3.4 Character set: Unicode
3.5 Character set: ASCII
3.6 Phonetic alphabet
5.1 Standard elements
5.2 Normative elements
5.3 Rules on definitions
5.4 Use of defined terms
5.5 Unfolded forms
5.6 Language description
5.7 Validity: “if and only if” rules
6.1 Name of the language
6.2 Pronunciation
7.1 Design principles
7.2 Object-oriented design
7.3 Classes
7.4 Types
7.5 Assertions
7.6 Exceptions
7.7 Genericity
7.8 Inheritance
7.9 Polymorphism and dynamic binding
7.10 Combining genericity and inheritance
7.11 Deferred classes
7.12 Tuples and agents
7.13 Type- and void-safety
7.14 Putting a system together
8.3.4 Syntax : Class names
8.4.2 Syntax : Class declarations
8.4.3 Syntax : Notes
8.4.5 Syntax : Class headers
8.4.8 Syntax : Obsolete marks
8.5.2 Syntax : Feature parts
8.5.4 Syntax : Feature declarations
8.5.5 Syntax : New feature lists
8.5.6 Syntax : Feature bodies
8.5.14 Syntax : Feature names
8.5.20 Syntax : Operators
8.5.21 Syntax : Assigner marks
8.6.1 Syntax : Inheritance parts
8.6.14 Syntax : Rename clauses
8.7.9 Syntax : Clients
8.7.10 Syntax : Export adaptation
8.8.2 Syntax : Formal argument and entity declarations
8.8.5 Syntax : Routine bodies
8.8.7 Syntax : Local variable declarations
8.8.10 Syntax : Instructions
8.9.1 Syntax : Assertions
8.9.7 Syntax : “Old” postcondition expressions
8.9.11 Syntax : “Only” postcondition clauses
8.9.17 Syntax : Check instructions
8.9.19 Syntax : Variants
8.10.10 Syntax : Precursor
8.10.15 Syntax : Redefinition
8.10.18 Syntax : Undefine clauses
8.11.1 Syntax : Types
8.12.1 Syntax : Actual generic parameters
8.12.2 Syntax : Formal generic parameters
8.12.8 Syntax : Generic constraints
8.13.1 Syntax : Tuple types
8.13.2 Syntax : Manifest tuples
8.15.6 Syntax : Converter clauses
8.16.6 Syntax : Select clauses
8.17.2 Syntax : Conditionals
8.17.7 Syntax : Multi-branch instructions
8.17.16 Syntax : Loops
8.17.18 Syntax : Debug instructions
8.18.1 Syntax : Attribute bodies
8.19.8 Syntax : Entities and variables
8.20.4 Syntax : Creators parts
8.20.11 Syntax : Creation instructions
8.20.18 Syntax : Creation expressions
8.21.2 Syntax : Equality expressions
8.22.2 Syntax : Assignments
8.22.10 Syntax : Assigner calls
8.23.2 Syntax : Feature calls
8.23.3 Syntax : Actual arguments
8.24.1 Syntax : Object test
8.26.2 Syntax : Rescue clauses
8.27.5 Syntax : Agents
8.27.6 Syntax : Call agent bodies
8.28.1 Syntax : Expressions
8.28.4 Syntax : Operator expressions
8.28.12 Syntax : Bracket expressions
8.29.1 Syntax : Constants
8.29.3 Syntax : Manifest constants
8.29.10 Syntax : Manifest strings
8.31.1 Syntax : External routines
8.31.3 Syntax : Registered languages
8.31.4 Syntax : External signatures
8.31.7 Syntax : External file use
8.31.10 Syntax : C externals
8.31.13 Syntax : C++ externals
8.31.16 Syntax : DLL externals
8.32.7 Syntax : Comments
8.32.28 Syntax : Integers
Index
Symbols
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Z