我找到了波浪号 ~
在此 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单个
~
,但我在语法和正则表达式中都没有找到任何内容。cross posted on StackOverflow en español
最佳答案
您可以在此处的设计文档中找到解释:https://github.com/perl6/roast/blob/master/S05-metachars/tilde.t#L6-L81
它主要执行您发现的操作:用右括号后面的表达式替换波浪号,并在括号字符之间搜索它。然而,它增加了一些额外的魔法来帮助表达式识别终止括号并在未找到最终括号时提供更有用的错误消息。因此,无论采用哪种方式,您通常都会得到相同的结果,但并非总是如此。
关于parsing - ~ 在语法中是什么意思(在 Perl 6 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34247264/