Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Marķieri un likumi
regex, token un rule
Trīs atslēgvārdi būvējas cits uz cita:
regex— atkāpjas, tāpat kā raksturi/ … /iekšienētoken— neatkāpjasrule— tāpat kātoken, taču atstarpes raksturā ir nozīmīgas
Atkāpšanās nozīmē, ka tad, kad kāda vēlāka raksturā daļa
neizdodas, dzinējs iet atpakaļ un agrākai daļai izmēģina īsāku
sakritību. regex tā dara:
my regex r { \w+ 'b' }
say so 'aaab' ~~ / <r> /; # True\w+ vispirms sagrābj visu aaab, un tad tam
jāatdod pēdējais b, lai burtiskais b varētu
sakrist. token atsakās kaut ko atdot:
my token t { \w+ 'b' }
say so 'aaab' ~~ / <t> /; # FalseŠeit \w+ paņem visu aaab, burtiskais
b neatrod nekā palikuša, un marķieris vienkārši neizdodas,
nevis atkāpjas.
Tas izklausās pēc ierobežojuma, taču gramatikām tas ir tieši tas, ko
vēlaties: katram marķierim jāsakrīt ar vienu tīru lietu un jāpaliek pie
tās. Tas padara parsēšanu ātrāku un rezultātu paredzamu. Pēc
noklusējuma izmantojiet token; pie
regex ķerieties tikai tajos retajos gadījumos, kad
atkāpšanās patiešām vajadzīga.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Marķieri un likumi | Viktorīna — Atkāpšanās →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.