2011-10-30 99 views
4

我想編寫一些簡單的腳本來解析C#代碼並修改它或mayby開始,然後抽出一些有趣的部分。在腳本語言中解析C#

是否有任何庫,例如。 Python,要做到這一點?我知道有幾個庫(在NRefactor中有從C#構建AST的東西),但是我想要一些腳本語言 - 解析和構建AST或類似的東西。

+0

你可以用Python構建一個解析器。但是C#並不完全是一種簡單的語言(例如上下文關鍵字),並且可能屬於「重構」的很多步驟都會從代碼的進一步理解(例如類型信息)中受益。所以你最好的選擇可能是試圖重新使用現有的解決方案。 – delnan

+5

您可能想看看Roslyn CTP http://blogs.msdn.com/b/csharpfaq/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx。它渴望成爲一個API來完成你所描述的內容。 – driis

+1

您應該可以毫無問題地使用IronPython的NRefactory。 – svick

回答

0

我不知道這是否存在Python。我也不理解你的「腳本」語言限制; Python是一種完整的語言。

我們的DMS Software Reengineering Toolkit及其C# Front End可以解析包括C#4.0在內的各種方言中的C#,構建AST,以及從這些AST中恢復有效的C#代碼。

DMS設備將允許您使用DMS的「腳本」語言PARLANSE以程序方式訪問/檢查/修改AST。或者,您可以使用DMS應用pattern-directed source-to-source program transformations直接使用C#語法編寫的功能來幫助您更方便地更改AST。

+0

我需要一個簡單的工具來創建可以在IDE(例如VisualStudio)中運行的快速腳本,例如根據公司的慣例重構一些少量的代碼。而現在這個約定經常變化,這些工具可能會加速整個過程 – Simon

+0

我懷疑你會得到「簡單」工具來「重構」代碼。代碼是複雜的,語義必須被理解和保存。 –