如何创建在Visual Studio中使用的新语言

时间:2010-11-26 06:46:11

标签: c# visual-studio parsing languageservice

我想写一个新的模板语言,我希望Visual Studio“支持”它。我需要知道的是:

  1. 如何解析我的新语言?
    在我的新模板语言中给出了一些代码,我该如何将其翻译成HTML?现在我正在使用正则表达式通过令牌解析它令牌,但我不认为随着语言变得更加复杂,这将无法扩展,并且没有错误检查。我听说过ANTLR,但从未使用它。这是否适合这项工作,或者是否有更简单的工具?理想情况下,我希望将错误窗口中的任何语法错误发送到尽可能多的信息(行号,错误类型),就像其他语言一样。
  2. 如何为Visual Studio创建新文件类型?
  3. 如何获得语法高亮?
    我可以使用在步骤1中创建的相同解析器,还是完全不同?
  4. 如何获得智能感知?
  5. 我更喜欢用C#编写解析器。

7 个答案:

答案 0 :(得分:62)

我会看一下已经完成与Visual Studio集成的另一种语言。一个很好的例子是Boo。语言和Visual Studio集成是开源的。所以你可以看看他们到底要做什么。

针对VS2010的Boo语法突出显示包括其主页上的一些推荐链接,我将其复制以供参考:

答案 1 :(得分:29)

关于Visual Studio方面,您需要的是“语言服务”,它是处理给定文件扩展名/类型的着色,智能感知等的实体。

对于介绍,see this article
对于代码示例see here

关于解析,有很多技术,我不会提供意见/建议。

请注意,涉及到相当多的工作,但在我看来,在VS2010中比在以前版本的Visual Studio中提供这种扩展要简单得多。

另见

Visual Studio 2010 Extensibility, MPF and language services

答案 2 :(得分:9)

我使用这篇文章作为我的基础编写了一个VS语言服务: http://www.codeproject.com/KB/recipes/VSLanguageService.aspx

如果你有一个关于语法的基本句柄,那也不算太糟糕。

答案 3 :(得分:2)

VS SDK中有一个示例,显示了您要查找的大多数功能。

答案 4 :(得分:2)

我发现这个非常有用的Visual Studio 2013 SDK最新示例集合: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

它还包含最新版本的OokLanguage,听起来很有希望。

我们使用ANTLR 4解析我们的语言,它像魅力一样工作,并允许直接与C#代码交互。完全可以推荐它。

答案 5 :(得分:2)

我使用自己语言的VS,迫切需要语法高亮。我根据本教程建立了我的:https://mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/

我知道该教程是在VS2010中。我在VS2012中制造了我的没有或非常小的打嗝。 (也曾在VS2013工作过)最近我改为VS2015并且可以编辑解决方案,没有问题。

答案 6 :(得分:0)

正如其他答案中所提到的,最有趣的代码示例是Visual Studio最新版本的Ook language extension(撰写本文时为2017年)。

对于VS 2015,请参阅sample in the VS2015 branch

要安装适用于2015或更高版本的SDK,您需要重新运行VS设置。 2015年,它被称为" Visual Studio可扩展性工具更新3"。