On Tuesday, 22 May 2012 at 16:55:46 UTC, Dmitry Olshansky wrote:
On 22.05.2012 20:47, Roman D. Boiko wrote:
On Tuesday, 22 May 2012 at 16:03:49 UTC, Dmitry Olshansky wrote:
In my mind it's encountered rather soon:

lex/scan -> postprocess (may be combined with lex) -> populate symbol tables (ditto - with next step/previous step) -> parse to AST -> ... That symbol table should contain all of the rich hierarchy of modules. That is the actual compiler is able to have a single stack of scopes that it pushes/pops as it processes code. Your DCT on the other hand
should have all of local scopes (of every entity) at once.

It may be possible to simulate it with some deal of laziness, but I guess keeping the whole symbol table is the easiest and the fastest
way still.
And likely the only feasible in D. It doesn't support lazy evaluation for immutable data structures, and immutability is necessary for most
use cases.

Watch out for some mind-bending data structures :)
Do you mean not to overcomplicate? Or use classic data structures? Or
something else?

Prefer simple for prototype. Good old nested hash table is fine for starters.
Unfortunately, hash tables don't play nicely with immutability of data - although interface could be restricted to prevent mutation, they would not be able to reuse memory space, and thus would require copying.


So far I think immutable red-black trees will be central in DCT
architecture, as well as some others.

Cool ;) Though why not Tries then if the data is immutable?

Those too :) For different purposes than the former.

Reply via email to