在为Github编写语法以突出用球拍语言编写的程序时,我偶然发现了一个问题。
在球拍中,#|
开始一个多行注释,|#
结束它。
问题是多行注释可以嵌套:
#| 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"
多行注释可以包含另一个具有子表达式含义的多行comment.([^\|]|\|(?=[^#]))*
:^|不是non-#
的任何字符|(?=^#)后跟|
的|
因此,整个表达式匹配一个不包含|#的字符串
更新:
从TextMate邮件列表上的Allan Odgaard那里得到了答案:
http://textmate.1073791.n5.nabble.com/TextMate-grammars-and-nested-multiline-comments-td28743.html
https://stackoverflow.com/questions/27460207
复制相似问题