merged from 19.05

git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@2228 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
jfiat
2019-12-28 20:03:38 +00:00
parent 539829febe
commit 4e06893808
22 changed files with 696 additions and 596 deletions

View File

@@ -1,9 +1,11 @@
[[Property:modification_date|Wed, 11 Sep 2019 23:28:26 GMT]]
[[Property:publication_date|Wed, 11 Sep 2019 23:28:26 GMT]]
[[Property:uuid|C652AC71-8BAD-4387-A46C-21C9F5C3A68F]]
[[Property:weight|0]]
[[Property:title|Conditional expression]]
[[Property:link_title|Conditional]]
[[Eiffel%20Programming%20Language%20Syntax#Conditionals|Conditional expressions]] compute a value using different expressions depending on one or more conditions. If all expressions have the same type, the conditional expression as a whole has this type as well:
[[Eiffel_programming_language_syntax#Conditionals|Conditional expressions]] compute a value using different expressions depending on one or more conditions. If all expressions have the same type, the conditional expression as a whole has this type as well:
<e>
if time < noon then
@@ -17,7 +19,7 @@
has type `STRING`.
If the types of the expressions are different, the [[Types#Common ancestor types|common ancestor type]] is used as a type of the whole expression.
If the types of the expressions are different, the [[Types#Common_ancestor_types|common ancestor type]] is used as a type of the whole expression.
<e>
if time < noon then

View File

@@ -1,3 +1,5 @@
[[Property:modification_date|Wed, 11 Sep 2019 18:53:32 GMT]]
[[Property:publication_date|Wed, 11 Sep 2019 14:10:27 GMT]]
[[Property:title|Eiffel programming language reserved words]]
[[Property:link_title|Reserved words]]
[[Property:weight|1]]
@@ -152,12 +154,16 @@ Introduces a sequence of instructions as a routine body, as shown in the [[ET: H
===else===
Used in [[ET: Other Mechanisms#Conditional|conditional]] and [[ET: Other Mechanisms#Multi-branch|multi-branch]] instructions to introduce a sequence of instructions to be executed in the case that no specified conditions are met.
Used in [[ET-_Instructions#Conditional|conditional]] and [[ET-_Instructions#Multi-branch|multi-branch]] instructions to introduce a sequence of instructions to be executed in the case that no specified conditions are met.
:[[Eiffel programming language syntax#Conditionals|Conditional syntax.]]
:[[Eiffel programming language syntax#Multi-branch instructions|Multi-branch syntax.]]
Used in a [[Conditional_expression|conditional expression]] to compute a value in the case that no specified conditions are met.
:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]]
Used as part of the double reserved word <code>or else</code>, the semi-strict disjunction operator.
:[[Eiffel programming language syntax#Operators|Syntax.]]
@@ -169,10 +175,14 @@ Used after the reserved word [[#require|<code>require</code>]] as a precondition
===elseif===
Used in [[ET: Other Mechanisms#Conditional|conditional]] instructions to effect a "multi-branch" choice instruction.
Used in [[ET-_Instructions#Conditional|conditional]] instructions to effect a "multi-branch" choice instruction.
:[[Eiffel programming language syntax#Conditionals|Syntax.]]
Used in a [[Conditional_expression|conditional expression]] to effect a "multi-branch" choice to compute of a value.
:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]]
===end===
@@ -186,6 +196,7 @@ Serves to terminate several Eiffel programming language constructs.
::[[Eiffel programming language syntax#Generic constraints|Generic constraints: renaming and constraint creators]]
::[[Eiffel programming language syntax#Conditionals|Conditional instructions]]
::[[Eiffel programming language syntax#Multi-branch instructions|Multi-branch instructions]]
::[[Eiffel programming language syntax#Conditionals|Conditional expressions]]
::[[Eiffel programming language syntax#Loops|Loops]]
::[[Eiffel programming language syntax#Debug instructions|Debug instructions]]
@@ -258,9 +269,13 @@ Used with a formal generic parameter to indicate that conformance of generic der
===if===
Introduces a [[ET: Other Mechanisms#Conditional|conditional]].
Used to introduce a [[ET-_Instructions#Conditional|conditional]].
:[[Eiffel programming language syntax#Conditionals|Syntax.]]
:[[Eiffel programming language syntax#Conditionals|Conditional syntax.]]
Used to introduce a [[Conditional_expression|Conditional expression]].
:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]]
===implies===
@@ -277,7 +292,7 @@ Used in an [[ET: Inheritance|inherit]] clause.
===inspect===
Introduces a [[ET: Other Mechanisms#Multi-branch|multi-branch]] instruction.
Introduces a [[ET-_Instructions#Multi-branch|multi-branch]] instruction.
:[[Eiffel programming language syntax#Multi-branch instructions|Syntax.]]
@@ -437,12 +452,16 @@ Reserved for future use.
===then===
Used in [[ET: Other Mechanisms#Conditional|conditional]] and [[ET: Other Mechanisms#Multi-branch|multi-branch]] instructions to introduce a sequence of instructions to be executed in the case that a condition is met.
Used in [[ET-_Instructions#Conditional|conditional]] and [[ET-_Instructions#Multi-branch|multi-branch]] instructions to introduce a sequence of instructions to be executed in the case that a condition is met.
:[[Eiffel programming language syntax#Conditionals|Conditional syntax.]]
:[[Eiffel programming language syntax#Multi-branch instructions|Multi-branch syntax.]]
Used in a [[Conditional_expression|conditional expression]] to compute of a value in the case that a condition is met.
:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]]
Used as part of the double reserved word <code>and then</code>, the semi-strict conjunction operator.
:[[Eiffel programming language syntax#Operators|Syntax.]]
@@ -494,7 +513,7 @@ A predefined entity name representing a [[ET: The Dynamic Structure: Execution M
===when===
Used in a [[ET: Other Mechanisms#Multi-branch|multi-branch instruction]] to introduce cases.
Used in a [[ET-_Instructions#Multi-branch|multi-branch instruction]] to introduce cases.
:[[Eiffel programming language syntax#Multi-branch instructions|Syntax.]]

View File

@@ -1,4 +1,4 @@
[[Property:modification_date|Tue, 30 Apr 2019 07:27:55 GMT]]
[[Property:modification_date|Mon, 29 Jul 2019 16:52:51 GMT]]
[[Property:publication_date|Mon, 29 Apr 2019 14:08:51 GMT]]
[[Property:title|Eiffel programming language syntax]]
[[Property:link_title|Syntax]]
@@ -118,6 +118,9 @@ A sequence of characters consisting of the following, in order:
Line wrapping parts are used as separators between one [[#Simple strings|Simple_string]] and the next in a [[#Manifest strings|Basic_manifest_string]] so that the string can be split across lines.
===New line===
A specimen of New_line is a New Line.
==Eiffel BNF-E Syntax==
@@ -334,12 +337,14 @@ Assertion ::= {Assertion_clause ";" ...}*
Assertion_clause ::= <nowiki>[</nowiki>Tag_mark<nowiki>]</nowiki> Unlabeled_assertion_clause
Unlabeled_assertion_clause ::= [[#Expressions|Boolean_expression]] | [[#Comments|Comment]]
Unlabeled_assertion_clause ::= [[#Expressions|Boolean_expression]] | [[#Comments|Comment]] | `class`
Tag_mark ::= Tag ":"
Tag ::= [[#Identfiers|Identifier]]
{{Note|Unlabeled_assertion_clause of the form `class` can be used only in a postcondition. It marks a feature that does not depend on object state and can be called without a target object using non-object call of the form `{CLASS_NAME}.feature_name (arguments)`.}}
==="Old" postcondition expressions ===
Old ::= <code>old</code> [[#Expressions|Expression]]
@@ -702,16 +707,11 @@ Verbatim_string_closer ::= Close_bracket <nowiki>[</nowiki>[[#Simple strings|Sim
Open_bracket ::= <nowiki>"[" | "{"</nowiki>
Close_bracket ::= "]" | "}"Verbatim_string ::= Verbatim_string_opener Line_sequence Verbatim_string_closer
Close_bracket ::= "]" | "}"
Verbatim_string_opener ::= ' " ' <nowiki>[</nowiki>[[#Simple strings|Simple_string]]<nowiki>]</nowiki> Open_bracket
Verbatim_string_closer ::= Close_bracket <nowiki>[</nowiki>[[#Simple strings|Simple_string]]<nowiki>]</nowiki> ' " '
Open_bracket ::= <nowiki>"[" | "{" </nowiki>
Close_bracket ::= <nowiki>"]" | "}" </nowiki>
Line_sequence ::= {[[#Simple strings|Simple_string]] [[#New line|New_line]] ...}+
{{Note|Exactly the same [[#Simple strings|Simple_string]] (including embedded white space, if any) should be used in ''Verbatim_string_opener'' and ''Verbatim_string_closer'' of the same verbatim string.}}
===External routines ===
External ::= <code>external</code> External_language <nowiki>[External_name]</nowiki>

View File

@@ -1,3 +1,5 @@
[[Property:modification_date|Tue, 09 Jul 2019 09:42:22 GMT]]
[[Property:publication_date|Tue, 09 Jul 2019 09:42:22 GMT]]
[[Property:title|Common myths and misconceptions about Eiffel]]
[[Property:link_title|]]
[[Property:weight|4]]
@@ -37,7 +39,7 @@ The answer to this one depends a bit upon your frame of reference. Some time ago
If this is true, then relatively speaking, we have to admit that Eiffels market share ''is'' considerably smaller than that of Visual Basic.
Despite that, its not correct to say that not many people use Eiffel. Eiffel licenses world wide number in the tens of thousands. If you use Eiffel, you are not alone. These license-holders have formed a lasting worldwide quorum. Many world-class organizations are committed now, and will continue to be committed to the Eiffel framework. There is support through your maintenance contract with Eiffel Software. Help and information are available online in the form of the [https://www.eiffel.com/company/customers/ Eiffel Software users list] and websites like [http://community.eiffel.com/room/ EiffelRoom].
Despite that, its not correct to say that not many people use Eiffel. Eiffel licenses world wide number in the tens of thousands. If you use Eiffel, you are not alone. These license-holders have formed a lasting worldwide quorum. Many world-class organizations are committed now, and will continue to be committed to the Eiffel framework. There is support through your maintenance contract with Eiffel Software. Help and information are available online in the form of the [https://www.eiffel.com/company/customers/ Eiffel Software users list] and websites like [https://www.eiffel.org/ Eiffel.org].
Eiffel Software's dual licensing model gives developers the opportunity to learn Eiffel without a great initial financial commitment.
@@ -65,7 +67,7 @@ And of course, its not true.
Eiffel is more complete and functionally superior in most ways to every other commercially viable software development technology … and there are enough people around who recognize this (that quorum of users I mentioned earlier) to ensure that Eiffel will be around for a long time to come.
Its possible that twenty-five years from now, there will be a significantly better software engineering idea … but certainly there hasnt been anything thats come close since Eiffels original design in 1985. In most areas, other technologies are playing “catch-up” to Eiffel.
Its possible that twenty-five years from now, there will be a significantly better software engineering idea … but certainly, there hasnt been anything thats come close since Eiffels original design in 1985. In most areas, other technologies are playing “catch-up” to Eiffel.
Besides, Eiffel constantly implements refinements and new capabilities with minimal impact on existing software. [[Void-safe programming in Eiffel|Void-safe programming]] is an excellent example of this.

View File

@@ -1,4 +1,4 @@
[[Property:modification_date|Fri, 22 Mar 2019 14:53:52 GMT]]
[[Property:modification_date|Thu, 19 Sep 2019 23:24:40 GMT]]
[[Property:publication_date|Fri, 22 Mar 2019 14:53:52 GMT]]
[[Property:title|Learning Eiffel]]
[[Property:weight|3]]
@@ -12,7 +12,7 @@ Your first stop in getting acquainted with Eiffel might be the collection of [ht
=Online documentation set=
The [http://docs.eiffel.com docs.eiffel.com] site contains the online documentation for the Eiffel method, tools, and language. Within the documentation set are tutorials to help you learn about the Eiffel programming language and tools.
The [http://eiffel.org/documentation|eiffel.org/documentation] section contains the online documentation for the Eiffel method, tools, and language. Within the documentation set are tutorials to help you learn about the Eiffel programming language and tools.
==The Eiffel Tutorial==
@@ -52,6 +52,7 @@ The documentation site includes a summary of the [[Quick reference to the Eiffel
However, usually you will find that there are differences in the syntax supported by EiffelStudio's compiler and that defined in the current standard. The differences between the standard and the EiffelStudio implementation are summarized in the [[EiffelStudio release notes]] and in a [[Differences between standard ECMA-367 and Eiffel Software implementation|documentation page]] that is specific to that purpose.
Another [[Differences_between_ETL_2nd_printing_and__Eiffel_Software__implementation|a documentation page]] summarizes changes to the pre-ECMA definition of Eiffel as described in [[Eiffel-_The_Language|ETL-2 "Eiffel: The Language"]].

View File

@@ -0,0 +1,38 @@
[[Property:modification_date|Wed, 18 Sep 2019 13:17:05 GMT]]
[[Property:publication_date|Thu, 12 Sep 2019 15:07:05 GMT]]
[[Property:uuid|BF3D5A25-A6C0-4645-956A-82807C41F073]]
[[Property:weight|10]]
[[Property:title|EiffelStudio: A Guided Tour - Eiffel Software Technical Report]]
[[Property:link_title|EiffelStudio Guided Tour]]
==Eiffel Software Technical Report TR-EI-68/GT ==
First published 1993 as ''First Steps with EiffelBench'' (TR-EI-38/EB) and revised as a chapter of ''Eiffel: The Environment'' also available as [[#An_Object-Oriented_Environment|An Object-Oriented Environment]] (below).
Version 3.3.8, 1995.
Version 4.1, 1997
This version: July 2001. Corresponds to release 5.0 of the EiffelStudio environment.
Full reference at [[Manual_identification_and_copyright|Manual identification and copyright]]
==An Object-Oriented Environment ==
:<big>'''Bertrand Meyer'''</big>
:Prentice Hall, 1994
:ISBN 0-13-245-507-2
The principles of object technology change the way we envision, design and use software development environments.
This book explains what it means for an environment to be truly object-oriented, not just by having a modern user interface but by applying to its full extent the concept of data abstraction. It will provide precious material to anyone who is interested in finding out how an environment can support O-O development in its quest for software quality and productivity.
''Content highlights: ''
Introduces five design principles for object-oriented environments; presents a complete set of tools applying these principles, based on development object types rather than functional units; describes a novel approach to compilation: the Melting Ice Technology, which combines the fast development turnaround of interpreters with the safety of compiled approaches, and generates high-performance final code; discusses how to use C as a target language for efficiency and portable cross-development, without impairing the benefits of the O-O method; takes the reader through a detailed demonstration of the environment's object-oriented tools, showing their application to compiling, browsing and symbolic debugging; explains the principles and application of GUI (Graphical User Interface) Application Building, going from mere 'interface builders' to the interactive construction of entire applications - interface and semantics; and introduces the Context-Events-Command-State model of GUI application building and applies it to the interactive development of a complete mini-application.
==The Guided Tour==
{{Note|[[EiffelStudio_tutorials|The Guided Tour to EiffelStudio starts here]]}}

View File

@@ -0,0 +1,33 @@
[[Property:modification_date|Wed, 18 Sep 2019 13:10:45 GMT]]
[[Property:publication_date|Wed, 11 Sep 2019 01:44:42 GMT]]
[[Property:uuid|8A382DA4-C45F-4CBB-A2B6-44447C63EFB0]]
[[Property:weight|5]]
[[Property:title|Reusable Software: The Base Object-Oriented Component Libraries]]
[[Property:link_title|OO Component Libraries]]
:[[Image:/files/uploads/OOComponentLibrariesSmall.jpg|OO Component Libraries]]
:<big>'''Bertrand Meyer'''</big>
:Prentice Hall, 1994
:xx, 514 p.
:Includes bibliographical references and index
:ISBN-10: 013-245-499-8
:ISBN-13: 978-013-245-499-5
First reviews the principles of library construction and the object-oriented techniques that make it possible to build high-quality libraries - e.g., finding the right objects and classes, choosing the proper names, using inheritance properly, determining the ideal class size, etc.
Then provides detailed usage descriptions of hundreds of reusable components, offering thousands of directly usable operations. The components, written in Eiffel, cover such areas as lists, chains, queues, stacks, trees of various kinds, sorted structures, lexical analysis, parsing, and many other fundamental data structures and algorithms.
For both the users of reusable software libraries and for developers who are interested in building their own libraries of reusable software.
''Content:''
1. Introduction to the Base libraries -- 2. Building libraries: techniques -- 3. Principles of library design -- 4. Abstract container structures: the taxonomy -- 5. Mathematical properties -- 6. Linear structures: sequences, chains, lists, circular chains -- 7. Dispenser structures: stacks, queues, priority lists -- 8. Trees -- 9. Sets and hash tables -- 10. Iteration -- 11. Lexical analysis: the Lex library -- 12. Parsing: The Parse Library -- 13. The Kernel Library -- 14. Classes for abstract container structures -- 15. Classes for mathematical properties -- 16. Classes for linear structures -- 17. Dispenser classes -- 18. Tree classes -- 19. Set and hash table classes -- 20. Iteration classes -- 21. Lexical analysis classes -- 22. Parsing classes -- 23. Kernel library classes
{{Caution|The last half of the book is taken up by a reprint of the contract form of the libraries as per printing time.
The most current documentation is found here as
[[ref:libraries/base/reference/index|EiffelBase Class Reference]] }}

View File

@@ -1,3 +1,5 @@
[[Property:modification_date|Wed, 11 Sep 2019 02:10:22 GMT]]
[[Property:publication_date|Wed, 11 Sep 2019 02:10:22 GMT]]
[[Property:link_title|Touch of Class]]
[[Property:title|Touch of Class: Learning to Program Well with Objects and Contracts]]
[[Property:weight|-1]]
@@ -8,7 +10,7 @@
=='''''Touch of Class: Learning to Program Well with Objects and Contracts''''' by Bertrand Meyer==
Springer-Verlag, 2009
Springer-Verlag, 2009, 2nd corrected ed. 2013
876 + lxiv pp.

View File

@@ -1,3 +1,5 @@
[[Property:modification_date|Tue, 10 Sep 2019 21:54:55 GMT]]
[[Property:publication_date|Tue, 10 Sep 2019 21:54:55 GMT]]
[[Property:title|ET: Instructions]]
[[Property:weight|-6]]
[[Property:uuid|628bf3db-728f-0b3c-bdbb-fe52deaae5b7]]
@@ -104,11 +106,7 @@ Here's one example:
and the other:
<code>
across
my_list as ic
loop
print (ic.item)
end
across my_list as ic loop print (ic.item) end
</code>
''Loop example 2.''
@@ -117,14 +115,8 @@ At first observation, it may not appear that both of these examples are using th
Incidentally, there is no requirement that ''Loop example 1'' occupy multiple lines, and ''Loop example 2'' occupy only one line. ''Loop example 1'' could have been written like this:
<code>
from
my_list.start
until
my_list.off
loop
print (my_list.item)
my_list.forth
end
from my_list.start until my_list.off
loop print (my_list.item) my_list.forth end
</code>
just as ''Loop example 2'' could have been written to take multiple lines. It comes down to a matter of balance among traditional style, conciseness, and readability.

View File

@@ -1,3 +1,5 @@
[[Property:modification_date|Tue, 10 Sep 2019 23:07:44 GMT]]
[[Property:publication_date|Tue, 10 Sep 2019 23:07:44 GMT]]
[[Property:title|ET: Other Mechanisms]]
[[Property:weight|-4]]
[[Property:uuid|c0a01664-194c-4e84-0517-8e7c1ca61dec]]
@@ -14,7 +16,7 @@ Sometimes we want to provide in software text a self-denoting value of a particu
In this case we used a manifest constant, <code>1</code>, to provide an initial value for <code>my_index</code>. In particular, this is a manifest integer.
Eiffel also supports [[Eiffel Programming Language Syntax#Manifest constants|manifest constants]] for real (and double) numbers (ex: <code>3.1415</code>), boolean values (ex: <code>True</code>, <code>False</code>), and characters (ex: <code>'A'</code>, with [[Eiffel programming language syntax#Special characters|special characters]] expressed using a percent sign as in <code>'%N'</code> for new line, <code>'%B'</code> for backspace, <code>'%"'</code> for double quote, and <code>'%U'</code> for null).
Eiffel also supports [[Eiffel_programming_language_syntax#Manifest_constants|manifest constants]] for real (and double) numbers (ex: <code>3.1415</code>), boolean values (ex: <code>True</code>, <code>False</code>), and characters (ex: <code>'A'</code>, with [[Eiffel programming language syntax#Special characters|special characters]] expressed using a percent sign as in <code>'%N'</code> for new line, <code>'%B'</code> for backspace, <code>'%"'</code> for double quote, and <code>'%U'</code> for null).
Manifest constants are also available for strings, using double quotes as in: <code>"Hello world!"</code>. As with character constants, special characters are denoted using the <code>%</code> codes.