解析C#代码来评估表达式(基本上,实现Intellisense)

时间:2010-04-22 04:08:04

标签: c# parsing intellisense lexer

我正在尝试评估C#代码,因为它被输入,想到它就好像我正在尝试编写一个IDE。

所以一个人输入代码,我想找出他刚才写的代码:

String x = "";

我现在要注册x是一种String类型。现在每次用户再次键入x,我想向他展示他可以用x做的所有事情,基本上就像Visual Studio Intellisense。

我需要一些词法分析器或解析器吗?那会更容易吗?我听说VS 2010有一些微软发布的功能。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您可以使用DLR来帮助解决这个问题。有关示例,请参阅DLRPad on codeplex

如果在CLR中使用DLR询问类型比在C#中使用反射更容易。我上次看(大约9个月前)我认为intellisense已经使用这种技术实现,因为我们将以同样的方式实现。

答案 1 :(得分:0)

如果可以的话,我会尽量避免自己写这个。 SharpDevelop是一个开源.NET IDE,具有类似Intellisense的功能。我相信你可以将他们的编辑器嵌入你自己的项目中。根据维基百科,许可证是LGPL,所以你甚至可以在闭源项目中使用它。当然,在这之前你应该自己验证一下。

Actipro SyntaxEditor是您可以购买的第三方控件。有控件的WinForms和WPF版本。它对我们来说效果很好。它目前不支持带有LINQ和lambda表达式的Intellisense。我不知道SharpDevelop是否支持这个。

答案 2 :(得分:0)

我认为.NET 4没有任何帮助。您可以查看Mono REPL。如果你提供有关你真正想做的事情的更多细节,它也可能会有所帮助。