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

2024-01-12

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

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

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


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

https://github.com/boo/boo-lang https://github.com/boo/boo-lang

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建在 Visual Studio 中使用的新语言 的相关文章

随机推荐

  • 选择文件夹对话框 WPF

    我开发了一个 WPF4 应用程序 在我的应用程序中 我需要让用户选择一个文件夹 应用程序将在其中存储某些内容 文件 生成的报告等 我的要求 能够查看标准文件夹树 能够选择文件夹 WPF 外观和感觉 此对话框必须看起来像为 Windows V
  • 在 R 版本 3.0.2 上安装 Rtools

    我已经安装了devtools对于 R 但是当我使用以下命令调用库时 library devtools 我得到以下输出 WARNING Rtools is required to build R packages but is not cur
  • 使用vba将文件从一个文件夹复制到另一个文件夹

    我知道有一些关于这个主题的类似帖子 但是 我有一个与我在这里看到的所有代码 在谈论这个主题时 不同的代码 我收到的错误是找不到该文件 但这是不可能的 因为我正在 fso CopyFile 中用作 SOURCE 的同一文件夹中搜索文件 所以我
  • C# Winform 关闭程序后进程仍在Windows任务列表管理器中

    为什么关闭程序后该进程仍在Windows任务列表管理器中 我使用登录Form cs STAThread static void Main Application EnableVisualStyles Application SetCompa
  • 我可以从同一解决方案中的不同项目访问另一个项目的嵌入式资源吗?

    我有一个 xml 文件 它作为 Project A 中的嵌入资源 我想从引用 Project A 的 Project B 访问此嵌入资源 基本上 Project B 由单元测试组成 我使用 ReSharper 运行它们 当我在 Projec
  • Python可写缓冲区/内存视图到数组/字节数组/ctypes字符串缓冲区

    Problem 固定大小记录的二进制数据 想要使用struct unpack from和struct pack into来操作二进制数据 不需要数据副本 想要内存中的多个视图来简单地抵消计算等 数据可以位于 array array byte
  • scp通过ssh隧道打开

    我想从已与服务器打开反向隧道的计算机发送文件 反向隧道将计算机上的端口 22 与服务器上的端口 2222 连接 autossh M 0 q f N o ServerAliveInterval 120 o ServerAliveCountMa
  • @AttributeOverride 不适用于继承

    我正在尝试更改子类表中的列名 但 AttributeOverride 注释并未更改它 Entity Table name emp Inheritance strategy InheritanceType TABLE PER CLASS pu
  • 如何删除单击 uib-accordion-heading 时出现的蓝色边框?

    我已尝试以下问题中提出的解决方案但无济于事 从 Chrome 中的 css 自定义样式按钮中删除蓝色边框 https stackoverflow com questions 20340138 remove blue border from
  • 使用 rsync+ssh+公钥作为与 ssh 密钥所有者不同的用户同步本地和远程目录

    目标是通过 ssh 同步本地和远程文件夹 我当前的用户是user1 并且我通过 ssh 对服务器进行了无密码访问设置server1 我想将本地文件夹与上的文件夹同步server1借助于rsync公用事业 通常我会运行 rsync rtvz
  • MergeLatest 的默认值

    官方文档 https doc akka io docs akka current stream operators Source or Flow mergeLatest html of MergeLatest状态 MergeLatest 为
  • QueryPerformanceCounter 和溢出

    我正在使用 QueryPerformanceCounter 在我的应用程序中进行一些计时 然而 运行几天后 该应用程序似乎停止正常运行 如果我只是重新启动应用程序 它就会再次开始工作 这让我相信我的计时代码存在溢出问题 Author Rya
  • 将 CopyPlugin 添加到 next.config.js

    我想将以下内容添加到我的 webpack 配置中 module exports otherConfig plugins new CopyPlugin from node modules pdftron webviewer public to
  • 将字符串转换为数组 - PostgreSQL

    我在表中有一列存储用逗号分隔的名称 例如 Mel s Hou Rest Mel s Lad Rest 我需要的是将这个字符串转换为以逗号分隔的数组 我需要的查询是 SELECT home location subs state FROM c
  • 如果有焦点组件,则不会执行场景的 JavaFX 按键事件

    我有一段代码可以在按下某个键时执行某些功能 scene setOnKeyPressed event gt if event getCode KeyCode F1 doSomething 它可以工作 但前提是没有焦点组件 例如按钮或文本字段
  • RxJava doOnError 与 onError

    我尝试使用以下代码 initLocalSettingsIfNeed andThen initGlobalSettingsIfNeed configuration doOnComplete callback onSuccess doOnErr
  • Android应用程序图标随运行时变化

    在我的应用程序中 我想显示应用程序的不同图标 应根据场景进行更改 例如 它将标记任务完成的剩余天数 在 Android 菜单上 此图标将显示剩余天数 如果有人对此有任何想法 我将不胜感激 谢谢 实际上有很多方法可以实现这一目标 如果你最近注
  • 来自 SVN 存储库的 Maven 依赖项

    使用maven 2 有没有办法列出对另一个maven项目的依赖关系 该项目位于不同的SVN服务器上但不在maven存储库上 理想情况下 应该可以编译和运行主项目 而无需手动签出和构建依赖项 使用maven 2 有没有办法列出对另一个mave
  • 从存储过程批量复制

    我的数据库中有表 A B 和 C 我必须将A和B得到的结果放入表C中 目前 我有一个 SP 它将 A 和 B 的结果返回到 C 应用程序 该结果将使用 System Data SqlClient SqlBulkCopy 复制到表 C 中 优
  • 如何创建在 Visual Studio 中使用的新语言

    我想编写一种新的模板语言 并且希望 Visual Studio 支持 它 我需要知道的是 我如何解析我的新语言 给定我的新模板语言中的一些代码 如何将其转换为 HTML 现在我正在使用正则表达式逐个标记地解析它 但我认为随着语言变得更加复杂