所以CodeMirror使用对其代码进行令牌化。
它将文档分解成行,并使每一行成为流,然后将流放入预定义的mode中。它可以使用它的state参数跨多行。
看来ACE有相似方法。
这两个方法都没有内在地使用RegExp (但是很明显,不管是谁创建的模式都可以在RegExp中编码到它们的模式中)。
根据我所读到的Atom的代码和样式,它将不同的语法高亮符称为grammars,它们与来自TextMate的grammars非常相似。这些grammars类似于包含类名和RegExps (查看如何编写TextMate语法)的JSON对象。
我不知道Atom文本编辑器到底是如何执行代码解析的,如何保持其状态,以及如何通过各种作用域进行扩展。
如果有人能给我指明正确的方向,那就太好了。
发布于 2016-07-15 07:20:19
这里回答了这个问题。
Atom使用它的first-mate模块,它依赖于oniguruma来解析正则表达式。
发布于 2016-07-14 23:27:07
您最好在原子论坛中问您的问题,因为他们是Atom开发人员的常客。
https://stackoverflow.com/questions/38362321
复制相似问题