我已经在 OCaml 中编写了一个重要的自定义语言。我知道这种方式纯粹是在 JavaScript中让 Monaco Editor 注册一种新语言。但是,我不知道在摩纳哥编辑器中注册时如何利用 OCaml 中定义的语言。
例如,我们已经在 OCaml 中定义了令牌,我们怎么能不在里面重新定义这些令牌monaco.languages.setMonarchTokensProvider
呢?
我在这里做了一个小例子:https ://github.com/chengtie/mylang-monaco-editor 。在OCaml中定义了一种非常简单的语言mylang/
,其中有INT
和BOOL
。在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?