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 : Sélectionner tout - Visualiser dans une fenêtre à part
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);