Chr*_*orr 1 javascript regex textmate syntax-highlighting objective-c
我目前正在使用Javascript中的一些语法突出显示.
要匹配字符串,我会使用这样的东西:
code = code.replace(/("([^"\\]*(\\.[^"\\]*)*)")/gm, "<span class=\"string\">$1</span>"); // string
这将匹配一个整数:
code = code.replace(/(\d+)/gm, "<span class=\"number\">$1</span>");
现在,我的问题是一个整数内的字符串会得到匹配了.这不是突出显示而是性能的问题,因为我可以使用
code > span.number而不是code span.number.
有什么建议可以防止这种行为吗?
我还阅读了TextMate的语言语法,这对我来说似乎非常强大.但是,我不知道如何在Javascript中实现它.
真的很感激一些帮助.
我知道有许多好的语法突出显示,但没有一个能为Objective-C提供真正好的支持.
如果您想为Google Code Prettify编写一个Objective-C模式,我很乐意将其合并.
您可以在http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-ml.js上查看OCAML/SML样式语言的示例模式
线条像
[PR['PR_STRING'],
/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/, null, '"\'']
Run Code Online (Sandbox Code Playgroud)
说这是字符串的突出显示规则,字符串匹配上面的正则表达式(双引号内的非引号或转义序列或单引号内的非单引号或转义序列).
这个规则
[PR['PR_LITERAL'],
/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
Run Code Online (Sandbox Code Playgroud)
匹配数字文字.数字文字是一个可选符号,后跟一个十六进制文字,一个点后跟一个分数,或一个整数部分后跟一个分数,最后两个可以在末尾有一个可选的指数.
代码美化引擎负责确保将字符串视为字符串,而字符串内部的数字看起来不会被误认为是数字.