Я уже написал нетривиальный пользовательский язык в OCaml. Я знаю таким образом, только в JavaScript, чтобы Monaco Editor регистрировал новый язык. Однако я не знаю, как использовать язык, определенный в OCaml, при его регистрации в Monaco Editor.
Например, мы уже определили токены в OCaml, как мы можем не определять эти токены снова внутри monaco.languages.setMonarchTokensProvider
?
Я приведу небольшой пример: https://github.com/chengtie/mylang-monaco-editor. Очень простой язык определен в OCaml в mylang/
, где есть INT
и BOOL
. В example/index.js
у нас есть следующий код для расширения Monaco Editor и для подсветки c. Я чувствую, что не стоит определять эти токены дважды.
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?