following are the rules quoted by the BNF
A.6.5 Timing control statements
procedural_timing_control_statement ::=
procedural_timing_control statement_or_null
delay_or_event_control ::=
delay_control
| event_control
| repeat ( expression ) event_control
delay_control ::=
# delay_value
| # ( mintypmax_expression )
event_control ::=
@ hierarchical_event_identifier
| @ ( event_expression )
| @*
| @ (*)
| @ sequence_instance
...
sequence_instance ::=
ps_sequence_identifier [ ( [ actual_arg_list ] ) ]
The real problem would be when trying to parse the statement
out = @ a (b) + c;
which can be understood as :
1. out = @a(b) (+ c);
in this case '(b)' is an argument of the sequence instance 'a' and the
plus is an unary operator
or
2. out = @a (b + c);
In this case 'a' is the sequence instance, and the assigned expression
is b+c, the plus operator '+' a binary operator.
-----Original Message-----
From: owner-sv-ec@eda.org [mailto:owner-sv-ec@eda.org] On Behalf Of
Kausik Datta
Sent: Tuesday, September 14, 2004 10:46 AM
To: sv-ec@eda.org
Subject: [sv-ec] Conflict in LRM
Hi,
Please consider the following rules in SV-3.1a LRM
-------------------------------
1. blocking_assignment ::=
variable_lvalue = delay_or_event_control expression
2. delay_or_event_control::=
@ hierarchical_event_identifier
| @ sequence_instance
3. expression
::= ( expression )
4. sequence_instance ::=
ps_sequence_identifier [ ( [ actual_arg_list ] ) ]
--------------------------------
It seems that there is no way parser can understand which rule to reduce
through, for a syntax of the form " @ s1 (a) " , where s1 is a sequence
instance and 'a' can be treated as argument of s1 or the expression
in the rule
1. blocking_assignment ::=
variable_lvalue = delay_or_event_control expression
Thanks,
Kausik
Received on Tue Sep 14 01:49:47 2004
This archive was generated by hypermail 2.1.8 : Tue Sep 14 2004 - 01:50:05 PDT