Corso di Raku / Espressioni regolari e grammatiche / Grammatiche / Token e regole / Exercises / Un’assegnazione con spazi
Soluzione: Un’assegnazione con spazi
Ecco una possibile soluzione del compito.
Codice
grammar Assign {
rule TOP { <key> '=' <value> }
token key { \w+ }
token value { \w+ }
}
say Assign.parse('x = 5').defined;🦋 Trova il programma nel file spaced-assignment.raku.
Output
TrueCommenti
Poiché
TOPè unarule, gli spazi nello schema permettono dello spazio bianco attorno all’=nell’input.Quindi
'x = 5'viene analizzato. Con untokenperTOPcorrisponderebbe solo'x=5'.
Lo spazio bianco che una rule ammette è
facoltativo, non obbligatorio: lo spazio significativo
riconosce zero spazi con la stessa disinvoltura con cui ne
riconosce uno, quindi viene analizzata anche la forma senza spazi:
say Assign.parse('x=5').defined; # TrueLa rule accetta perciò allo stesso modo
'x = 5', 'x=5' e persino 'x =5' —
flessibilità senza dover specificare dove uno spazio possa esserci o
no.
Navigazione del corso
← Un’assegnazione con spazi | Grammatiche, classi ed ereditarietà →