Perl6 grammar and action error : "Cannot find method 'ann' on object of type NQPMu"
<p>Okay, I am still having trouble with perl6 grammar and action. I want to find a pattern in a string, and as soon as it is is found, change the pattern according to action, and return the modified string.</p>

<pre><code>my $test = "xx, 1-March-23, 23.feb.21, yy foo  12/january/2099 , zzz";
# want this result: xx, 010323, 230221, yy foo  120199 , zzz"; 
# 2 digits for day, month, year

grammar month {
    regex TOP { &lt;unit&gt;+ }
    regex unit { &lt;before&gt; &lt;form1&gt; &lt;after&gt; }
    regex before { .*? }
    regex after  { .*? }
    regex form1 { \s* &lt;dd&gt; &lt;slash&gt; &lt;mon&gt; &lt;slash&gt; &lt;yy&gt; \s* }
    regex slash { \s* &lt;[ \- \/ \. ]&gt; \s* }
    regex dd    { \d ** 1..2 }
    regex yy    { (19 | 20)? \d\d }
    proto regex mon {*}
    regex mon:sym&lt;jan&gt; { \w 'an' \w* }
    regex mon:sym&lt;feb&gt; { &lt;sym&gt; }
    regex mon:sym&lt;mar&gt; { &lt;[Mm]&gt; 'ar' \w* }
}
class monAct {
    method TOP ($/) { make $&lt;unit&gt;.map({.made}); }
    method unit  ($/) { make $&lt;before&gt; ~ $&lt;form1&gt;.made ~$&lt;after&gt;; }
    method form1 ($/) { make $&lt;dd&gt;.made ~ $&lt;mon&gt;.made ~ $&lt;yy&gt;; }
    method dd ($/) {
        my $ddStr = $/.Str;
        if $ddStr.chars == 1 { make "0" ~ $ddStr; } else { make $ddStr; }
    }
    method mon:sym&lt;jan&gt; ($/) { make "01"; };
    method mon:sym&lt;feb&gt; ($/) { make "02"; };
    method mon:sym&lt;mar&gt; ($/) { make "03"; };
}

my $m = month.parse($test, actions =&gt; monAct.new);
say $m;
say $m.made;
</code></pre>

<p>But it says:</p>

<blockquote>
  <p>===SORRY!===Cannot find method 'ann' on object of type NQPMu</p>
</blockquote>

<p>What did I do wrong ? Thank you for your help !!!</p>