【问题标题】:Syntax Highlighting in JavascriptJavascript 中的语法高亮
【发布时间】:2011-07-26 16:40:17
【问题描述】:

我目前正在研究 Javascript 中的一些语法高亮。

要匹配字符串,我会使用如下内容:
code = code.replace(/("([^"\\]*(\\.[^"\\]*)*)")/gm, "<span class=\"string\">$1</span>"); // string

这将匹配一个整数:
code = code.replace(/(\d+)/gm, "<span class=\"number\">$1</span>");

现在我的问题是字符串中的整数 within 也会匹配。这不是突出问题而是性能问题,因为我可以使用
code > span.number 而不是code span.number
对于防止这种行为有什么建议吗?


我还阅读了TextMate's Language Grammars,这对我来说似乎非常强大。但是,我不知道如何在 Javascript 中实现它。
一些帮助将不胜感激。


我知道周围有很多很好的语法突出显示,但没有一个为 Objective-C 提供真正好的支持。

【问题讨论】:

  • 你想用 JavaScript 写一个语法高亮器来高亮用 Objective-C 写的代码吗?或者你想用 Objective-C 为 JavaScript 编写的代码写一个荧光笔?
  • 我想突出显示 JavaScript 中的 Objective-C 代码。

标签: javascript objective-c regex syntax-highlighting textmate


【解决方案1】:

如果您想为 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, '"\'']

说这是一个字符串的突出显示规则,并且一个字符串匹配上面的正则表达式(双引号内的非引号或转义序列的运行或单引号内的非单引号或转义序列的运行) .

这条规则

[PR['PR_LITERAL'],
 /^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],

匹配数字文字。数字字面量是一个可选符号,后跟一个十六进制字面量、一个点后跟一个分数或一个整数部分后跟一个分数,最后两个可以在末尾有一个可选的指数。

代码美化引擎负责确保字符串被视为字符串,并且字符串中看起来像数字的东西不会被误认为是数字。

【讨论】:

    【解决方案2】:

    也许你想看看亚历克斯·戈尔巴乔夫的SyntaxHighlighter。目前没有针对 Objective C 的模块,但他提供了一个 manual 用于开发“自定义画笔”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多