DIP16: Transparently substitute module with package

Michel Fortin michel.fortin at michelf.com
Wed Apr 4 17:13:36 PDT 2012


On 2012-04-04 17:53:24 +0000, "Steven Schveighoffer" 
<schveiguy at yahoo.com> said:

> But yes, I think the issue really becomes, we need to  look at context 
> when deciding the semantic meaning of a symbol.  I don't  think this 
> violates the context-free grammar, because wouldn't this only  come 
> into play at the semantic level?  Not a compiler writer/hacker, so I  
> don't know.

You'd need a whole lot of context.

Let's say I write:

	.a.b.c.d = .e.f.g.h;

Can you tell me which letters are the name of a package/module, and 
which are the name of something else? It could be this:

	module a.b;
	struct c { static int d; }

	module e.f.g;
	int h;

or it could be this:

	module a;
	struct b { struct c { struct d { static void opAssign(int); } } }

	module e;
	struct f { enum g { h = 1 } }

or a multitude of other variants. If you can't know by looking at the 
assignment above, how will the parser know?

Fully qualified names really need to refer to a single thing.


>> Say you wanted to create a package.d file directly for the whole 
>> package  std, what should be done for those?
> 
> No, let's not do that.  Ever. :)

Phobos is just an example. People will want to use "package.d" files 
for their own libraries too, and will complain if it doesn't work.


-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list