如何创build一个新的语言在Visual Studio中使用

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

  1. 我如何parsing我的新语言?
    鉴于我的新模板语言的一些代码,如何将其转换为HTML? 现在我正在使用正则expression式来通过标记来parsing它的标记,但是我不认为这会随着语言变得更复杂而变得非常好,并且没有错误检查。 我听说过ANTLR,但从来没有使用它。 这是否是这个工作的正确工具,还是有可能简单些? 理想情况下,我想发送任何语法错误到错误窗口尽可能多的信息(行#,错误types)像其他语言一样。
  2. 如何为Visual Studio创build新的文件types?
  3. 我如何获得语法突出显示?
    我可以使用在步骤1中创build的parsing器,还是完全不同?
  4. 我如何获得智能感知?

我宁愿在C#中编写我的parsing器。

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

  • Boo语言: https : //github.com/boo/boo-lang
  • Boo语法高亮VS2010(VSX加载项): http : //vs2010boo.codeplex.com/
  • Boo Language Studio(VS2008语法突出显示): http : //boolangstudio.codeplex.com/

VS2010的Boo语法高亮显示在其主页上包含一些推荐链接,我将复制它们以便于参考:

  • 关于VS 2010中“分类”(语法高亮)的好文章: http ://dotneteers.net/blogs/divedeeper/archive/2008/11/04/LearnVSXNowPart38.aspx
  • VSX加载项示例: http : //blogs.msdn.com/vsxteam/archive/2009/06/17/new-editor-samples-for-visual-studio-2010-beta-1.aspx

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

有关介绍, 请参阅这篇文章
对于代码示例, 请参阅此处

关于parsing,有很多技术,我不会提供意见/build议。

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

也可以看看

Visual Studio 2010 Extensibility,MPF和语言服务

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

如果你有一个基本的语法句柄,那也不错。

VS SDK中有一个示例,显示了您正在查找的大部分function。

我用自己的语言使用VS,拼命地需要语法高亮 。 我根据这个教程构build了我的: https : //mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/

我知道这个教程是在VS2010中。 我在VS2012做了我的,没有或很小的打嗝。 (也在VS2013工作)最近我更改为VS2015和解决scheme可以编辑,没有问题。

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

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

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

正如其他答案中提到的,最有趣的代码示例是最新版本的Visual Studio(2017在撰写本文时)的Ook语言扩展 。

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

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