Codemirror-语法如何使关键字检查不区分大小写

时间:2018-09-15 11:43:22

标签: codemirror codemirror-grammar

Codemirror是一个出色的JS库,用于语法着色和荧光笔等。我为我的项目创建了一种非常简单的“宏”语言,并希望为其使用Codemirror。但是,为codemirror编写新的模式/词典解析器并不是一件容易的事。不过,好消息是,出色的codemirror-grammar使其成为一个相对简单的任务,而无需成为正则表达式忍者-它使用JSON格式的定义文件,该文件非常易于学习。令人沮丧的是,这些文档并不出色。

我的问题是,如何告诉Codemirror-grammar关键字列表不区分大小写,例如:

MacroVersion should be matched by 'macroversion'.

当前未突出显示“ MacroVersion”。下图。

Example of case-sensitivity

到目前为止,我已经尝试了什么:我查看了codemirror-grammar的源代码,尽管没有完全理解它,但我认为似乎有一个令牌,如以下突出显示的区分大小写。

Current attempt

我还查看了其他示例代码镜像语法语言示例,但没有在其中找到剪切粘贴解决方案。

针对代码镜像的研究/其他SO问题:

CodeMirror autocomplete: Case In Sensitive Search:不是重复的,特定于python mode.js,并且需要在模式文件中更改源代码,而codemirror-grammar没有模式js文件。

1 个答案:

答案 0 :(得分:0)

应用 caseInsensitive = true 例如:

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

在这里找到: https://github.com/foo123/codemirror-grammar/issues/12#issuecomment-427387653