Za pomocą wyrażenia regularnego, tokena lub reguły można zdefiniować zmienną taką jak ta;
token directive {
:my $foo = "in command";
<command> <subject> <value>?
}
Nie ma nic o tym w dokumentacji języka here, a bardzo niewiele S05 - Regexes and Rules, zacytować;
Każde wyrażenie gramatyczne jest tak naprawdę rodzajem metody i możesz zadeklarować zmienne w takiej procedurze, używając dwukropka, a następnie dowolnego deklaratora zasięgu analizowanego przez gramaturę Perla 6, w tym mój, nasz, stan i stałą. (. Jako quasi declarators, temp i niech są również rozpoznawane) pojedynczej instrukcji (maksymalnie przez średnikiem zakończenia lub składzie końcowym zamykanie nawiasów) jest analizowany jako normalnego kodu Perl 6:
token prove-nondeterministic-parsing {
:my $threshold = rand;
'maybe' \s+ <it($threshold)>
}
mogę tego regexen zasięgu gramatyki są bardzo podobne do metod w klasach; Rozumiem, że możesz uruchomić blok w dowolnym miejscu w ramach reguły i jeśli parsowanie zakończy się powodzeniem, blok zostanie wykonany - ale nie rozumiem, po co to jest.
Czy ktoś może jasno określić, jaki jest zakres; wyjaśnić, jakie to musi spełniać i podać typowy przypadek użycia?