Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Kio estas gramatiko

La ŝlosilvorto grammar

Gramatiko grupigas nomitajn regulesprimojn sub unu nomo, multe kiel klaso grupigas metodojn. Vi deklaras ĝin per la ŝlosilvorto grammar:

grammar Greeting {
    token TOP  { 'Hello, ' <name> '!' }
    token name { \w+ }
}

Ene de la gramatiko, ĉiu nomita ŝablono estas skribata per token (speco de regulesprimo, kiun vi studos detale baldaŭ). Unu ĵetono, laŭ konvencio nomata TOP, estas la deirpunkto — ĝi priskribas la tutaĵon. Ĉi tie TOP diras «la teksto estas Hello,, poste nomo, poste !», kaj name diras, kiel nomo aspektas.

La ĵetonoj povas referenci unu la alian laŭ nomo, ekzakte kiel la nomitaj regulesprimoj de la antaŭa temo. TOP uzas <name>, kio tenas la gramatikon legebla: ĉiu regulo havas unu klaran laboron.

Por ruli gramatikon kontraŭ ĉeno, voku ĝian metodon .parse:

my $m = Greeting.parse('Hello, Anna!');
say $m<name>; # 「Anna」

La sekva sekcio rigardas TOP kaj .parse pli detale. Nun, la ideo por kunporti estas simpla: gramatiko estas nomita kolekto de nomitaj regulesprimoj, kiuj kune priskribas tutan pecon de strukturita teksto.

Praktiko

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

Kursa navigado

Kvizo — Nomitaj regulesprimoj   |   Kvizo — Kio estas gramatiko


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