Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Parsēšanas koks, make un made

Sakritības koks

Gramatikas sakritība ir koks. Augšējai sakritībai ir nosaukts ieraksts katram marķierim, ko izmantoja TOP, un šie ieraksti paši ir sakritības objekti ar saviem tvērumiem. Pa koku pārvietojaties ar to pašu <nosaukums> sintaksi, ko lietojat nosauktiem tvērumiem:

grammar Pair {
    token TOP   { <key> '=' <value> }
    token key   { \w+ }
    token value { \d+ }
}

my $m = Pair.parse('x=5');
say $m<key>;   # 「x」
say $m<value>; # 「5」

Katrs zars ir pilnvērtīgs sakritības objekts, tāpēc tam var prasīt tā .Str, tā pozīciju vai to pārveidot. Šeit vērtība ir cipari, tāpēc tās pārvēršana par īstu skaitli ir tikai viens metodes izsaukums:

say $m<value>.Int; # 5

Dziļākām gramatikām kokam ir vairāk līmeņu — $m<a><b> sasniedz marķieri b, kas izmantots marķiera a iekšienē. Šāda staigāšana pa koku darbojas, taču visam, kas plašāks par pāris laukiem, tā kļūst neveikla. Nākamais temats parāda tīrāku veidu, kā katrai sakritībai piesaistīt to vērtību, kas jums patiešām vajadzīga.

Prakse

Jūs gaida 1 viktorīna par šī temata saturu.

Kursa navigācija

Parsēšanas koks, make un made   |   Viktorīna — Sakritības koks


💪 Vai arī dodieties tieši uz šīs sadaļas vingrinājumiem.