Wyrażenia regularne - matrix.umcs.lublin.pl

Transkrypt

Wyrażenia regularne - matrix.umcs.lublin.pl
Wyrażenia regularne
Podstawy
Adam Kobus
Updated: 27 kwietnia 2016
wyrreg
Wyrażenia regularne
Możliwości
Wyrażenia regularne (regex, regexp) są to wzorce, które opisują
języki regularne, czyli te same, które opisujemy poprzez automaty
skończone. W odróżnieniu od automatów, pozwalają one wyrażenie
akceptowanych słów w sposób deklaratywny.
Użycie: grep (notacja, przekształca wyrażenia na automaty
skończone), Lex, Flex (narzędzia leksykalne prawnicze, przyjmują
opisy postaci leksemów (regexp) i tworzy automat skończony
rozpoznający następny leksem)
Operatory wyrażeń regularnych
1. L M - suma teoriomnogościowa: L = {001, 10, 111},
S
M = {ε, 001}, L M = {ε, 001, 10, 111}
S
2. LM - złożenie, konkatenacja,
LM = {001, 10, 111, 001001, 10001, 111001}
3. L∗ - domknięcie Kleene’ego, czyli wszystkie wielokrotności
4. (L) - grupowanie
5. dodatkowe - Ln - słowo występuje n razy, L+ - słowo
występuje co najmniej jeden raz
Budowa wyrażeń regularnych
# stałe - ε i ∅ oznaczają języki {ε} i ∅;
# dla dowolnego a, a jest wyrażeniem regularnym. L(a) = {a};
# zmienne - określa dowolny język, oznaczana jest dużą literą,
kursywą, L
Przykład
Opisz wyrażeniem regularnym zbiór słów składających sie z
naprzemiennie występujących symboli 0 i 1 dla Σ = {0, 1}.
# naprzemiennie występujące 0 i 1: (01)∗ + (10)∗
# łańcuchy z dodatkowym 0 lub 1: 0(10)∗ + 1(01)∗
# razem: 0(10)∗ + 1(01)∗ + (01)∗ + (10)∗
Można to również zapisać w postaci: (ε + 1)(01)∗ (ε + 0).
Priorytety operatorów
# () - grupowanie
# ∗ - odnosi się do najmniejszego wyrażenia regularnego na lewo
# złożenie
# + - suma teoriomnogościowa
Tożsamości
# tożsamość sumowania: (∅ + R) = (R + ∅) = R
# tożsamość złożenia: εR = Rε = R
# anihilator złożenia: ∅R = R∅ = ∅
# przemienność sumowania: (R + S) = (S + R)
# łączność sumowania: ((R + S) + T ) = (R + (S + T ))
# łączność złożenia: ((RS)T ) = (R(ST ))
Prawa algebraiczne
# lewostronna rozdzielność złożenia względem sumowania:
(R(S + T )) = (RS + RT )
# prawostronna rozdzielność złożenia względem sumowania:
((S + T )R) = (SR + TR)
# idempotencja sumowania: (R + R) = R
# równoważność operatora domknięcia:
∅∗ = ε, RR ∗ = R ∗ R, (RR ∗ + ε) = R ∗
Zadania
Zadania
Napisz wyrażenia regularne opisujące poniższe języki:
1. zbiór czteroliterowych słów nad alfabetem Σ = {a, b, c, d}
2. zbiór trzyliterowych słów nad alfabetem Σ = {a, b, c, d} z
jedną literą a
3. zbiór wszystkich słów nad alfabetem Σ = {a, b, c, d} z
dokładnie jedną literą a
4. zbiór łańcuchów binarnych, w których dziesiątym symbolem
od prawej jest 1
5. zbiór łańcuchów binarnych z co najwyżej jedną parą
sąsiadujących ze sobą 1
6. zbiór słów binarnych, w których liczba zer jest podzielna przez
3
7. zbiór słów alfanum., które mogą stanowić adres strony
Zadania
Jakie języki opisują następujące wyrażenia regularne:
1. (0∗ 1∗ )∗ 000(0 + 1)∗
2. (0 + 10) ∗ 1∗

Podobne dokumenty