CVS difference for ai05s/ai05-0147-1.txt
--- ai05s/ai05-0147-1.txt 2010/02/25 05:01:43 1.13
+++ ai05s/ai05-0147-1.txt 2010/04/23 04:15:37 1.14
@@ -1,4 +1,4 @@
-!standard 4.3.3(15) 10-02-04 AI05-0147-1/09
+!standard 4.3.3(15) 10-02-22 AI05-0147-1/10
!standard 4.4(1)
!standard 4.4(7)
!standard 4.5.7(0)
@@ -162,57 +162,13 @@
expression with parentheses, including pragma arguments, type conversion
and qualified expression operands, and array index expressions.
-The above English-language rule is equivalent to modifying the BNF as follows:
+This English-language rule could have been implemented instead by adding a
+non-terminal expression_within_parentheses, which would consist of expressions
+and conditional_expressions. Then, that could be used in all of the syntax
+which could consist of parens directly around an expression. We did not do
+that because of the large amount of change required. A complete grammar is
+given in AI05-0147-1.
- expression_within_parens ::=
- expression |
- conditional_expression
-
- singleton_list ::= ( conditional_expression )
-
- primary ::= numeric_literal | null | string_literal | aggregate |
- name | allocator | (expression_within_parens)
-
- pragma_argument_association_list ::=
- (pragma_argument_association {, pragma_argument_association})
- | singleton_list
-
- pragma ::= Pragma identifier [pragma_argument_association_list] ;
-
- discriminant_constraint ::=
- (discriminant_association {, discriminant_association}) |
- singleton_list
-
- index_expression_list ::= (expression {, expression}) | singleton_list
-
- indexed_component ::= prefix index_expression_list
-
- attribute_designator ::=
- identifier[(*static*_expression_within_parans)]
-
- range_attribute_designator ::=
- Range[(*static*_expression_within_parens)]
-
- type_conversion ::=
- subtype_mark (expression_within_parens)
-
- qualified expression ::=
- subtype_mark'(expression_within_parens)
-
- actual_parameter_part ::=
- (parameter_association {, parameter_association}) |
- singleton_list
-
- entry_index ::= expression_within_parens
-
- generic_actual_part ::=
- (generic_association {, generic_association}) |
- singleton_list
-
-We chose not to make this modification because it is a huge change to the BNF
-grammar, and in addition would require a lot of English text that refers to
-syntactic categories to change.
-
AARM Implementation Note: Implementers are cautioned to consider error
detection when implementing the syntax for conditional_expressions.
Conditional_expressions and if_statements are very similar syntactically,
@@ -489,6 +445,61 @@
The implementation of such a build-in-place conditional expression shouldn't be
too complex; the address of the target object is passed to whichever
dependent_expression is actually evaluated.
+
+----
+
+The English-language syntax rule in 4.57 could, as noted in the AARM note, be
+implemented by modifying the BNF. We believe that it is equivalent to modifying
+the BNF as follows:
+
+ expression_within_parens ::=
+ expression |
+ conditional_expression
+
+ singleton_list ::= ( conditional_expression )
+
+ primary ::= numeric_literal | null | string_literal | aggregate |
+ name | allocator | (expression_within_parens)
+
+ pragma_argument_association_list ::=
+ (pragma_argument_association {, pragma_argument_association})
+ | singleton_list
+
+ pragma ::= Pragma identifier [pragma_argument_association_list] ;
+
+ discriminant_constraint ::=
+ (discriminant_association {, discriminant_association}) |
+ singleton_list
+
+ index_expression_list ::= (expression {, expression}) | singleton_list
+
+ indexed_component ::= prefix index_expression_list
+
+ attribute_designator ::=
+ identifier[(*static*_expression_within_parans)]
+
+ range_attribute_designator ::=
+ Range[(*static*_expression_within_parens)]
+
+ type_conversion ::=
+ subtype_mark (expression_within_parens)
+
+ qualified expression ::=
+ subtype_mark'(expression_within_parens)
+
+ actual_parameter_part ::=
+ (parameter_association {, parameter_association}) |
+ singleton_list
+
+ entry_index ::= expression_within_parens
+
+ generic_actual_part ::=
+ (generic_association {, generic_association}) |
+ singleton_list
+
+We chose not to make this modification because it is a huge change to the BNF
+grammar, and in addition would require a lot of English text that refers to
+syntactic categories to change.
!examples
Questions? Ask the ACAA Technical Agent