ISSUE 238

Number 238
Category errata
Synopsis A.1.4, A.7.3: Should range_expression be constant_range_expression?
State lrmdraft
Class errata-discuss
Arrival-DateDec 31 2002
Originator Shalom.Bresticker@motorola.com
Release 2001b: 12.1 (Syntax 12-1), 12.3.1 (Syntax 12-5), 14.2.2 (Syntax 14-3), A.1.4, A.7.3
Environment
#123
SV-BC19-45,47
Description
There are a few BNFs which offer as indexing alternatives
either [ constant_expression ] or [ range_expression ].

Specifically,

port_reference ::= (A.1.4, Syntax 12-1, 12-5)
port_identifier
| port_identifier [ constant_expression ]
| port_identifier [ range_expression ]

specify_input_terminal_descriptor ::= (A.7.3, Syntax 14-3)
input_identifier
| input_identifier [ constant_expression ]
| input_identifier [ range_expression ]

specify_output_terminal_descriptor ::= (A.7.3, Syntax 14-3)
output_identifier
| output_identifier [ constant_expression ]
| output_identifier [ range_expression ]

My immediate question is:

range_expression includes expression,
which is not restricted to be a constant.
constant_expression is therefore a proper subset of
range_expression.

Either range_expression should have been
constant_range_expression or
constant_expression should have been expression.

A related issue that will soon be filed comes from
SV-BC19-45 and 19-47 which points out that
constant_range_expression includes constant_expression
and range_expression includes expression,
so why do non-terminals such as net_lvalue and primary and
variable_lvalue and the 3 above,
which use constant_range_expression or range_expression,
need constant_expression or expression as well?

This also seems to be related to issue #123.
Fix
REPLACE:

port_reference ::= (A.1.4, Syntax 12-1, 12-5)
  port_identifier 
| port_identifier [ constant_expression ] 
| port_identifier [ range_expression ] 

specify_input_terminal_descriptor ::= (A.7.3, Syntax 14-3)
  input_identifier 
| input_identifier [ constant_expression ] 
| input_identifier [ range_expression ]  

specify_output_terminal_descriptor ::= (A.7.3, Syntax 14-3)
  output_identifier 
| output_identifier [ constant_expression ] 
| output_identifier [ range_expression ]  

WITH:
              
port_reference ::= (A.1.4, Syntax 12-1, 12-5)
  port_identifier [ [ constant_range_expression ] ] 

specify_input_terminal_descriptor ::= (A.7.3, Syntax 14-3)
  input_identifier [ [ constant_range_expression ] ] 

specify_output_terminal_descriptor ::= (A.7.3, Syntax 14-3)
  output_identifier [ [ constant_range_expression ] ] 

Audit-Trail
Unformatted


Hosted by Boyd Technology