regex - 编写语法荧光笔

标签 regex actionscript-3 syntax-highlighting

我希望为我正在考虑从事的夏季项目编写自己的语法荧光笔,但我不确定如何编写自己的语法荧光笔。

我知道有很多实现,但我想了解正则表达式以及语法突出显示的工作原理。

语法高亮是如何工作的以及开发语法高亮有哪些好的引用?语法荧光笔是否在输入时扫描每个字符,还是在输入每个字符后扫描整个文档/文本区域?

任何见解将不胜感激。

谢谢。

PS:我本来打算用 ActionScript 编写它

最佳答案

语法荧光笔可以通过两种非常通用的方式工作。第一个为突出显示的语言实现了完整的词法分析器和解析器,准确识别每个标记的类型(关键字、类名、实例名、变量类型、预处理器指令...)。这提供了根据某些规范准确突出显示代码所需的所有信息(红色的关键字,蓝色的类名,等等)。

第二种方式类似于 Google Code Prettify使用,而不是为每种语言实现一个词法分析器/解析器,而是使用几个非常通用的解析器,可以在大多数语法上完成不错的工作。例如,这个荧光笔将能够很好地解析和突出显示任何类似 C 的语言,因为它的词法分析器/解析器可以识别这些语言的通用组件。

这还有一个优点,因此,您不需要显式指定语言,因为引擎将自行确定哪个通用解析器可以完成最好的工作。当然,缺点是突出显示不如使用特定于语言的解析器时那么完美。

关于regex - 编写语法荧光笔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809423/

相关文章:

javascript - 正则表达式 - val.replace(/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g ,"' ');

regex - 类型?文本 block 正则表达式函数

python - 匹配末尾正好 5 位数字的所有名称

xml - 如何使用 AS3 测试是否已在 XML 节点中设置属性

actionscript-3 - AS3:如何访问和控制外部SWF中的嵌入式声音?

javascript - ng-pattern 允许字母和某些特殊字符

android - 在 Android 平板电脑上使用 StageVideo 会出现闪烁吗?

javascript - 博客动态 View 中的要点

javascript - 调用函数来高亮代码

javascript - 使用代码折叠突出显示源代码语法