mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-07 15:22:31 +01:00
Author:halw
Date:2009-09-30T16:25:37.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@311 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -57,7 +57,7 @@ Message ::= [[#Manifest strings|Manifest_string]] <br/>
|
||||
<br/>
|
||||
===Feature parts ===
|
||||
Features ::= Feature_clause+ <br/>
|
||||
Feature_clause ::= <code>feature</code> <nowiki>[</nowiki>[[#Clients|Clients]]<nowiki>]</nowiki> [Header_comment] Feature_declaration_list <br/>
|
||||
Feature_clause ::= <code>feature</code> <nowiki>[</nowiki>[[#Clients|Clients]]<nowiki>]</nowiki> <nowiki>[</nowiki>[[#Feature parts|Header_comment]]<nowiki>]</nowiki> Feature_declaration_list <br/>
|
||||
Feature_declaration_list ::= {[[#Feature declarations|Feature_declaration]] ";" …}* <br/>
|
||||
Header_comment ::= [[#Comments|Comment]] <br/>
|
||||
<br/>
|
||||
@@ -68,31 +68,31 @@ Query_mark ::= Type_mark <nowiki>[</nowiki>[[#Assigner marks|Assigner_mark]]<now
|
||||
Type_mark ::= ":" [[#Types|Type]] <br/>
|
||||
Feature_value ::= [Explicit_value] <br/>
|
||||
<nowiki>[</nowiki>[[#Obsolete parts|Obsolete]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Feature Parts|Header_comment]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Feature parts|Header_comment]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Feature bodies|Attribute_or_routine]]<nowiki>]</nowiki> <br/>
|
||||
Explicit_value ::= "=" Manifest_constant <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===New feature lists ===
|
||||
New_feature_list ::= {New_feature "," …}+ <br/>
|
||||
New_feature ::= [<code>frozen</code>] Extended_feature_name<br/>
|
||||
New_feature ::= [<code>frozen</code>] [[#Feature names|Extended_feature_name]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Feature bodies ===
|
||||
Attribute_or_routine ::= [Precondition] <br/>
|
||||
[Local_declarations] <br/>
|
||||
Attribute_or_routine ::= <nowiki>[</nowiki>[[#Assertions|Precondition]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Local variable declarations|Local_declarations]]<nowiki>]</nowiki> <br/>
|
||||
Feature_body <br/>
|
||||
[Postcondition] <br/>
|
||||
[Rescue] <br/>
|
||||
<nowiki>[</nowiki>[[#Assertions|Postcondition]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Rescue clauses|Rescue]]<nowiki>]</nowiki> <br/>
|
||||
<code>end</code><br/>
|
||||
Feature_body ::= Deferred | Effective_routine | Attribute<br/>
|
||||
Feature_body ::= [[#Routine bodies|Deferred]] | [[#Routine bodies|Effective_routine]] | [[#Attribute bodies|Attribute]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Feature names ===
|
||||
Extended_feature_name ::= Feature_name [Alias] <br/>
|
||||
Feature_name ::= Identifier <br/>
|
||||
Alias ::= <code>alias</code> '"' Alias_name '"' [convert] <br/>
|
||||
Alias_name ::= Operator | Bracket <br/>
|
||||
Feature_name ::= [[#Identfiers|Identifier]] <br/>
|
||||
Alias ::= <code>alias</code> '"' Alias_name '"' [<code>convert</code>] <br/>
|
||||
Alias_name ::= [[#Operators|Operator]] | Bracket <br/>
|
||||
Bracket ::= "[ ]" <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
@@ -103,10 +103,11 @@ Binary ::= "+" | "–" | "*" | "/" | "//" | "\\" | "^" | ".." | <br/>
|
||||
"<" | ">" | "<=" | ">=" | <br/>
|
||||
<code>and</code> | <code>or</code> | <code>xor</code> | <code>and</code> <code>then</code> | <code>or</code> <code>else</code> | <code>implies</code> | <br/>
|
||||
Free_binary <br/>
|
||||
{{note| Free_unary and Free_binary are free operators that are distinct from (respectively) the ''standard'' unary and binary operators (one- or two-character symbols) explicitly listed in the Unary and Binary productions. See ''Definition: Free operator'' in the standard for more precision.}}
|
||||
<br/>
|
||||
<br/>
|
||||
===Assigner marks ===
|
||||
Assigner_mark ::= <code>assign</code> Feature_name<br/>
|
||||
Assigner_mark ::= <code>assign</code> [[#Feature names|Feature_name]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Inheritance parts ===
|
||||
@@ -114,12 +115,12 @@ Inheritance ::= Inherit_clause+ <br/>
|
||||
Inherit_clause ::= <code>inherit</code> [Non_conformance] Parent_list <br/>
|
||||
Non_conformance ::= "{" NONE "}" <br/>
|
||||
Parent_list ::= {Parent ";" …}+ <br/>
|
||||
Parent ::= Class_type [Feature_adaptation] <br/>
|
||||
Feature_adaptation ::= [Undefine] <br/>
|
||||
[Redefine] <br/>
|
||||
[Rename] <br/>
|
||||
[New_exports] <br/>
|
||||
[Select] <br/>
|
||||
Parent ::= [[#Types|Class_type]] [Feature_adaptation] <br/>
|
||||
Feature_adaptation ::= <nowiki>[</nowiki>[[#Undefine clauses|Undefine]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Redefinition|Redefine]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Rename clauses|Rename]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Export adaptation|New_exports]]<nowiki>]</nowiki> <br/>
|
||||
<nowiki>[</nowiki>[[#Select clauses|Select]]<nowiki>]</nowiki> <br/>
|
||||
<code>end</code> <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
@@ -127,21 +128,21 @@ Feature_adaptation ::= [Undefine] <br/>
|
||||
===Rename clauses ===
|
||||
Rename ::= <code>rename</code> Rename_list <br/>
|
||||
Rename_list ::= {Rename_pair "," …}+ <br/>
|
||||
Rename_pair ::= Feature_name <code>as</code> Extended_feature_name <br/>
|
||||
Rename_pair ::= [[#Feature names|Feature_name]] <code>as</code> [[#Feature names|Extended_feature_name]] <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Clients ===
|
||||
Clients ::= "{" Class_list "}" <br/>
|
||||
Class_list ::= {Class_name "," …}+<br/>
|
||||
Class_list ::= {[[#Class names|Class_name]] "," …}+<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Export adaptation ===
|
||||
New_exports ::= <code>export</code> New_export_list <br/>
|
||||
New_export_list ::= {New_export_item ";" …}+ <br/>
|
||||
New_export_item ::= Clients [Header_comment] Feature_set <br/>
|
||||
New_export_item ::= [[#Clients|Clients]] <nowiki>[</nowiki>[[#Feature parts|Header_comment]]<nowiki>]</nowiki> Feature_set <br/>
|
||||
Feature_set ::= Feature_list | <code>all</code> <br/>
|
||||
Feature_list ::= {Feature_name "," …}+<br/>
|
||||
Feature_list ::= {[[#Feature names|Feature_name]] "," …}+<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
@@ -149,7 +150,7 @@ Feature_list ::= {Feature_name "," …}+<br/>
|
||||
Formal_arguments ::= "(" Entity_declaration_list ")" <br/>
|
||||
Entity_declaration_list ::= {Entity_declaration_group ";" …}+ <br/>
|
||||
Entity_declaration_group ::= Identifier_list Type_mark <br/>
|
||||
Identifier_list ::= {Identifier "," …}+ <br/>
|
||||
Identifier_list ::= {[[#Identfiers|Identifier]] "," …}+ <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Routine bodies ===
|
||||
@@ -179,7 +180,7 @@ Assertion ::= {Assertion_clause ";" …}* <br/>
|
||||
Assertion_clause ::= [Tag_mark] Unlabeled_assertion_clause <br/>
|
||||
Unlabeled_assertion_clause ::= Boolean_expression | Comment <br/>
|
||||
Tag_mark ::= Tag ":" <br/>
|
||||
Tag ::= Identifier <br/>
|
||||
Tag ::= [[#Identfiers|Identifier]] <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===“Old” postcondition expressions ===
|
||||
@@ -187,7 +188,7 @@ Old ::= <code>old</code> Expression<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===“Only” postcondition clauses ===
|
||||
Only ::= <code>only</code> [Feature_list]<br/>
|
||||
Only ::= <code>only</code> <nowiki>[</nowiki>[[#Export adaptation|Feature_list]]<nowiki>]</nowiki><br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Check instructions ===
|
||||
@@ -200,24 +201,24 @@ Variant ::= <code>variant</code> [Tag_mark] Expression<br/>
|
||||
<br/>
|
||||
===Precursor ===
|
||||
Precursor ::= <code>Precursor</code> [Parent_qualification] [Actuals] <br/>
|
||||
Parent_qualification ::= "{" Class_name "}"<br/>
|
||||
Parent_qualification ::= "{" [[#Class names|Class_name]] "}"<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Redefinition ===
|
||||
Redefine ::= <code>redefine</code> Feature_list<br/>
|
||||
Redefine ::= <code>redefine</code> [[#Export adaptation|Feature_list]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Undefine clauses ===
|
||||
Undefine ::= <code>undefine</code> Feature_list<br/>
|
||||
Undefine ::= <code>undefine</code> [[#Export adaptation|Feature_list]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Types ===
|
||||
Type ::= Class_or_tuple_type | Formal_generic_name | Anchored <br/>
|
||||
Class_or_tuple_type ::= Class_type | Tuple_type <br/>
|
||||
Class_type ::= [Attachment_mark] Class_name [Actual_generics] <br/>
|
||||
Class_type ::= [Attachment_mark] [[#Class names|Class_name]] [Actual_generics] <br/>
|
||||
Attachment_mark ::= "?" | "!" <br/>
|
||||
Anchored ::= [Attachment_mark] <code>like</code> Anchor <br/>
|
||||
Anchor ::= Feature_name | Current<br/>
|
||||
Anchor ::= [[#Feature names|Feature_name]] | Current<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Actual generic parameters ===
|
||||
@@ -229,17 +230,17 @@ Type_list ::= {Type "," …}+<br/>
|
||||
Formal_generics ::= "[" Formal_generic_list "]" <br/>
|
||||
Formal_generic_list ::= {Formal_generic ","…}+ <br/>
|
||||
Formal_generic ::= [<code>frozen</code>] Formal_generic_name [Constraint] <br/>
|
||||
Formal_generic_name ::= [?] Identifier<br/>
|
||||
Formal_generic_name ::= [?] [[#Identfiers|Identifier]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Generic constraints ===
|
||||
Constraint ::= "–>" Constraining_types [Constraint_creators] <br/>
|
||||
Constraining_types ::= Single_constraint | Multiple_constraint <br/>
|
||||
Single_constraint ::= Type [Renaming] <br/>
|
||||
Renaming ::= Rename end<br/>
|
||||
Renaming ::= [[#Rename clauses|Rename]] end<br/>
|
||||
Multiple_constraint ::= "{" Constraint_list "}" <br/>
|
||||
Constraint_list ::= {Single_constraint "," …}+ <br/>
|
||||
Constraint_creators ::= <code>create</code> Feature_list end<br/>
|
||||
Constraint_creators ::= <code>create</code> [[#Export adaptation|Feature_list]] end<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Tuple types ===
|
||||
@@ -257,12 +258,12 @@ Expression_list ::= {Expression "," …}*<br/>
|
||||
Converters ::= <code>convert</code> Converter_list <br/>
|
||||
Converter_list ::= {Converter ","…}+ <br/>
|
||||
Converter ::= Conversion_procedure | Conversion_query <br/>
|
||||
Conversion_procedure ::= Feature_name "(" "{" Type_list "}" ")" <br/>
|
||||
Conversion_query ::= Feature_name ":" "{" Type_list "}"<br/>
|
||||
Conversion_procedure ::= [[#Feature names|Feature_name]] "(" "{" Type_list "}" ")" <br/>
|
||||
Conversion_query ::= [[#Feature names|Feature_name]] ":" "{" Type_list "}"<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Select clauses ===
|
||||
Select ::= <code>select</code> Feature_list<br/>
|
||||
Select ::= <code>select</code> [[#Export adaptation|Feature_list]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Conditionals ===
|
||||
@@ -305,18 +306,18 @@ Attribute ::= <code>attribute</code> Compound<br/>
|
||||
===Entities and variables ===
|
||||
Entity ::= Variable | Read_only <br/>
|
||||
Variable ::= Variable_attribute | Local <br/>
|
||||
Variable_attribute ::= Feature_name <br/>
|
||||
Local ::= Identifier | <code>Result</code> <br/>
|
||||
Variable_attribute ::= [[#Feature names|Feature_name]] <br/>
|
||||
Local ::= [[#Identfiers|Identifier]] | <code>Result</code> <br/>
|
||||
Read_only ::= Formal | Constant_attribute | <code>Current</code> <br/>
|
||||
Formal ::= Identifier <br/>
|
||||
Constant_attribute ::= Feature_name<br/>
|
||||
Formal ::= [[#Identfiers|Identifier]] <br/>
|
||||
Constant_attribute ::= [[#Feature names|Feature_name]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Creators parts ===
|
||||
Creators ::= Creation_clause+ <br/>
|
||||
Creation_clause ::= <code>create</code> [Clients] [Header_comment] Creation_procedure_list <br/>
|
||||
Creation_clause ::= <code>create</code> <nowiki>[</nowiki>[[#Clients|Clients]]<nowiki>]</nowiki> <nowiki>[</nowiki>[[#Feature parts|Header_comment]]<nowiki>]</nowiki> Creation_procedure_list <br/>
|
||||
Creation_procedure_list ::= {Creation_procedure ","…}+ <br/>
|
||||
Creation_procedure ::= Feature_name<br/>
|
||||
Creation_procedure ::= [[#Feature names|Feature_name]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Creation instructions ===
|
||||
@@ -346,7 +347,7 @@ Assigner_call ::= Expression ":=" Expression<br/>
|
||||
===Feature calls ===
|
||||
Call ::= Object_call | Non_object_call <br/>
|
||||
Object_call ::= [Target "."] Unqualified_call <br/>
|
||||
Unqualified_call ::= Feature_name [Actuals] <br/>
|
||||
Unqualified_call ::= [[#Feature names|Feature_name]] [Actuals] <br/>
|
||||
Target ::= Local | Read_only | Call | Parenthesized_target <br/>
|
||||
Parenthesized_target ::= "( |" Expression "| )" <br/>
|
||||
Non_object_call ::= "{" Type "}" "." Unqualified_call<br/>
|
||||
@@ -358,7 +359,7 @@ Actual_list ::= {Expression "," …}+<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Object test ===
|
||||
Object_test ::= "{" Identifier ":" Type "}" Expression<br/>
|
||||
Object_test ::= "{" [[#Identfiers|Identifier]] ":" Type "}" Expression<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Rescue clauses ===
|
||||
@@ -369,13 +370,13 @@ Retry ::= retry<br/>
|
||||
===Agents ===
|
||||
Agent ::= Call_agent | Inline_agent <br/>
|
||||
Call_agent ::= <code>agent</code> Call_agent_body <br/>
|
||||
Inline_agent ::= <code>agent</code> <nowiki>[</nowiki>[[#Formal argument and entity declarations|Formal_arguments]]<nowiki>]</nowiki> [Type_mark] [Attribute_or_routine] [Agent_actuals]<br/>
|
||||
Inline_agent ::= <code>agent</code> <nowiki>[</nowiki>[[#Formal argument and entity declarations|Formal_arguments]]<nowiki>]</nowiki> [Type_mark] <nowiki>[</nowiki>[[#Feature bodies|Attribute_or_routine]]<nowiki>]</nowiki> [Agent_actuals]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Call agent bodies ===
|
||||
Call_agent_body ::= Agent_qualified | Agent_unqualified <br/>
|
||||
Agent_qualified ::= Agent_target ". " Agent_unqualified <br/>
|
||||
Agent_unqualified ::= Feature_name [Agent_actuals] <br/>
|
||||
Agent_unqualified ::= [[#Feature names|Feature_name]] [Agent_actuals] <br/>
|
||||
Agent_target ::= Entity | Parenthesized | Manifest_type <br/>
|
||||
Agent_actuals ::= "(" Agent_actual_list ")" <br/>
|
||||
Agent_actual_list ::= {Agent_actual "," …}+ <br/>
|
||||
@@ -408,7 +409,7 @@ Bracket_target ::= Target | Once_string | Manifest_constant | Manifest_tuple<br/
|
||||
<br/>
|
||||
===Constants ===
|
||||
Constant ::= Manifest_constant | Constant_attribute <br/>
|
||||
Constant_attribute ::= Feature_name<br/>
|
||||
Constant_attribute ::= [[#Feature names|Feature_name]]<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
===Manifest constants ===
|
||||
|
||||
Reference in New Issue
Block a user