Paradox about D's popularity.

Regan Heath regan at netmail.co.nz
Thu Sep 22 02:47:27 PDT 2011


On Wed, 21 Sep 2011 22:33:06 +0100, Dmitry Olshansky  
<dmitry.olsh at gmail.com> wrote:
> On 22.09.2011 1:14, Gor F. Gyolchanyan wrote:
>> I had an idea of a D library for including C headers for a while now.
>> All i need is to make a compile-time C parser for that. This thing  
>> would literally
>> remove any need for binding.
>
> Translating header file is a one-time job, as in
> sh-$: translate fancy.h fancy.di
>
> Why would you need to do it at compile time, except because it's fancy  
> :), I don't quite get.
>
> And, as much as I'm sorry to bring bad news, you'd have to make a C  
> preprocessor as well (or even in the first place). Then you'd have to  
> struggle through vendor extensions but that's doable.

At one time (2+ years back) I started writing a C lexer, and then C  
preprocessor in D.  In part to learn about how compilers work and in part  
to convert C headers to D (there was no .di at that stage) so I could  
interface C.  The lexer was no trouble, I even managed to make it flexible  
by having it read a C grammar file but when I got to the preprocessor I  
lost steam/momentum and it all fell by the way side.

Something I discovered, which may help bootstrap your plans, is that most  
C compilers will preprocess source for you and give you the resulting  
stream of text, which you can then lex/parse/etc.  However, this results  
in the C compiler processing macros and following includes, which you  
often don't actually want it to do - as you're likely trying to replicate  
the file tree (so want to see includes) and trying to replace macros with  
CTFE or similar.

So, perhaps a combined approach, tame a compiler and have it preprocess a  
file at a time and then use that output, plus the original file to produce  
some D replacement code.. not sure if that would work but it might be  
worth investigating.

R


-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d mailing list