views:

204

answers:

1

Aside from C#, VB.NET, C++ (Managed and C++/CLI), and F#, which .NET programming languages have their own CodeDom provider?

+1  A: 

I thought about making one for UnrealScript, but I run into odd issues like the fact that CodeBinaryOperatorType doesn't include an exclusive-or operation. The new expression trees in .NET 4 seem like a much better representation of what features the CodeDom should offer at a block level (as in a block of statements that makes up a function body).

I think we need a new CodeDom that takes the outer portions of System.CodeDom and uses the internals of System.Linq.Expressions. Then make the result able to produce either a dynamic assembly or source code as output. (Now that I think about it, producing a compiled assembly would actually be the same as creating a new "language" to output source to.)

Edit: On top of that, you also have to consider implementing the CodeModel API, since very often the CodeDom is implemented as someone is integrating a new language into Visual Studio.

280Z28
During the last Lang.NET symposium one of the language creators complained about something similar and the Microsoft engineer responded (only half joking): "CodeDom can represent any language as long as it is C#." He basically admitted that CodeDom is a failure and that Expression Trees (or rather "Statement" Trees) are the way forward.
Jörg W Mittag