Codemirror-грамматика, как сделать проверку ключевых слов без учета регистра - PullRequest
0 голосов
/ 15 сентября 2018

Codemirror - превосходная библиотека JS для окраски синтаксиса, подсветки и т. Д. Я создал очень простой «макро» язык для своего проекта и хочу использовать для него codemirror. Однако написание нового парсера режима / лексики для codemirror - непростая задача. Хорошие новости, однако, превосходная грамматика codemirror делает это относительно простой задачей, чтобы достичь этого, не будучи ниндзя регулярного выражения - он использует файл определения в формате JSON, который очень доступен с легкой кривой обучения. К сожалению, документы не невероятны.

У меня вопрос, как я могу сказать codemirror-грамматике, что список ключевых слов должен быть нечувствительным к регистру, например:

MacroVersion should be matched by 'macroversion'.

В настоящее время «Макроверсия» не выделяется. Изображение ниже.

Example of case-sensitivity

Что я пробовал до сих пор: я посмотрел на исходный код для codemirror-грамматики и, хотя и не полностью понимая его, я подумал, что, похоже, есть токен, как показано ниже в выделении для чувствительности к регистру.

Current attempt

Я также рассмотрел другие примеры примеров языка codemirror-грамматики, но не нашел там решения "вырезать-вставить".

Исследования / другие вопросы SO для codemirror:

Автозаполнение CodeMirror: регистр при чувствительном поиске : Не дублируется, как это характерно для python mode.js и требует изменения исходного кода в файле режима, тогда как грамматика codemirror не имеет файла режима js.

1 Ответ

0 голосов
/ 30 ноября 2018

применить caseInsensitive = true например:

"keyword": {
    "autocomplete": true,
    "caseInsensitive": true,    // <-- make case-insensitive
    "tokens": [
        "if", "then", "else",
        .. 
    ]
}

найдено здесь: https://github.com/foo123/codemirror-grammar/issues/12#issuecomment-427387653

...