如何使用CLR编写另一个.NET调试器

Nas*_*loo 4 .net c# compiler-construction debugging clr

我想为.NET 实现另一个调试器(语言)(这只是出于学术原因,因此它只能实现一部分语言).我自己喜欢实施NS2(网络模拟器2)script for .NET in which anybody can write ns2 script and debug it with .NET

在stackoverflow中阅读了这篇文章,它远非我正在寻找的东西.

这是要求

  • 有一些预定义的关键字(例如:for,while,if ......)
  • 检查语句的正确形式(例如:for(start; end; counter){commands} ...)
  • 不同类型的陈述的不同颜色
  • 能够添加到任何IDE(例如:像插件一样实现或作为dll或......(我不知道))
  • 许多其他现在不必要的东西

我怎样才能做到这一点?

更新:我不确定你是否明白我的观点,看看这个,它非常接近我正在寻找的东西.

Joe*_*Joe 5

这不是一件容易的事.但是:Dragon Book可能是一个很好的起点(假设你有足够的计算机科学背景来编写理论书,对你来说很有意义). 编译器构建:原理和实践也是一个很好的文本.

您将要编译为CIL(通用中间语言). 这篇方便的维基文章概述了CIL指令集.针对CLR调试中间代码......好吧,那就是您链接的StackOverflow文章将派上用场=)

这将覆盖你的前两颗子弹(并消耗你生命中的大部分).

接下来的两个是不同的问题,但"实现它"的最简单方法可能是为现有文本编辑器定义语法,并在程序中设置一个宏来调用编译器.我推荐TextPad,虽然我确信可配置的通用文本编辑器的意见会因社区而异;)

设计一个完整的IDE,其中包含您在环境中了解和喜爱的所有功能,这可能是一项非常重要的任务......或者您可以尝试构建一个eclipse插件.就个人而言(假设你可以设计你的语言并从中学习一些东西),我只是坚持使用TextPad中的语法高亮.