BNF Question

BCS ao at pathlink.com
Sun Sep 2 22:16:21 PDT 2007


Reply to Xinok,

> An equal expression is when the data in two objects is compared.
> int[] arr1 = [10, 20, 30], arr2 = [10, 20, 30];
> if(arr1 == arr2){ } // True
> An identity expresion is when the pointer values (and .length in
> arrays)
> in two objects is compared.
> int[] arr1 = [10, 20, 30], arr2 = arr1;
> if(arr1 is arr2){ } // True
> For primitive types, there is no difference between using == and is.
> int a = 15, b = 15;
> if(a == b){ } // True
> if(a is b){ } // True
> BCS wrote:
> 

However what you describe is at the semantic level and the grammar is totally 
at the syntax level. What I was looking at is that this:

a is b

can be parsed as an Identity Expression and an Equal Expression.

If the distinction is a semantic issue then this makes D context sensitive. 
If it is not a semantic issue, then it is redundant or conflicting.

>> What is the difference between an Identity Expression and a Equal
>> Expression? both have a "ShiftExpression is ShiftExpression" and a
>> "ShiftExpression !is ShiftExpressionand".
>> 
>> http://www.digitalmars.com/d/expression.html#EqualExpression
>> http://www.digitalmars.com/d/expression.html#IdentityExpression
>> 




More information about the Digitalmars-d-learn mailing list