【问题标题】:Monaco Editor Monarch: Tokenizing ParenthesesMonaco Editor Monarch:标记括号
【发布时间】:2021-11-25 19:25:18
【问题描述】:

我遇到了 MonarchTokensProvider 的问题。在我的应用程序中,我正在编写一些自定义自动完成功能,并且需要能够识别开/关括号。

因此,我希望标记器将 '()' 标记为 '(', ')'。但是,使用 monaco 的默认设置,彼此相邻的括号会组合在一起。

monaco-editor 版本: 0.30.1 浏览器: Firefox、Chrome、Safari 操作系统: MacOS 重现问题的 Playground 代码: 看: https://microsoft.github.io/monaco-editor/monarch.html

  • 按 F1 并选择“开发人员:检查令牌”。
  • 将光标移动到'main()' 的括号中。看到 '()' 被列为单个标记。

有人知道我需要为括号使用的正则表达式吗? 总的来说,我只看到过这个被使用

      // delimiters and operators
      [/[{}()\[\]]/, '@brackets'],

【问题讨论】:

    标签: tokenize monaco-editor


    【解决方案1】:

    您可以指定要解释为您想要的任何 monarch 标记器类:

    // [/[{}()\[\]]/, "@brackets"],
    [/\(/, "openingparenthesis"],
    [/\)/, "closingparenthesis"],
    [/{/, "openingcurlybrace"],
    [/}/, "closingcurlybrace"],
    [/\]/, "openingbracket"],
    [/\[/, "closingbracket"],
    

    【讨论】:

    • 仍然存在一个问题(即使使用这种方法),相同的括号被分组为单个标记,例如“)))” - 将被计为一个标记。
    • 那么我不认为 Monarch 标记器可以让你实现你想要的。如果我正确理解它是如何工作的,具有相同名称的连续标记将在最终标记化中组合在一起。
    • 是的,我得出了同样的结论。我采用的解决方案是使用自定义代码拆分这些令牌。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多