【发布时间】:2014-12-13 15:03:30
【问题描述】:
在为 Github 编写用 Racket 语言编写的语法高亮程序的语法时,我偶然发现了一个问题。
在 Racket 中,#| 开始一个多行注释,|# 结束它。
问题是多行 cmets 可以嵌套:
#| a comment #| still a comment |# even
more comment |#
这是我的非工作尝试:
repository:
multilinecomment:
begin: \#\|
end: \|\#
name: comment
contentName: comment
patterns:
- include: "#multilinecomment"
name: comment
- match: ([^\|]|\|(?=[^#]))*
name: comment
匹配模式的意图是:
-
"#multilinecomment"多行注释可以包含另一个多行注释。 -
([^\|]|\|(?=[^#]))*子表达式的含义:[^\|] any characters not an `|` \|(?=[^#]) an `|` followed by a non-`#`
因此整个表达式匹配一个不包含 |#
的字符串更新:
在 TextMate 邮件列表上得到了 Allan Odgaard 的答复:
http://textmate.1073791.n5.nabble.com/TextMate-grammars-and-nested-multiline-comments-td28743.html
【问题讨论】:
标签: sublimetext2 racket grammar textmate textmatebundles