I've also been interested in DSLs and found some very cool code samples implementing an EDSL (embedded DSL) for describing shapes. I have looked at it countless of times for ideas when I'm writing my own. Although the code is in Haskell I think you can learn a thing or two from it.
http://www.cs.chalmers.se/Cs/Grundutb/Kurser/afp/lectures.ht...