Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / La analizarbo, make kaj made

La kongruarbo

Gramatika kongruo estas arbo. La supra kongruo havas nomitan eron por ĉiu ĵetono, kiun TOP uzis, kaj tiuj eroj mem estas kongruaj objektoj kun siaj propraj kaptoj. Vi navigas la arbon per la sama sintakso <name>, kiun vi uzas por nomitaj kaptoj:

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」

Ĉiu branĉo estas plena kongrua objekto, do vi povas peti al ĝi sian .Str, sian pozicion, aŭ konverti ĝin. Ĉi tie la valoro estas ciferoj, do transformi ĝin en veran nombron estas nur metodvoko:

say $m<value>.Int; # 5

Por pli profundaj gramatikoj la arbo havas pli da niveloj — $m<a><b> atingas ĵetonon b uzatan ene de ĵetono a. Trairi la arbon tiel funkcias, sed por io ajn preter kelkaj kampoj ĝi fariĝas mallerta. La sekva temo montras pli puran manieron alfiksi la valoron, kiun vi efektive volas, al ĉiu kongruo.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

La analizarbo, make kaj made   |   Kvizo — La kongruarbo


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.