proposed syntax change

Robert Jacques sandford at jhu.edu
Thu Aug 6 22:49:49 PDT 2009


On Thu, 06 Aug 2009 15:10:27 -0700, Jarrett Billingsley  
<jarrett.billingsley at gmail.com> wrote:

> On Thu, Aug 6, 2009 at 6:02 PM, Robert Jacques<sandford at jhu.edu> wrote:
>
>>> int a = 5 / 2; // compiler knows to use integer division
>>
>> No, it doesn't. (i.e. Welcome to the limitations of a context-free  
>> grammar)
>> The right hand of the expression has to be evaluated before the left, or
>> otherwise function overloads, etc, don't work, so there's no way for the
>> compiler to know the type of the expected result when 5/2 is evaluated.
>
> Uh, no.  This has literally nothing to do with the grammar.  What
> happens in this line would be determined in the semantic phase, not
> parsing.

I used the term context-free as the expression 5/2 must be evaluated free  
of its context: i.e. 'int a =' or 'real b ='. I apologise if this is an  
over generalization of the term (it's been too long since my algorithm's  
class) But the rest of my comment is valid. This came up before while  
looking at how 'long = int + int' should be evaluated with regard to  
overflow. Walter explained that currently in DMD, 'int+int' or in this  
case '5/2' gets evaluated before the assignment statement, so it doesn't  
know/can't use the type information of the assignment.

As I said polysemous values fixes this, but they are rather  
computationally expensive to support.



More information about the Digitalmars-d mailing list