原子文本编辑器如何解析/标记代码? (语法高亮)
How does atom text editor parse / tokenise code? (syntax-highlighting)
所以CodeMirror使用modes
to tokenise its code.
它将文档分解成行并使每一行成为一个流,然后将其放入预定义的 mode
中。它可以使用其 state
参数跨越多行。
似乎 ACE 有 a similar method.
这些方法都没有固有地使用 RegExp(但显然创建模式的人可以在 RegExp 中编码到他们的模式中)。
根据我对 Atom 代码和风格的了解,它调用了不同的语法荧光笔 grammars
,它们与 TextMate 中的 grammars
非常相似。
这些 grammars
类似于包含类名和正则表达式 (see how to write a TextMate grammar) 的 JSON 对象。
我一辈子都想不通 Atom Text Editor 究竟是如何执行代码解析、保持其状态并扩展到各种范围的。
如果有人能为我指出正确的方向,那就太好了。
您最好在 Atom forums 中提问,因为 Atom 开发人员经常光顾它们。
问题已回答here。
Atom 使用其 first-mate
module, which relies on oniguruma
来解析正则表达式。
所以CodeMirror使用modes
to tokenise its code.
它将文档分解成行并使每一行成为一个流,然后将其放入预定义的 mode
中。它可以使用其 state
参数跨越多行。
似乎 ACE 有 a similar method.
这些方法都没有固有地使用 RegExp(但显然创建模式的人可以在 RegExp 中编码到他们的模式中)。
根据我对 Atom 代码和风格的了解,它调用了不同的语法荧光笔 grammars
,它们与 TextMate 中的 grammars
非常相似。
这些 grammars
类似于包含类名和正则表达式 (see how to write a TextMate grammar) 的 JSON 对象。
我一辈子都想不通 Atom Text Editor 究竟是如何执行代码解析、保持其状态并扩展到各种范围的。
如果有人能为我指出正确的方向,那就太好了。
您最好在 Atom forums 中提问,因为 Atom 开发人员经常光顾它们。
问题已回答here。
Atom 使用其 first-mate
module, which relies on oniguruma
来解析正则表达式。