>"Bill Baxter" <wbax...@gmail.com> wrote in message >news:mailman.337.1258023453.20261.digitalmars-d-annou...@puremagic.com... >Hi Nick, > >Thanks for the response. More below. > >However, the unescape() function used in traceVal looks like it might >be a useful CTFE example. Some kind of compile-time string >escaping/unescaping could definitely be a good example.
Heh, I tend to forget about that one. That's from the "semitwist.util.text" module, which I haven't worked with much in a long time, so there's probably a lot of WTFs spread through the module, and if you use something there as an example, you might need to clean it up a little. FWIW, that double-quote-string escaping/unescaping is built around ctfe_substitute which is in "semitwist.util.ctfe" (although Tango might have something similar by now). >> [various] > >This is another one that C++ people would just throw macros at and >wonder what the big deal is. Ah, yea, good point. Of course, we'd probably all take D's metaprogramming over preprocessor macros anyday, but I can definitely see their point. >> === Compile-time checking on types with non-identifier strings === > >That is kinda neat, I suppose you could even extend that to make the >list of valid tokens be a template parameter (either variadic, or >separated by some delimiter in one big string that then gets broken up >at runtime). I guess you could pitch this as a baby step towards the >full-fledged compile-time parser. Step 0 recognize valid tokens. > Interesting idea, yea. Might not be much help for the lib as I currently have it though, since I'm just spitting out the static-style language definitions from a tool that takes in a grammar and generates D code. Certainly something to keep in mind for future expansion though. >Thanks for writing all these up. No prob! :)