I have my undergraduate final year project coming up and am very interested in lexers, parsers, compilers and so on. I would like to use the DLR (.NET 4.0 dynamic language runtime) for my undergraduate final year project, but am struggling to find a reason to use it!

A domain specific language would be an idea, but most of the domains I can think of have already been done. A possibility was a primarily semantic web focused triple store query language similar to SPARQL, but the domain is rather complicated and the query engine would take quite a while to write and optimise.

I am also thinking about different programming paradigms, particularly higher level ones such as array/collection programming languages rather than scalar. A language which is less specific in terms of the domain, but with which it is 'easier to process X, which is commonly used or dealt with in situation Y' would be interesting.

Another approach would be to attempt to port an existing language (or at least part of it, time permitting) to the DLR. Preferably not APL or Perl - I'm not a masochist. Edit: To clarify, by 'Port' I mean host an existing language on the DLR, such as IronJS, IronPython, IronRuby, etc.

Does anyone have any ideas for a domain specific language, preferably but not necessarily suitable for the DLR?

  • What domains did you think of that already had DSLs? Maybe those DSLs could use improvements, or better/newer/updated/enhanced implementations? – FrustratedWithFormsDesigner Sep 7 '11 at 13:54

The Lisp/Scheme family of languages are very nice to play with in terms of parsing, compilation, interpretation, etc...

  • I have heard that, a coworker wrote a lisp interpreter and was quite pleased with it. I have no experience with lisp/scheme although I could look into it. There is a Scheme C# DLR implementation it seems: ironscheme.codeplex.com – Joshua Smith Sep 7 '11 at 18:57

Not sure what a DLR port is (so can't help there)...

But I always thought that a drum machine would make a fun domain specific language - perhaps just for the snare drum for a marching band.

The reason is that drum rudiments can often be more conveniently spoken in words (with specific names) rather than written down on sheet music.

So for example, a mini-language that went something like as follows would be fun,

bar bar1 : flam tap for 2 beats, quater rest, 9-stroke roll.
bar bar2 : swiss army triplet for 4 beats.
rythm r1 : (bar1, bar2) repeat 10 at 130 beats per minute.
save r1 as "my_beat.wav".

or what have you.

Scope to make it as easy or difficult as you like....

  • I think "DLR port" is porting a language to .NET's Dynamic Language Runtime. – FrustratedWithFormsDesigner Sep 7 '11 at 14:06
  • Perhaps this could be implemented on top of ChucK. :) – Steven Jeuris Sep 7 '11 at 14:10
  • @Stephen Cool! Not seen that one! I agree with Joshua - all the domains I can think of do already have a language! – Tom Sep 7 '11 at 14:15
  • Thanks Tom! I clarified porting in the question - I meant host an existing language on the DLR, such as IronJS, IronPython, IronRuby, etc. You have an interesting idea! I suppose it'd have a library of standard rudiments and the ability to programmatically define new ones, along with a way to group sets of them together, a sort of macro/function I suppose. Hmm... – Joshua Smith Sep 7 '11 at 18:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.