Regex : Différence en $$ et \n
Bonjour,
Dans Parsing with Perl6 Regexes and Grammar p20 Lenz dit que $$ match les fin de ligne, donc pour une string multi-line, il détecte les \n. Il donne comme exemple "Some\nlines" qui est matchée deux fois "Some^\nlines^".
Je ne comprends donc pas pourquoi la grammaire OrgMode ne fonctionne pas, alors que la OrgMode2 fonctionne.
La seule différence étant de remplacer $$ par \n.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #!/usr/bin/env perl6
use v6;
use Grammar::Tracer;
grammar OrgMode {
rule TOP { ^ <tasks> $ }
token tasks { <task>+ %% $$}
token task { X .+? EOT }
}
grammar OrgMode2 {
rule TOP { ^ <tasks> $ }
token tasks { <task>+ %% \n}
token task { X .+? EOT }
}
my $file =
"X header 1 EOT
X header 2 EOT"
;
OrgMode.parse($file);
OrgMode2.parse($file); |