【发布时间】:2015-12-13 02:09:04
【问题描述】:
我在这个Config::INI Perl 6 Grammar 中找到了一个波浪号~:
token header { ^^ \h* '[' ~ ']' $<text>=<-[ \] \n ]>+ \h* <.eol>+ }
我正在处理的文本中没有波浪号 ~。我知道'[' ~ ']' 很重要,因为省略'['、~ 和']' 中的任何一个或全部会使语法不再匹配我的文本。
因为我知道我要匹配的模式是什么,所以我对其进行了更改,以便方括号围绕文本表达式,因此:
token header { ^^ \h* '[' $<text>=<-[ \] \n ]>+ ']' \h* <.eol>+ }
所以在我看来'[' ~ ']' 真的是在这里匹配一个方括号,然后期待右括号。
无论如何,我知道在正常的 Perl 6 语法中,波浪号 ~ 用于连接字符串。但这显然意味着 this Grammar 内部的一些不同的东西。 (在 Perl 6 中,您可以使用语法从文本中提取复杂的数据结构。它们就像正则表达式被提升到了一个新的水平。)。
无论如何,我在documentation 中搜索了Grammars,并在Regular Expressions 中搜索了一个~,但我没有在语法和正则表达式中找到任何内容。
【问题讨论】:
-
我一直忘记这个功能。