On 11/27/2011 12:05 AM, Trass3r wrote:
Is there a D parser written in D? - C strings kill me.
It's annoying to write one as long as the buffered input range with
infinite lookahead problem is not solved by the std library.
What do you need infinite lookahead for?
There are a few places in the grammar where it is useful, for example:
void foo(A,B,C,...)(A,B,C,...){}
vs
void foo(A,B,C,...){}
Without looking behind the first set of parentheses, it is harder to
figure out whether or not foo is a function template.
Another example:
void main(){
a[][][][][]...[][][] b;
}
vs
void main(){
a[][][][][]...[][][] = b[];
}
Both of them could in theory be parsed without infinite lookahead, but
that is more complicated than the solution using infinite lookahead.
Also, if eg. you want to build a distinct AST representation for
template parameters and function parameters, infinite lookahead is the
only sensible option.