Corso di Raku / Espressioni regolari e grammatiche / Grammatiche / Che cos’è una grammatica

La parola chiave grammar

Una grammatica raggruppa regex con nome sotto un unico nome, un po’ come una classe raggruppa metodi. La dichiari con la parola chiave grammar:

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

Dentro la grammatica ogni schema con nome si scrive con token (un genere di regex che studierai in dettaglio fra poco). Un token, per convenzione chiamato TOP, è il punto di partenza: descrive il tutto. Qui TOP dice «il testo è Hello,, poi un nome, poi !», e name dice che aspetto ha un nome.

I token possono riferirsi l’uno all’altro per nome, esattamente come i regex con nome dell’argomento precedente. TOP usa <name>, il che tiene leggibile la grammatica: ogni regola ha un compito chiaro.

Per far girare una grammatica su una stringa, chiama il suo metodo .parse:

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

La sezione successiva guarda più da vicino TOP e .parse. Per ora l’idea da portarsi via è semplice: una grammatica è una collezione con nome di regex con nome che insieme descrivono un intero pezzo di testo strutturato.

Pratica

Risolvi 1 quiz sul contenuto di questo argomento.

Quiz — Espressioni regolari con nome   |   Quiz — Che cos’è una grammatica


💪 Oppure vai direttamente agli esercizi di questa sezione.