103

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

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

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

4

7 回答 7

61

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

VS2010 的 Boo Syntax Highlighting 在其主页上包含一些推荐的链接,我将其复制以方便参考:

于 2010-11-26T06:58:27.137 回答
29

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

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

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

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

也可以看看

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

于 2010-11-26T06:58:41.400 回答
9

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

如果您对语法有基本的了解,那还不错。

于 2011-01-13T18:03:41.977 回答
2

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

于 2010-11-26T07:01:53.723 回答
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# 代码直接交互。完全可以推荐它。

于 2014-07-15T11:05:42.247 回答
2

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

我知道教程是在 VS2010 中。我在 VS2012 中制作了我的,没有打嗝或打嗝很小。(也在VS2013中工作过)最近我换了VS2015,可以编辑解决方案,构建没有问题。

于 2015-08-11T05:54:35.727 回答
0

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

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

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

于 2017-11-11T17:01:55.577 回答