dmdz

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Mar 18 10:18:24 PDT 2010


On 03/18/2010 11:28 AM, Ellery Newcomer wrote:
> On 03/17/2010 08:49 PM, Andrei Alexandrescu wrote:
>> The idea is to not extract the files every time you build. If they are
>> in place already, the tool should recognize that.
>
> It does that, but on a per-file basis.

My bad for not being able to see that in the code. I read through and 
also searched for "cache", "date", "time"... couldn't find it. I now 
find it by looking for "last".

>> I'm not contending the tool is not useful. I'm just saying it is too big
>> for what it does, and that that does matter with regard to distributing
>> it with dmd.
>>
>
> I still don't see why (other than lexd.g adds ~ 10k loc just to get the
> line 'module foo.bar;' out of a source file)

If a casual user downloads the dmd distro and says, hey, let me see how 
this rdmd tool is implemented, I wouldn't be afraid. If they take a look 
at dmdz, they may be daunted.

The example you gave is perfect. Right now rdmd runs dmd -v to figure 
out dependencies, but before it was parsing the file for lines that 
begin with "import". That was problematic, so I'm glad I now use the 
compiler. Your task is much simpler - nothing is allowed before the 
module line aside from the shebang line and comments, and you should 
feel free to restrict modules to e.g. not include recursive comments or 
anything that aggravates your job.

So, I'm very glad you mentioned it: 10K of code to detect "module" is 
absolute overkill. I now confess that I couldn't figure out why you 
needed the lexer for dmdz and didn't have the time to sift through the 
code and figure that out. I thought there must be some solid reason, and 
so I was ashamed to even ask. I did know you want to find "module", but 
in my naivete, I wasn't thinking that just that would ever inspire you 
to include a lexer.

To be frank, I even think you shouldn't worry at all about "module". 
Just extract the blessed thing with caching and call it a day. I was 
also thinking of simplifying options etc. by requiring a file 
"dmdflags.txt" in the archive and then do this when you run dmd:

dmd `cat dmdflags.txt` stuff morestuff andsomemorestuff

i.e. simply expand the file in the command line. No need for any 
extravaganza. But even dmdflags.txt I'd think would be a bit much. And 
speaking of cmdline stuff, assume find, zip, etc. are present on the 
host system if you need them.

>> BTW Walter made a very nice suggestion: make a .zip file in the command
>> line be equivalent to listing all files in that zip in the command line.
>> I think it's this kind of idea that greatly simplifies things.
>>
>>
>> Andrei
>
> Fair enough.

Thank you for considering changing your program.


Andrei



More information about the Digitalmars-d mailing list