Re: [sv-bc] Conflict for implication (->) operator

From: David Jones <djones_at_.....>
Date: Mon Apr 06 2009 - 06:18:09 PDT
I don't mean that. You would define two rules:

expression ::= expression_no_implication
   | expression_no_implication -> expression

expression_no_implication ::= (what we have today for expression, but
without including -> in binary_operator)

At this point anyone referencing "expression" won't notice anything
different. We've just factored out the implication operator.

You then replace the production:

constraint_expression ::= expression -> constraint_set

with:

constraint_expression ::= expression_no_implication -> constraint_set

(other productions for constraint_expression are unaffected.)

A statement such as "a -> b -> c" should right-associate as it always
did. "a" reduces to expression_no_implication, and "b -> c" matches
the expression call in expression_or_dist.

On Mon, Apr 6, 2009 at 8:58 AM, Surya Pratik Saha
<spsaha@cal.interrasystems.com> wrote:
> Hi David,
> So then you want to mean, nobody can use '->' as part of binary expression
> inside constraint expression. That is too restrictive. LRM has to be clear
> on that. Otherwise, tools may try to fix at their own way.
>
> Regards
> Surya
>
>
> -------- Original Message  --------
> Subject: Re:[sv-bc] Conflict for implication (->) operator
> From: David Jones <djones@xtreme-eda.com>
> To: Surya Pratik Saha <spsaha@cal.interrasystems.com>
> Cc: "sv-bc@eda.org" <sv-bc@eda.org>, "sv-ec@eda.org" <sv-ec@eda.org>
> Date: Monday, April 06, 2009 6:02:50 PM
>
> I was about to reply with an argument along the lines of:
>
> Given: a -> b foo c
>
> where "foo" represents an operator having lower precedence than '->',
> then the grammar as-is would allow two conflicting parses which differ
> in the relative precedence of foo and ->. As an expression, a -> b foo
> c would mean:
>
> (a -> b) foo c
>
> if foo has lower precedence, but using the rules for constraint
> expression it would mean:
>
> a -> (b foo c)
>
> As it turns out, -> already has almost the lowest precedence possible.
> The only operators having lower precedence are the assignment
> operators which, if they appear in an expression, must be
> parenthesized. Although there are conflicting parses, I believe that
> all conflicting parses will eventually have the same semantics.
>
> Nevertheless, I think this can be fixed. The solution is to have two
> rules, one for expression and the other for "expression but not using
> the -> operator". The productions for constraint expression can then
> reference the latter.
>
>
> On Sun, Apr 5, 2009 at 10:55 AM, Surya Pratik Saha
> <spsaha@cal.interrasystems.com> wrote:
>
>
> Hi,
> As per SV 2009 draft 7a LRM, implication operator (->) has become part of
> binary expression. But it is already part of constraint expression. So it is
> really conflicting situation wrt a parser. I think constraint expression
> rule should not have the operator, as by binary expression it is already
> part of expression. Here is the two BNF snippet:
>
> constraint_expression ::=
> expression_or_dist ;
> | expression –> constraint_set
> | if ( expression ) constraint_set [ else constraint_set ]
> | foreach ( ps_or_hierarchical_array_identifier [ loop_variables ] )
> constraint_set
>
> constraint_set ::=
> constraint_expression
> | { { constraint_expression } }
>
> expression ::=
> primary
> | unary_operator { attribute_instance } primary
> | inc_or_dec_expression
> | ( operator_assignment )
> | expression binary_operator { attribute_instance } expression
> | conditional_expression
> | inside_expression
> | tagged_union_expression
>
> binary_operator ::=
> + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | **
> | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<<
> | -> | <->
>
> Is it an oversight of LRM?
>
> --
> Regards
> Surya
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>
>
>
>

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Apr 6 06:18:53 2009

This archive was generated by hypermail 2.1.8 : Mon Apr 06 2009 - 06:19:55 PDT