La libreria Mono.Cecil è quasi quello che vuoi. È open source, il linguaggio è astratto e, come bonus, è super lucido, veloce e stabile.
Ma non è esattamente quello che vuoi perché Cecil non analizza il codice sorgente C#, VB.NET o F #, ma analizza i file degli assembly (dll ed exe) e il codice IL contenuto negli assembly. Per molte aree di analisi statica sarebbe sufficiente, ma per una propagazione costante (suppongo si intenda una costante letterale come const string STR = "MyString";
o const int INT = 12345;
) c'è una perdita di informazioni in fase di compilazione poiché il valore costante è codificato al posto dell'uso costante. Cecil non è adatto per l'analisi Abstract Syntax Tree.
Puoi anche guardare Microsoft Roslyn. Contrariamente a Cecil, Roslyn analizza il codice sorgente C# e VB.NET, è molto adatto per l'analisi Abstract Syntax Tree, ma non è open source, non supporta F #, ed è certamente soggetto a modifiche finché non diventerà RTM, io dire l'anno prossimo con Visual Studio 2014, (ma questa è solo una mia ipotesi).
fonte
2013-08-27 17:33:32
Insistete sull'open source? –