Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Ĵetonoj kaj reguloj

regex, token kaj rule

La tri ŝlosilvortoj konstruas unu sur la alia:

  • regex — retropaŝas, kiel la ŝablonoj en / … /
  • tokenne retropaŝas
  • rule — kiel token, sed spacoj en la ŝablono estas signifaj

Retropaŝado signifas, ke kiam posta parto de la ŝablono malsukcesas, la motoro reiras kaj provas pli mallongan kongruon por pli frua parto. regex faras tion:

my regex r { \w+ 'b' }
say so 'aaab' ~~ / <r> /; # True

\w+ unue kaptas la tutan aaab, poste devas redoni la lastan b, por ke la laŭlitera b povu kongrui. token rifuzas redoni ion ajn:

my token t { \w+ 'b' }
say so 'aaab' ~~ / <t> /; # False

Ĉi tie \w+ prenas la tutan aaab, la laŭlitera b trovas nenion restantan, kaj la ĵetono simple malsukcesas anstataŭ retropaŝi.

Tio sonas kiel limigo, sed por gramatikoj ĝi estas ĝuste tio, kion vi volas: ĉiu ĵetono kongruu kun unu pura aĵo kaj sin obligu al ĝi. Tio faras analizadon pli rapida kaj la rezulton antaŭvidebla. Uzu token defaŭlte; atingu regex nur en la maloftaj okazoj, kiam vi vere bezonas retropaŝadon.

Praktiko

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

Kursa navigado

Ĵetonoj kaj reguloj   |   Kvizo — Retropaŝado


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