Thread overview
Using keywords as elements of module names?
Aug 14, 2005
Russ Lewis
Aug 14, 2005
Derek Parnell
Aug 14, 2005
xs0
August 14, 2005
I've noticed that a number of the DStress files use the word "complex" as part of the module name.  However, "complex" is also a keyword.

My question: Is this intentional, to be able to use keyword in module names?  Or is this a bug?

My comment: It makes files harder to parse, at least with some types of parsers, to allow keywords there.  I have a D parsing tool that uses lex as its lexer; basically, lex looks for all of the known keywords first.  Then, any string that is not a keyword but looks like an identifier is taken as an identifier.  The problem that I get here is that my parser expects a module declaration (and, similarly, an import statement) to be a string of identifiers separated by '.' tokens.  But now I have to alter the parser so that it will also handle the "complex" keyword in any of those places....in fact, I have to alter it to be able to hand just about any D keyword.  That makes the parser much harder to write.

My request: Can we ban this?

Russ
August 14, 2005
On Sun, 14 Aug 2005 07:09:54 -0700, Russ Lewis wrote:

> I've noticed that a number of the DStress files use the word "complex" as part of the module name.  However, "complex" is also a keyword.

"complex" is not a keyword in the DMD that I'm using. DMD v0.129 Windows.

> My question: Is this intentional, to be able to use keyword in module names?  Or is this a bug?

Keywords in module names are forbidden in D.


-- 
Derek Parnell
Melbourne, Australia
15/08/2005 12:14:12 AM
August 14, 2005
Russ Lewis wrote:
> I've noticed that a number of the DStress files use the word "complex" as part of the module name.  However, "complex" is also a keyword.
> 
> My question: Is this intentional, to be able to use keyword in module names?  Or is this a bug?
> 
> My comment: It makes files harder to parse, at least with some types of parsers, to allow keywords there.  I have a D parsing tool that uses lex as its lexer; basically, lex looks for all of the known keywords first.  Then, any string that is not a keyword but looks like an identifier is taken as an identifier.  The problem that I get here is that my parser expects a module declaration (and, similarly, an import statement) to be a string of identifiers separated by '.' tokens.  But now I have to alter the parser so that it will also handle the "complex" keyword in any of those places....in fact, I have to alter it to be able to hand just about any D keyword.  That makes the parser much harder to write.
> 
> My request: Can we ban this?
> 
> Russ

I don't know exactly what tool you're building the parser for, but a workaround at least regarding type keywords would be to not treat them as keywords in the first place - I don't think there's anything in the syntax that actually requires them to be keywords (you can alias them anyway, so everything that works on those keywords must also work on generic identifiers)


xs0