【发布时间】:2014-10-18 05:22:46
【问题描述】:
我正在通过解析 .tmlanguage 文件并将样式应用于 NSMutableAttributtedString 来实现 Apple Swift 语言中的语法高亮显示。
我正在使用 javascript 代码、javascript.tmlanguage 文件和 monokai.tmtheme 主题(最后都包含在 sublime text 3 中)进行测试,以检查语法是否正确突出显示。通过以相同的顺序应用.tmlanguage 文件中的每个规则(模式),语法几乎完美地突出显示。
我现在遇到的问题是,当引号 (") 前面有反斜杠 (\") 时,我不知道如何知道它应该被转义。我是否遗漏了 .tmlanguage 文件中指定的内容?另一个问题是我不知道如何知道在其他规则中应该忽略其他规则,例如:
当在字符串中时,我将双斜杠视为 cmets:"http://stackoverflow.com/" 网址在 //
在 cmets 中也将双引号或单引号作为字符串:// press "Enter" to continue,当应与 cmets 相同颜色时,单词“Enter”将突出显示为字符串
所以,我不知道公约中的某些规则是否比其他规则具有某种优先级,或者文件中是否有我没有注意到的内容。
请帮忙!
更新:
这是我所说的转义引号的一个更好的例子:
我得到了这个:,而所有字母都应该是黄色的,除了转义序列 (/") 应该是蓝色的。
问题是。我怎么知道 /" 应该被转义?那段代码的规则是:
【问题讨论】:
-
转义字符不应该是\而不是/吗?这可以解释为什么你的颜色是关闭的......
-
查看this screenshot 和this one 之间的区别。第一个显示正斜杠和反斜杠试图转义字符串中间的双引号,使用内置的 JavaScript 语法突出显示。第二个显示相同的文本,但用JavaScriptNext 突出显示,IMO 是一种更好的语法。常规 JS 根本不显示转义字符,而 JSN 则显示。有趣...
-
该文件是从 sublime text 3 中提取的,它可以在 sublime 中运行,所以它应该可以在我的应用程序上运行。顺便说一句,我忘了提到当应用程序尝试匹配规则
\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)时,我收到此错误:"Error Domain=NSCocoaErrorDomain Code=2048 \"The operation couldn’t be completed. (Cocoa error 2048.)\" UserInfo=0x7fc862ea7220 {NSInvalidValue=\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)}",正如我在这个问题中所述:stackoverflow.com/questions/25439948/… -
那么对于引号之间的所有内容,我是否应该忽略“模式”字段中正则表达式匹配的任何内容?我应该使用什么正则表达式,
"\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)"?好像不行……
标签: swift sublimetext2 syntax-highlighting textmate textkit