2011-05-10 37 views
4

我想實現另一個調試(語言)(它只是學術原因,以便它可以實現僅僅是一個語言的一部分)來編寫另一個調試器.NET。我自己想實現NS2(網絡Simlator 2)script for .NET in which anybody can write ns2 script and debug it with .NET如何使用.NET CLR

我讀this article in stackoverflow,它遠不是我要找的。

這裏是要求

  • 有一些預定義的關鍵字(例如:爲,而如果...)
  • 檢查正確的形式陳述(以下EG:對(開始,結束,計數器){commands} ...)
  • 不同顏色的不同類型的語句
  • 添加到任何IDE的能力(例如:像插件的實現或作爲DLL或...(我不知道))
  • 很多其他的東西不是必需的n流

我怎樣才能做到這一點?

更新:我不確定你是否明白我的意思,看看this,它非常接近我所尋找的。

+0

@BoltClock,據我所知,這只是出於學術原因,我可以忽略它的某些部分(包括硬性部分),我只想從用戶那裏獲得一些輸入並用clr進行編譯|調試。這真的很難嗎? – 2011-05-10 04:15:05

+0

由於完全不同的原因,在這裏得到了同樣的血腥問題。我想附加爲調試器並等待未處理的異常,並在進程狀態消失之前對其進行一些有用的處理。 – Joshua 2016-05-11 18:50:41

回答

5

這不會是一件容易的事。然而:The Dragon Book可能是一個很好的開始(假設你已經有足夠的計算機科學背景來編譯理論書籍,對你很有意義)。 Compiler Construction: Principles and Practice也是一個很好的文字。

你要編譯成CIL(通用中間語言)。方便的維基文章概述了CIL指令集。調試您的中間代碼對CLR ......嗯,這就是你所鏈接的StackOverflow的文章會派上用場=)

那將覆蓋你的第一個兩發子彈(和消耗你的生活的一大塊)。

接下來的兩個不同的問題,但最簡單的方法「讓它去」很可能是定義爲現有的文本編輯器語法,併成立了宏在程序中調用編譯器。我推薦TextPad,雖然我確信在可配置的通用文本編輯器上的意見會因社區而異;)

設計一個完整的IDE,其中包含您已經瞭解和喜歡的所有功能環境可能是一個相當的任務...或者你可以嘗試建立一個Eclipse插件。個人(假設你可以設計你的語言,並從中學到的東西),我只是堅持在TextPad語法高亮。

+1

我想你可以使用一些.NET語言編寫一個.NET應用程序,它可以充當NS2的解釋器(而不是編譯爲CIL),但仍然需要執行你的瀏覽和解析... – Joe 2011-05-10 04:26:38

1

還有就是在這方面,事實上越來越多的興趣有一個由微軟研究院的活動項目是看着這對建立一個共同的基礎設施建設進行自定義語言編譯器(和調試器)靶向.NET

http://cciast.codeplex.com/

我已經使用了自己的基礎設施而不是在編譯器技術方面的專家。希望這給你一個很好的起點,你會發現論壇討論與志同道合的人分享想法是有用的。