context-free grammar

Simen kjaeraas simen.kjaras at gmail.com
Fri Mar 4 17:42:47 PST 2011


Simon Buerger <krox at gmx.net> wrote:

> It is often said that D's grammar is easier to parse than C++, i.e. it  
> should be possible to seperate syntactic and semantic analysis, which is  
> not possible in C++ with the template-"< >" and so on. But I found  
> following example:
>
> The Line "a * b = c;" can be interpreted in two ways:
> -> Declaration of variable b of type a*
> -> (a*b) is itself a lvalue which is assigned to.
>
> Current D (gdc 2.051) interprets it always in the first way and yields  
> an error if the second is meant. The Workaround is simply to use parens  
> like "(a*b)=c", so it's not a real issue. But at the same time, C++ (gcc  
> 4.5) has no problem to distinguish it even without parens.
>
> So, is the advertising as "context-free grammar" wrong?

Well, obviously not. The grammar has one and only one meaning for that
example - that of an a* called b, being set to c. This can be inferred
with no other context.

-- 
Simen


More information about the Digitalmars-d mailing list