diff --git a/documentation/current/method/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki b/documentation/current/method/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki
index 6c5ddcb9..13a536d2 100644
--- a/documentation/current/method/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki
+++ b/documentation/current/method/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki
@@ -57,7 +57,7 @@ Message ::= [[#Manifest strings|Manifest_string]]
===Feature parts ===
Features ::= Feature_clause+
-Feature_clause ::= feature [[[#Clients|Clients]]] [Header_comment] Feature_declaration_list
+Feature_clause ::= feature [[[#Clients|Clients]]] [[[#Feature parts|Header_comment]]] Feature_declaration_list
Feature_declaration_list ::= {[[#Feature declarations|Feature_declaration]] ";" …}*
Header_comment ::= [[#Comments|Comment]]
@@ -68,31 +68,31 @@ Query_mark ::= Type_mark [[[#Assigner marks|Assigner_mark]]
Feature_value ::= [Explicit_value]
[[[#Obsolete parts|Obsolete]]]
-[[[#Feature Parts|Header_comment]]]
+[[[#Feature parts|Header_comment]]]
[[[#Feature bodies|Attribute_or_routine]]]
Explicit_value ::= "=" Manifest_constant
===New feature lists ===
New_feature_list ::= {New_feature "," …}+
-New_feature ::= [frozen] Extended_feature_name
+New_feature ::= [frozen] [[#Feature names|Extended_feature_name]]
===Feature bodies ===
-Attribute_or_routine ::= [Precondition]
-[Local_declarations]
+Attribute_or_routine ::= [[[#Assertions|Precondition]]]
+[[[#Local variable declarations|Local_declarations]]]
Feature_body
-[Postcondition]
-[Rescue]
+[[[#Assertions|Postcondition]]]
+[[[#Rescue clauses|Rescue]]]
end
-Feature_body ::= Deferred | Effective_routine | Attribute
+Feature_body ::= [[#Routine bodies|Deferred]] | [[#Routine bodies|Effective_routine]] | [[#Attribute bodies|Attribute]]
===Feature names ===
Extended_feature_name ::= Feature_name [Alias]
-Feature_name ::= Identifier
-Alias ::= alias '"' Alias_name '"' [convert]
-Alias_name ::= Operator | Bracket
+Feature_name ::= [[#Identfiers|Identifier]]
+Alias ::= alias '"' Alias_name '"' [convert]
+Alias_name ::= [[#Operators|Operator]] | Bracket
Bracket ::= "[ ]"
@@ -103,10 +103,11 @@ Binary ::= "+" | "–" | "*" | "/" | "//" | "\\" | "^" | ".." |
"<" | ">" | "<=" | ">=" |
and | or | xor | and then | or else | implies |
Free_binary
+{{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.}}
===Assigner marks ===
-Assigner_mark ::= assign Feature_name
+Assigner_mark ::= assign [[#Feature names|Feature_name]]
===Inheritance parts ===
@@ -114,12 +115,12 @@ Inheritance ::= Inherit_clause+
Inherit_clause ::= inherit [Non_conformance] Parent_list
Non_conformance ::= "{" NONE "}"
Parent_list ::= {Parent ";" …}+
-Parent ::= Class_type [Feature_adaptation]
-Feature_adaptation ::= [Undefine]
-[Redefine]
-[Rename]
-[New_exports]
-[Select]
+Parent ::= [[#Types|Class_type]] [Feature_adaptation]
+Feature_adaptation ::= [[[#Undefine clauses|Undefine]]]
+[[[#Redefinition|Redefine]]]
+[[[#Rename clauses|Rename]]]
+[[[#Export adaptation|New_exports]]]
+[[[#Select clauses|Select]]]
end
@@ -127,21 +128,21 @@ Feature_adaptation ::= [Undefine]
===Rename clauses ===
Rename ::= rename Rename_list
Rename_list ::= {Rename_pair "," …}+
-Rename_pair ::= Feature_name as Extended_feature_name
+Rename_pair ::= [[#Feature names|Feature_name]] as [[#Feature names|Extended_feature_name]]
===Clients ===
Clients ::= "{" Class_list "}"
-Class_list ::= {Class_name "," …}+
+Class_list ::= {[[#Class names|Class_name]] "," …}+
===Export adaptation ===
New_exports ::= export New_export_list
New_export_list ::= {New_export_item ";" …}+
-New_export_item ::= Clients [Header_comment] Feature_set
+New_export_item ::= [[#Clients|Clients]] [[[#Feature parts|Header_comment]]] Feature_set
Feature_set ::= Feature_list | all
-Feature_list ::= {Feature_name "," …}+
+Feature_list ::= {[[#Feature names|Feature_name]] "," …}+
@@ -149,7 +150,7 @@ Feature_list ::= {Feature_name "," …}+
Formal_arguments ::= "(" Entity_declaration_list ")"
Entity_declaration_list ::= {Entity_declaration_group ";" …}+
Entity_declaration_group ::= Identifier_list Type_mark
-Identifier_list ::= {Identifier "," …}+
+Identifier_list ::= {[[#Identfiers|Identifier]] "," …}+
===Routine bodies ===
@@ -179,7 +180,7 @@ Assertion ::= {Assertion_clause ";" …}*
Assertion_clause ::= [Tag_mark] Unlabeled_assertion_clause
Unlabeled_assertion_clause ::= Boolean_expression | Comment
Tag_mark ::= Tag ":"
-Tag ::= Identifier
+Tag ::= [[#Identfiers|Identifier]]
===“Old” postcondition expressions ===
@@ -187,7 +188,7 @@ Old ::= old Expression
===“Only” postcondition clauses ===
-Only ::= only [Feature_list]
+Only ::= only [[[#Export adaptation|Feature_list]]]
===Check instructions ===
@@ -200,24 +201,24 @@ Variant ::= variant [Tag_mark] Expression
===Precursor ===
Precursor ::= Precursor [Parent_qualification] [Actuals]
-Parent_qualification ::= "{" Class_name "}"
+Parent_qualification ::= "{" [[#Class names|Class_name]] "}"
===Redefinition ===
-Redefine ::= redefine Feature_list
+Redefine ::= redefine [[#Export adaptation|Feature_list]]
===Undefine clauses ===
-Undefine ::= undefine Feature_list
+Undefine ::= undefine [[#Export adaptation|Feature_list]]
===Types ===
Type ::= Class_or_tuple_type | Formal_generic_name | Anchored
Class_or_tuple_type ::= Class_type | Tuple_type
-Class_type ::= [Attachment_mark] Class_name [Actual_generics]
+Class_type ::= [Attachment_mark] [[#Class names|Class_name]] [Actual_generics]
Attachment_mark ::= "?" | "!"
Anchored ::= [Attachment_mark] like Anchor
-Anchor ::= Feature_name | Current
+Anchor ::= [[#Feature names|Feature_name]] | Current
===Actual generic parameters ===
@@ -229,17 +230,17 @@ Type_list ::= {Type "," …}+
Formal_generics ::= "[" Formal_generic_list "]"
Formal_generic_list ::= {Formal_generic ","…}+
Formal_generic ::= [frozen] Formal_generic_name [Constraint]
-Formal_generic_name ::= [?] Identifier
+Formal_generic_name ::= [?] [[#Identfiers|Identifier]]
===Generic constraints ===
Constraint ::= "–>" Constraining_types [Constraint_creators]
Constraining_types ::= Single_constraint | Multiple_constraint
Single_constraint ::= Type [Renaming]
-Renaming ::= Rename end
+Renaming ::= [[#Rename clauses|Rename]] end
Multiple_constraint ::= "{" Constraint_list "}"
Constraint_list ::= {Single_constraint "," …}+
-Constraint_creators ::= create Feature_list end
+Constraint_creators ::= create [[#Export adaptation|Feature_list]] end
===Tuple types ===
@@ -257,12 +258,12 @@ Expression_list ::= {Expression "," …}*
Converters ::= convert Converter_list
Converter_list ::= {Converter ","…}+
Converter ::= Conversion_procedure | Conversion_query
-Conversion_procedure ::= Feature_name "(" "{" Type_list "}" ")"
-Conversion_query ::= Feature_name ":" "{" Type_list "}"
+Conversion_procedure ::= [[#Feature names|Feature_name]] "(" "{" Type_list "}" ")"
+Conversion_query ::= [[#Feature names|Feature_name]] ":" "{" Type_list "}"
===Select clauses ===
-Select ::= select Feature_list
+Select ::= select [[#Export adaptation|Feature_list]]
===Conditionals ===
@@ -305,18 +306,18 @@ Attribute ::= attribute Compound
===Entities and variables ===
Entity ::= Variable | Read_only
Variable ::= Variable_attribute | Local
-Variable_attribute ::= Feature_name
-Local ::= Identifier | Result
+Variable_attribute ::= [[#Feature names|Feature_name]]
+Local ::= [[#Identfiers|Identifier]] | Result
Read_only ::= Formal | Constant_attribute | Current
-Formal ::= Identifier
-Constant_attribute ::= Feature_name
+Formal ::= [[#Identfiers|Identifier]]
+Constant_attribute ::= [[#Feature names|Feature_name]]
===Creators parts ===
Creators ::= Creation_clause+
-Creation_clause ::= create [Clients] [Header_comment] Creation_procedure_list
+Creation_clause ::= create [[[#Clients|Clients]]] [[[#Feature parts|Header_comment]]] Creation_procedure_list
Creation_procedure_list ::= {Creation_procedure ","…}+
-Creation_procedure ::= Feature_name
+Creation_procedure ::= [[#Feature names|Feature_name]]
===Creation instructions ===
@@ -346,7 +347,7 @@ Assigner_call ::= Expression ":=" Expression
===Feature calls ===
Call ::= Object_call | Non_object_call
Object_call ::= [Target "."] Unqualified_call
-Unqualified_call ::= Feature_name [Actuals]
+Unqualified_call ::= [[#Feature names|Feature_name]] [Actuals]
Target ::= Local | Read_only | Call | Parenthesized_target
Parenthesized_target ::= "( |" Expression "| )"
Non_object_call ::= "{" Type "}" "." Unqualified_call
@@ -358,7 +359,7 @@ Actual_list ::= {Expression "," …}+
===Object test ===
-Object_test ::= "{" Identifier ":" Type "}" Expression
+Object_test ::= "{" [[#Identfiers|Identifier]] ":" Type "}" Expression
===Rescue clauses ===
@@ -369,13 +370,13 @@ Retry ::= retry
===Agents ===
Agent ::= Call_agent | Inline_agent
Call_agent ::= agent Call_agent_body
-Inline_agent ::= agent [[[#Formal argument and entity declarations|Formal_arguments]]] [Type_mark] [Attribute_or_routine] [Agent_actuals]
+Inline_agent ::= agent [[[#Formal argument and entity declarations|Formal_arguments]]] [Type_mark] [[[#Feature bodies|Attribute_or_routine]]] [Agent_actuals]
===Call agent bodies ===
Call_agent_body ::= Agent_qualified | Agent_unqualified
Agent_qualified ::= Agent_target ". " Agent_unqualified
-Agent_unqualified ::= Feature_name [Agent_actuals]
+Agent_unqualified ::= [[#Feature names|Feature_name]] [Agent_actuals]
Agent_target ::= Entity | Parenthesized | Manifest_type
Agent_actuals ::= "(" Agent_actual_list ")"
Agent_actual_list ::= {Agent_actual "," …}+
@@ -408,7 +409,7 @@ Bracket_target ::= Target | Once_string | Manifest_constant | Manifest_tuple
===Constants ===
Constant ::= Manifest_constant | Constant_attribute
-Constant_attribute ::= Feature_name
+Constant_attribute ::= [[#Feature names|Feature_name]]
===Manifest constants ===