Хорошо, я изучаю perl6, и я пытаюсь сделать что-то очень просто: используйте грамматику для изменения согласованного текста в соответствии с объектом действия. Но я потерпел неудачу, и я не знаю, почему. Извините меня за такие простые вопросы. Я не в индустрии технологий или программирования. Поэтому, пожалуйста, будьте терпеливы со мной, хорошо?perl6 grammar сделать подстановку
Я хочу изменить «jan» на 01 и «feb» на 02; так просто:
grammar month {
regex TOP { (\s* <mon> \s*)+ }
proto regex mon {*}
regex mon:sym<jan> { <sym> }
regex mon:sym<feb> { <sym> }
}
class monAct {
method TOP ($/) {
make $<mon>.made;
}
method mon:sym<jan> ($/) { make "01"; };
method mon:sym<feb> ($/) { make "02"; };
}
my $m = month.parse("jan feb jan feb", actions => monAct.new);
say $m.made; # it says Nil instead of "01 02 01 02" that I want;
Итак, что я сделал здесь неправильно? Благодарю.
к сведению, что, как ваши действия являются лицами без гражданства, вы можете просто передать тип объекта 'monAct' вместо экземпляра' 'monAct.new' к .parse ' – Christoph