I am thinking about doing something with Domain Specific Languages for my undergraduate project. My one issue is I can not really find any interesting good examples will be able to root around in. Does anybody have good good examples of DSELs (ideally free)?
Also, an area I would like to take a look at is fixing/addressing concurrency problems (coroutines etc) with DSEL's. What are the good good examples that anybody uses of the in DSELs? If this sounds like a stupid use of DSELs please explain why...
Another potential area to understand more about would database programming. Again is a stupid area to understand more about with DSEL's. For instance, would adding some crazy database manipulation syntax to C# say be considered a good project to attempt?
EDIT: General languages I'd be searching at applying in could be Java, Python, Scala, C# etc. Most likely not C++ or C.
Unrelated to concurrency, but very helpful take root Prolog implementations, you will find lots of them for Plan, Lisp and Clojure. Parsing eDSLs have been pointed out already - as well as their patriarch Parsec certainly worth digging into.
EDIT: together with your listing of implementation languages you are missing probably the most interesting eDSL possibilities. Probably the most effective and versatile eDSLs are created with metaprogramming. Scala-style (as well as Haskell-style) eDSLs derive from high order functions, i.e., on small-interpreters. They are more difficult in design, a smaller amount flexible and restricted to the syntax of the host language.
boost::spirit if you are after C++ is definitely an interesting example. Quote:
Spirit is some C++ libraries for parsing and output generation implemented as Domain Specific Embedded Languages (DSEL)...
(I've no clue that which you mean by "fixing concurrency" though. I do not see the best way to solve "concurrency problems" generally, or the way a DSEL may help.)