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


102

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

  1. 如何解析我的新语言?
    给定我的新模板语言中的一些代码,如何将其转换为HTML?现在,我正在使用正则表达式逐个标记地解析它,但是随着语言变得越来越复杂,并且没有错误检查,我认为这不会很好地扩展。我听说过ANTLR,但从未使用过。那将是完成这项工作的正确工具,还是可能更简单?理想情况下,我想像其他语言一样,将语法错误发送到错误窗口,并提供尽可能多的信息(行号,错误类型)。
  2. 如何为Visual Studio创建新的文件类型?
  3. 如何获得语法突出显示?
    我可以使用在步骤1中创建的相同解析器,还是完全不同?
  4. 如何获得Intellisense?

我更喜欢用C#编写解析器。

Answers:


62

我来看看另一种已经完成与Visual Studio集成的工作的语言。嘘就是一个很好的例子。语言和Visual Studio集成是开源的。因此,您可以确切地了解他们的工作。

VS2010的Boo语法突出显示在其主页上包含一些推荐的链接,我将其复制以方便参考:


29

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

有关介绍,请参见本文;
有关代码示例,请参见此处

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

请注意,要进行大量工作,尽管在我看来,VS2010中提供这种扩展的方法比以前版本的Visual Studio更直接。

也可以看看

Visual Studio 2010可扩展性,MPF和语言服务



2

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




0

如其他答案所述,最有趣的代码示例是Visual Studio最新版本(在撰写本文时为2017年)的Ook语言扩展

对于VS 2015,请参阅VS2015分支中示例

为了安装2015年或更高版本的SDK,您需要重新运行VS安装程序。在2015年,它称为“ Visual Studio扩展工具更新3”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.