Name of files causes error. Why?
Jonathan M Davis
jmdavisProg at gmx.com
Thu Apr 12 10:25:59 PDT 2012
On Thursday, April 12, 2012 14:30:50 Xan wrote:
> But it's a messy limitation. Why we should have it? For C++
> compatibilities?
Messy? How so? You can't put any characters in a module name which aren't
valid identifiers. So what? Just name your module differently. Is your complaint
that you can't just rename your cpp-file.cpp to cpp-file.d, make a few tweaks to
its contents, and then have it compile as D? If that's the case, the file name
is the least of your concerns. And I don't know why else you'd care about any
"compatability" with C++ due to file names. How D interacts with C/C++ has
nothing to do with the file names of either.
Module names can end up being used inside code to fully qualify symbol names.
e.g.
std.algorithm.sort(arr);
If you could put characters in a module name which weren't valid in an
identifier, this would cause serious issues for the lexer and parser.
std.algo-rithm.sort(arr);
So, it's a very reasonable restriction that a module name be required to be a
valid identifier. And this is not unusal among programming languages with
module systems. C/C++ doesn't have such restrictions, because they had the
misfortune to choose the whole #include mess. Their choice is p probably due -
at least in part - to computing restrictions at the time which would have made
putting all of the symbols in memory too expensive, so as bad as it is, they
probably didn't have much choice, but it still has horrible problems - some of
which are listed here: http://www.drdobbs.com/blogs/cpp/228701711
D's modules are _far_ better, even if with their restrictions on file names.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list