Parsing D Maybe Not Such a Good Idea <_<;

cy via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 14 21:40:07 PDT 2016


On Wednesday, 15 June 2016 at 04:25:15 UTC, deadalnix wrote:
> there is nothing in that example that is especially difficult 
> for a machine to muddle through.

Nested comments, have to keep track of nesting depth specifically 
for those. Single line comments, which give newline two totally 
different semantics based on context, that the parser has to 
account for. Comments can go absolutely anywhere, so you can 
never advance by simply incrementing your character pointer, 
regardless of the statement you're parsing. You have to do a 
complex test for the presence of comments and pass over them, and 
if you want to do any backtracking, you have to be able to skip 
backwards over them.

Type definitions can have parentheses in them, so the parser 
can't search for '(' either forwards or backwards in order to 
find the beginning of a function definition. It has to analyze 
each parenthetical grouping in its own special context, taking 
into account all the possible keywords, special phrases like 
extern, properties, and template arguments, both for parameters 
and return values.

And that's just to parse function declarations!


More information about the Digitalmars-d mailing list