3

我已经在 OCaml 中编写了一个重要的自定义语言。我知道这种方式纯粹是在 JavaScript中让 Monaco Editor 注册一种新语言。但是,我不知道在摩纳哥编辑器中注册时如何利用 OCaml 中定义的语言。

例如,我们已经在 OCaml 中定义了令牌,我们怎么能不在里面重新定义这些令牌monaco.languages.setMonarchTokensProvider呢?

我在这里做了一个小例子:https ://github.com/chengtie/mylang-monaco-editor 。在OCaml中定义了一种非常简单的语言mylang/,其中有INTBOOL。在example/index.js中,我们有以下代码来扩展 Monaco Editor 并实现基本的突出显示。我觉得两次定义这些标记并不好。

monaco.languages.register({ id: 'mySpecialLanguage' });

// Register a tokens provider for the language
monaco.languages.setMonarchTokensProvider('mySpecialLanguage', {
  tokenizer: {
    root: [
      [/[0-9:]+/, "INT"],
      [/FALSE|TRUE/, "BOOL"],
    ]
  }
});

// Define a new theme that contains only rules that match this language
monaco.editor.defineTheme('myCoolTheme', {
  base: 'vs',
  inherit: false,
  rules: [
    { token: 'INT', foreground: '008800' },
    { token: 'BOOL', foreground: 'ff0000' },
  ]
});

有谁知道如何将 OCaml 中定义的语言链接到 Monaco Editor?

4

0 回答 0