Добавить пользовательский язык, определенный в OCaml, в Monaco Editor. - PullRequest
3 голосов
/ 04 апреля 2020

Я уже написал нетривиальный пользовательский язык в 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?

...