Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Darbību klases / Exercises / Viena gramatika, divas darbību klases
Risinājums: Viena gramatika, divas darbību klases
Šeit ir iespējams risinājums uzdevumam.
Kods
grammar Pair {
token TOP { <a> ',' <b> }
token a { \d+ }
token b { \d+ }
}
class Sum { method TOP($/) { make $<a>.Int + $<b>.Int } }
class Diff { method TOP($/) { make $<a>.Int - $<b>.Int } }
say Pair.parse('10,20', actions => Sum.new).made;
say Pair.parse('10,20', actions => Diff.new).made;🦋 Atrodiet programmu failā two-actions.raku.
Izvade
30
-10Komentāri
Gramatika apraksta tikai formu
skaitlis,skaitlis; par to, kas jāaprēķina, tā neko nezina.Abas darbību klases vienam un tam pašam parsējumam piesaista dažādas nozīmes — viena skaitļus saskaita, otra atņem. Lai iegūtu citu rezultātu, pietiek
.parsepadot cituactionsobjektu, gramatiku nemaz nemainot.
Kursa navigācija
← Viena gramatika, divas darbību klases | Padariet datumu cilvēkam saprotamu →