Cursus Raku / Addendum 🆕 / Genera et machinae textuales / Expressiones regulares et grammaticae / Exercises / Identificatores proba
Solutio: Identificatores proba
Ecce solutio possibilis huius exercitationis.
Codex
for <count total2 2fast my-var _hidden> -> $name {
my $ok = $name ~~ / ^ <[A..Za..z_]> <[A..Za..z0..9_]>* $ /;
say "$name: { $ok ?? 'valid' !! 'invalid' }";
}🦋 Inveni codicem fontem in archivo validate-identifier.raku.
Exitus
count: valid
total2: valid
2fast: invalid
my-var: invalid
_hidden: validCommentarii
Ancorae
^et$exemplar cogunt totam catenam tegere, itaque unum signum errans ut lineola inmy-varillud invalidum facit.Prima classis signorum litteram vel lineolam infimam permittit; secunda, per
*repetita, cifras insuper permittit — regulae identificatoris classicae exacte congruens.Secunda classis etiam ut
\wscribi potest, compendium incorporatum pro signo verbali (littera, cifra vel lineola infima):my $ok = $name ~~ / ^ <[A..Za..z_]> \w* $ /;
Una differentia notanda:
\win Raku Unicode novit, itaque nomen utcaféquoque transit — quod forte Raku ipsi congruit, ubimy $café = 1;prorsus legitimum est. Classis expresse scripta<[A..Za..z0..9_]>probationem stricte ad ASCII servat.Est tamen versura: in Raku ipso
my-varidentificator validus est! Raku lineolam (vel apostrophum, ut inisn't) intra nomen permittit, dum littera sequitur — quapropter subprogrammata utis-primetam naturaliter leguntur. Ut identificatores Raku probes, permitte tales greges post partem classicam:for <count total2 2fast my-var _hidden> -> $name { my $ok = $name ~~ / ^ <[A..Za..z_]> \w* [ '-' <[A..Za..z]> \w* ]* $ /; say "$name: { $ok ?? 'valid' !! 'invalid' }"; }
Unusquisque grex uncis inclusus
[ '-' <[A..Za..z]> \w* ]lineolam solum tunc accipit cum littera sequitur, itaquemy-varnunc ut validus nuntiatur, dum2fast— et catenae uta-vela-1— adhuc non sunt.