【问题标题】:Intellisense from PEG (Parsing expression grammar)来自 PEG 的智能感知(解析表达式语法)
【发布时间】:2014-09-02 05:44:27
【问题描述】:

如果有人问过这个问题,我提前道歉。 我有一种由语法定义的语言,我想知道人们如何为他们的自定义语法实施 Intellisense。这对我来说似乎是机械的;用户输入一些内容,然后将其馈送到生成的解析器并提供 keyword 建议。我猜解析将需要修改,以便它是增量的而不是一次性的,即生成的解析器。

我是这个领域的新手,所以欢迎任何提示。

我打算使用http://pegjs.majda.cz/,但任何事情都可以。

【问题讨论】:

  • 首先要提到的是 PEG.js 绝不是增量解析器。其次,我编写了一个受 PEG.js 启发的库,并且我目前在发布之前用特性来饱和它。增量解析是一个艰难的时刻,所以我去谷歌搜索更多信息。最后,查看 CodeMirror 的示例。您正在寻找的东西绝对以一种直接的方式实现:在每次编辑时解析代码,将某种类型的所有标识符保存到数据结构中(如果您没有语言中的对象,则为数组),查找。

标签: javascript parsing peg


【解决方案1】:

有一个codemirror grammar add-on 我为一些需要各种自定义语言的语法高亮的项目编写的。

为任何语言定义 JSON 格式的语法(或变体,因为 json 语法可以扩展其他 json 语法),并且插件会自动创建一个代码镜像解析器,其中可以包括语法部分和语法错误、自动完成等

live example here

注意:插件中使用的 json 语法格式在许多方面类似于 PEG 语法形式(可能有更多选项)。但主要用于生成语法高亮解析器。该项目正在发展,未来可能会添加更多选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2010-09-09
    • 2021-10-18
    • 2019-01-13
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多