我~
在此Config :: INI Perl 6语法中发现了波浪号:
token header { ^^ \h* '[' ~ ']' $<text>=<-[ \] \n ]>+ \h* <.eol>+ }
~
我正在处理的文字中没有波浪号。我知道这'[' ~ ']'
很重要,因为省略任何或全部'['
,~
以及']'
使语法不再匹配我的文字。
由于我知道我要匹配的模式是什么,所以我对其进行了更改,以使方括号位于文本表达式的周围,因此:
token header { ^^ \h* '[' $<text>=<-[ \] \n ]>+ ']' \h* <.eol>+ }
所以在我看来,这'[' ~ ']'
真的是说在这里匹配一个方括号,然后再期待结束括号。
无论如何,我知道在正常的Perl 6语法中,波浪号~
用于连接字符串。但这显然在本语法内意味着不同的东西。(在Perl 6中,可以使用文法从文本中提取复杂的数据结构。它们就像带到下一级的正则表达式一样。)
无论如何,我在文档中搜索了“语法”和“正则表达式”中的单个~
,但在语法或正则表达式中均未找到任何内容。
您可以在以下设计文档中找到说明:https : //github.com/perl6/roast/blob/master/S05-metachars/tilde.t#L6-L81
它主要完成您发现的内容:用右括号后的表达式替换代字号,并在括号字符之间进行搜索。但是,它增加了一些额外的魔力,以帮助表达式识别终止括号,并在找不到最终括号时提供更有用的错误消息。因此,无论哪种方式,您通常都会获得相同的结果,但并非总是如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句