我~
在这个Config :: INI Perl 6语法中发现了一个代字号:
token header { ^^ \h* '[' ~ ']' $=<-[ \] \n ]>+ \h* <.eol>+ }
~
我正在处理的文本中没有波浪号.我知道,'[' ~ ']'
是因为重要提示漏报任何一个或全部'['
,~
以及']'
使语法不再匹配我的文字.
因为我知道我匹配的模式是什么,所以我改变它以便方括号围绕文本表达式,因此:
token header { ^^ \h* '[' $=<-[ \] \n ]>+ ']' \h* <.eol>+ }
所以在我看来,这'[' ~ ']'
真的是说匹配一个方括号,然后期待后面的结束括号.
无论如何,我知道在普通的Perl 6语法中,代字号~
用于连接字符串.但这显然意味着在这个语法中有所不同.(在Perl 6中,您可以使用语法从文本中提取复杂的数据结构.它们就像正则表达式更上一层楼.).
无论如何,我搜索文档的Grammars和正则表达式的单个~
,但我没有找到任何语法内部或正则表达式.
交叉发布在StackOverflowenespañol上
您可以在设计文档中找到解释:https://github.com/perl6/roast/blob/master/S05-metachars/tilde.t#L6-L81
它主要执行您发现的操作:将波形符替换为右括号后面的表达式,并在括号字符之间搜索它.但是,它增加了一些额外的魔力来帮助表达式识别终止括号,并在未找到最终括号时提供更有用的错误消息.所以你通常会以同样的方式得到相同的结果,但并非总是如此.