[cfe-dev] decl/expr ambiguity
Chris Lattner
clattner at apple.com
Sun Aug 24 16:32:11 PDT 2008
Eli wrote:
>> Is it possible to determine that something is "definitely a decl"
>> after reading the "int*" in this case?
>>
>> int *X = ...
>
> Yes; once we've read "int*", we know it must be a decl.
Ok, but that only helps us if we parse the 'int*' in the unconditional
part of the parser. This approach is good for me, and using the
preparser to disambiguate hard but uncommon cases is also fine.
However, the current patch doesn't do any of this.
On Aug 24, 2008, at 3:59 PM, Argiris Kirtzidis wrote:
> Chris Lattner wrote:
>> Okay, here's another crazy idea. If you boil it down, my
>> objections to preparsing are basically:
>>
>> 1. the perf cost of having to do the prepare in *every* decl case.
>> 2. [minor] the perf cost for qualified expr cases (std::cout << ...)
>> 3. [minor] the maintenance cost of the second parser.
>>
>
> 1) This is not true, as I explain in this post:
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/002625.html
Either I'm very confused (likely!) or your current patch doesn't do
this. As I mentioned in the other post, it looks like it runs the
preparser for any identifier at top level. It even runs it for the "x
= 4" case.
> 2) This is not inherent to the preparser, even if there's a
> "tentatively parse decl then parse as expr" approach, we still
> prefer to do such resolutions once; This perf cost needs to be
> solved in either case.
By using a "parse expr with leading qualified name" approach, or with
something else?
> 3) Ummm.. it's [minor] right ? :-)
Yes, if this is the only issue, then I agree it is the best approach :)
Thanks for working through this with me, I'm sorry I'm slow/
obstinate, :)
-Chris
More information about the cfe-dev
mailing list