相关疑难解决方法(0)

perl6语法,不确定示例中的某些语法

我还在学习perl6,我正在阅读这个页面上的语法示例:http://examples.perl6.org/categories/parsers/SimpleStrings.html ; 我已多次阅读有关正则表达式的文档,但仍有一些我不理解的语法; 任何人都可以开导我吗?非常感谢你 !!!

token string { <quote> {} <quotebody($<quote>)> $<quote> }
Run Code Online (Sandbox Code Playgroud)

问题1:令牌中的这个"{}"是做什么的?捕获标记为<()>,嵌套结构为tilda'('〜')'; 但是什么是{}?

token quotebody($quote) { ( <escaped($quote)> | <!before $quote> . )* }
Run Code Online (Sandbox Code Playgroud)

问题2a:在<>中转义($ quote)将是一个正则表达式函数,对吗?它需要$ quote作为参数并返回另一个正则表达式?

问题2b:如果我想表示"引用前没有的字符",我应该使用".$!before $ quote>"而不是"<!before $ quote>".??

token escaped($quote) { '\\' ( $quote | '\\' ) } # I think this is a function;
Run Code Online (Sandbox Code Playgroud)

非常感谢你 !!!

lisprog

regex grammar perl6 raku

16
推荐指数
2
解决办法
316
查看次数

正则表达式中的 $/ 和 $¢ 有什么区别?

正如标题所示,$/和之间有什么区别?它们似乎总是具有相同的值:

my $text = "Hello world";

$text ~~ /(\w+) { say $/.raku } (\w+)/;
$text ~~ /(\w+) { say $¢.raku } (\w+)/;
Run Code Online (Sandbox Code Playgroud)

两者都会产生具有相同值的 Match 对象。使用一个而不是另一个的逻辑是什么?

regex raku

13
推荐指数
1
解决办法
346
查看次数

难以理解捕获组和反向引用

希望对正则表达式的知识有所了解,我决定阅读一本关于它们的书,介绍正则表达式.而且我知道这很愚蠢,但其中一个介绍性的例子对我来说没有意义.

(\d)\d\1
Run Code Online (Sandbox Code Playgroud)

示范文本:

123-456-7890
Run Code Online (Sandbox Code Playgroud)

(应该捕获第一个数字,123)

谁能解释一下这里发生了什么?

据我所知,第一个\d捕获数字123. \1反向引用(标记)该组以供以后使用.括号限制了组的范围.但第二个\d是什么呢?

首选简单解释,如小孩或金毛猎犬.

regex

8
推荐指数
2
解决办法
2411
查看次数

如何在perl6中访问语法的可选部分?

作为语法的一部分,我有:

        rule EX1        { <EX2> ( '/' <EX2>)*  }
Run Code Online (Sandbox Code Playgroud)

在我的动作课中,我写了:

    method EX1($/) {
            my @ex2s = map *.made,  $/.<EX2>;
            my $ex1 = @ex2s.join('|');
            #say "EX1 making $ex1";
            $/.make($ex1);
    }
Run Code Online (Sandbox Code Playgroud)

所以基本上我只是试图将所有的连接EX2在一起,并'|'在它们之间而不是一个'/'。但是我的代码有些不对劲,因为它只会拾取第一个EX2而不是随后的代码。我如何找出可选的是什么?

perl6 raku

6
推荐指数
1
解决办法
131
查看次数

标签 统计

raku ×3

regex ×3

perl6 ×2

grammar ×1