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);
Partager