C# 如何创建在VisualStudio中使用的新语言
我想编写一种新的模板语言,我希望VisualStudio“支持”它。我需要知道的是:C# 如何创建在VisualStudio中使用的新语言,c#,visual-studio,parsing,languageservice,C#,Visual Studio,Parsing,Languageservice,我想编写一种新的模板语言,我希望VisualStudio“支持”它。我需要知道的是: 如何解析我的新语言? 给定我的新模板语言中的一些代码,如何将其转换为HTML?现在我正在使用正则表达式逐个标记地解析它,但我认为这不会很好地扩展,因为语言变得更加复杂,并且没有错误检查。我听说过ANTLR,但从未使用过。这是适合这项工作的工具,还是有更简单的方法?理想情况下,我希望像其他语言一样,用尽可能多的信息(行#,错误类型)将任何语法错误发送到错误窗口 如何为Visual Studio创建新的文件类型?
给定我的新模板语言中的一些代码,如何将其转换为HTML?现在我正在使用正则表达式逐个标记地解析它,但我认为这不会很好地扩展,因为语言变得更加复杂,并且没有错误检查。我听说过ANTLR,但从未使用过。这是适合这项工作的工具,还是有更简单的方法?理想情况下,我希望像其他语言一样,用尽可能多的信息(行#,错误类型)将任何语法错误发送到错误窗口
我可以使用我在步骤1中创建的相同解析器,还是完全不同
我更喜欢用C#编写解析器。我想看看另一种已经完成了与visualstudio集成工作的语言。Boo就是一个很好的例子。语言和VisualStudio的集成是开源的。所以你可以看看他们到底要做什么
- Boo语言:
- VS2010(VSX加载项)的Boo语法突出显示:
- Boo语言工作室(VS2008语法突出显示):
- VS2010中关于“分类”(语法高亮)的精彩文章:
- VSX加载项示例:
和一个代码示例 关于解析,有很多技术,我不会提供意见/建议 请注意,这涉及到相当多的工作,尽管在我看来,在VS2010中提供这种扩展要比在以前的Visual Studio版本中简单得多 另见
VS SDK中有一个示例,显示了您正在寻找的大多数功能 我以本文为基础编写了一个VS语言服务:
如果你对语法有一个基本的掌握,那也不算太糟糕 我发现这是Visual Studio 2013 SDK最新示例的非常有用的集合: 它还包含OokLanguage的最新版本,听起来很有希望
我们使用ANTLR4解析我们的语言,它的工作方式很有魅力,允许与C代码直接交互。我完全可以推荐它。我用自己的语言使用VS,迫切需要一个语法突出显示。我根据本教程构建了我的:
我知道教程在VS2010中。我在VS2012做的,没有或非常小的打嗝。(也曾在VS2013工作)最近我改为VS2015,解决方案可以编辑,构建没有问题。如其他答案中所述,最有趣的代码示例是最新版本的Visual Studio(在撰写本文时为2017) 关于VS 2015,请参见
为了安装2015年或更高版本的SDK,您需要重新运行VS安装程序。2015年,它被称为“Visual Studio扩展性工具更新3”。很遗憾,他没有继续那个教程……那是一个非常好的教程。谢谢它真正缺少的是下一步,安装软件包。