我希望为我正在考虑工作的夏季项目编写自己的语法荧光笔,但我不知道如何编写我自己的语法荧光笔。
我知道有一些实现,但我想了解正则表达式和语法高亮的工作原理。
语法突出显示如何工作,什么是开发人员的一些好的参考?语法荧光笔是否扫描每个字符,因为它是键入的,还是在每个字符打字后整体扫描文档/文本区域?
任何见解将不胜感激。
谢谢。
PS:我计划在ActionScript中编写它
语法荧光笔可以以两种非常一般的方式工作。第一个为突出显示的语言(关键字,类名称,实例名称,变量类型,预处理器指令…)精确地标识每个令牌的类型,实现一个完整的词法分析器和解析器。这提供了根据一些规范(红色的关键字,蓝色的类名称,您有什么)精确突出显示代码所需的所有信息。
原文链接:https://www.f2er.com/regex/357375.html第二种方式就像Google Code Prettify所用的那样,而不是每种语言实现一个词法分析器/解析器,而是使用了一些非常普通的解析器,可以在大多数语法上做一个体面的工作。例如,这个荧光笔可以解析和突出显示出任何类似C语言的语言,因为它的词法分析器/解析器可以识别这些语言的一般组件。
这也具有这样的优点,因此,您不需要明确地指定语言,因为引擎将自己确定哪些通用解析器可以做最好的工作。当然,缺点是突出显示不如使用语言特定解析器时完美。