所以 CodeMirror 用来modes
标记它的代码。
它将文档分成几行并使每一行成为一个流,然后将其放入预定义的mode
. 它可以通过使用其state
参数跨越多行。
看来ACE也有类似的方法。
这些方法都没有固有地使用 RegExp(但显然创建模式的任何人都可以将 RegExp 编码到他们的模式中)。
根据我对 Atom 的代码和风格的了解,它调用了不同的语法荧光笔grammars
,它们与grammars
TextMate 中的非常相似。这些grammars
类似于包含类名和正则表达式的 JSON 对象(请参阅如何编写 TextMate 语法)。
我终其一生都无法弄清楚Atom 文本编辑器究竟是如何执行代码解析、保持其状态以及扩展各种范围的。
如果有人能指出我正确的方向,那就太好了。