On Wednesday, 11 September 2013 at 19:46:25 UTC, Brian Schott
wrote:
Yeah. D requires lookahead in both lexing and parsing. Some
examples:
* String literals such as q{}
* If statements need to determine the difference between if
(expression) and if (type identifier = expression)
* Determining if something is a lamba expression or a function
literal expression
* Determining if something is a declaration or a statement or
an expression.
Does not require lookahead.
* Differentiating between (type).identifier and a lambda
expression
Yup !
* Differentiating between a type and an expression inside a
typeid expression
Does not require lookahead.
* Differentiating between associative array key type and tuple
slices in type suffixes
ditto.