declaration/expression
Tim Matthews
tim.matthews7 at gmail.com
Wed Jun 24 20:46:32 PDT 2009
Ellery Newcomer wrote:
>
> Yeah, you're missing the point. The point is the D Language is billed as
> one whose lexer is completely independent of its parser, which is
> completely independent of its semantic analysis. The parser must be able
> to decide all of these without any help from semantic. Anything less is
> either failure or just plain wrong.
So you are following those steps from
http://digitalmars.com/d/2.0/lex.html. I don't think these are strict
restrictions to allow your tool to be called a D language parser
preventing you from re parsing. I think it is really trying to point out
the first few steps and perhaps should be re written as:
1 source character set
The source file is checked to see what character set it is, and the
appropriate scanner is loaded. ASCII and UTF formats are accepted.
2 script line
If the first line starts with #! then the first line is ignored.
3 parse
Also from this page http://digitalmars.com/d/2.0/overview.html
features to drop: C source code compatibility.
This is not valid code with dmd v2.030 because D is not strictly
compatible with C/C+.
struct A
{
int i;
}
void main()
{
A(a);
}
Now that I've tested that with structs, classes, and typedef'd int none
of which worked. This does compile however:
void main()
{
int(a);
a = 2;
}
From that dmd compatibility should be far simpler but going beyond that
would be nicer.
> it is infinitely better than mixing
> semantic and syntactic analysis
I didn't recommend that.
> But question remains: how does the compiler decide this?
Built in types have the extra C compatibility. Dmd doesn't like this
though and if it matters to you enough, report it as a bug:
alias int T;
void main()
{
T(a);
a = 2;
}
>
> You are right, though, none of this is complex, just tedious. Reading
> the compiler's source code especially, though it sounds like I'm not
> going to get answers any other way.
If you have a parser that allows that syntax to work a bit more than
could you please provide an example of code here that is completely
ambiguous to the compiler.
More information about the Digitalmars-d
mailing list