Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Marķieri un likumi / Exercises / Piešķiršana ar atstarpēm

Risinājums: Piešķiršana ar atstarpēm

Šeit ir iespējams risinājums uzdevumam.

Kods

grammar Assign {
    rule TOP    { <key> '=' <value> }
    token key   { \w+ }
    token value { \w+ }
}

say Assign.parse('x = 5').defined;

🦋 Atrodiet programmu failā spaced-assignment.raku.

Izvade

True

Komentāri

  1. Tā kā TOP ir rule, atstarpes raksturā atļauj atstarpes ap = ievadē.

  2. Tāpēc 'x = 5' parsējas. Ja TOP būtu token, sakristu tikai 'x=5'.

Atstarpe, ko rule atļauj, ir neobligāta, nevis obligāta: nozīmīgā atstarpe tikpat labprāt sakrīt ar nulli atstarpju kā ar vienu, tāpēc parsējas arī forma bez atstarpēm:

say Assign.parse('x=5').defined; # True

Tāpēc rule vienlīdz pieņem 'x = 5', 'x=5' un pat 'x =5' — elastība, nenorādot, kur atstarpe drīkst vai nedrīkst būt.

Kursa navigācija

Piešķiršana ar atstarpēm   |   Gramatikas, klases un mantošana