是否存在用于解析/自动完成特定于域的语言的javascript框架?

是否存在用于解析/自动完成特定于域的语言的javascript框架?,javascript,parsing,dsl,Javascript,Parsing,Dsl,我有一个特定领域语言的语法,我需要为该语言创建一个javascript代码编辑器。有什么工具可以让我生成 a) javascript增量解析器 b) javascript自动完成/自动建议引擎 谢谢 您可能需要一个js解析器生成器。在自动完成/自动建议方面,我知道大部分内容都是基于单词完成而不是代码完成。但是一旦你有了一个解析器,我不认为这部分太难了。这很难。我自己也在做同样的事情 一种方法是: 您需要一个解析器,它将为文本提供一个当前可能的AST数组,直到标记位于当前光标位置之前 从这里可以看

我有一个特定领域语言的语法,我需要为该语言创建一个javascript代码编辑器。有什么工具可以让我生成 a) javascript增量解析器 b) javascript自动完成/自动建议引擎


谢谢

您可能需要一个js解析器生成器。在自动完成/自动建议方面,我知道大部分内容都是基于单词完成而不是代码完成。但是一旦你有了一个解析器,我不认为这部分太难了。

这很难。我自己也在做同样的事情

一种方法是:

您需要一个解析器,它将为文本提供一个当前可能的AST数组,直到标记位于当前光标位置之前

从这里可以看到下一个标记可以是多种类型(通常只有一种),并根据部分文本完成

如果我的增量解析器能够正常工作,我会发送一个链接

祝你好运,如果你找到这样的包裹,请告诉我


Chris.

实现内容辅助的示例(自动完成) 使用Javascript解析DSL:

Chevrotain专门用于构建编辑器/IDE中使用的语言服务工具(作为其一部分)的解析器。 一些相关功能包括:

  • 自动错误恢复/容错,因为编辑器和IDE需要能够处理“大部分有效”的输入
  • 每个语法规则都可以用作起始规则,因为编辑器/IDE出于性能原因可能只希望实现增量解析

您能否提供一些提示,说明如何使用jison提供上下文相关的单词补全功能?比如以SQL为例:CREATE(ctrl+space)应该显示TABLE等等。解析(即使有错误恢复)是必要的,但还远远不够。因此,解析框架永远不足以解决这个问题。请参阅解析后的生活:提供的示例中的解析器收集语法信息和上下文,以便在单独的步骤中进一步处理。语义内容辅助与解析分开执行。解析库/框架确实不足以为编辑器/IDE构建语言服务。我将编辑我的帖子,使它更清楚雪佛兰被设计为一个工具链的一部分,为建设编辑。这并不是一个完整的解决方案。