Języki formalne i automaty Ćwiczenia 6

Podobne dokumenty
Języki formalne i automaty Ćwiczenia 7

Języki formalne i automaty Ćwiczenia 1

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Języki formalne i automaty Ćwiczenia 9

Języki formalne i automaty Ćwiczenia 3

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Symbol, alfabet, łańcuch

Języki formalne i automaty Ćwiczenia 4

Języki formalne i automaty Ćwiczenia 2

Wyrażenia regularne. Wyrażenia regularne 1/41

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Matematyczne Podstawy Informatyki

Wstęp do informatyki 2011/2012. Wyrażenia regularne (sed)

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Języki formalne i automaty Ćwiczenia 5

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

Jaki język zrozumie automat?

Matematyczne Podstawy Informatyki

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Matematyczne Podstawy Informatyki

SED - Stream EDitor. edytor strumieniowy. Bogumił Konopka W-11/I-21 Politechnika Wrocławska

Definiowanie języka przez wyrażenie regularne(wr)

Hierarchia Chomsky ego Maszyna Turinga

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Zastosowanie filtrów w Linuksie

Języki programowania zasady ich tworzenia

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Zajęcia 5 łańcuchy znaków (ciąg dalszy) i funkcje

Języki i operacje na językach. Teoria automatów i języków formalnych. Definicja języka

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Wyrażenia regularne.

Autor: dr inż. Katarzyna Rudnik

1 Automaty niedeterministyczne

Tablice (jedno i wielowymiarowe), łańcuchy znaków

KARTA KURSU. Języki skryptowe

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Generatory analizatorów

Wyrażenia regularne. Regular expressions. aka. Regexp

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

PRZYKŁADOWY TEST EGZAMINACYJNY

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Teoretyczne podstawy informatyki

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Linux Filtr grep. Opracował: Arkadiusz Curulak WSIiE TWP w Olsztynie

Zadanie analizy leksykalnej

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

Inicjacja tablicy jednowymiarowej

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Języki formalne i automaty Ćwiczenia 8

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Metody numeryczne Laboratorium 2

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Podstawy Kompilatorów

Matematyczna wieża Babel. 3. Gramatyki o językach bezkontekstowych materiały do ćwiczeń

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Edytor tekstu MS Word 2010 PL. Edytor tekstu MS Word 2010 PL umożliwia wykonywanie działań matematycznych.

Wyrażenie wewnątrz nawiasów jest atomem (rozpatrujemy je jako całość).

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

29. Poprawność składniowa i strukturalna dokumentu XML

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Przekierowanie wejścia wyjścia:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Wyrażenia regularne. Wojciech Tabiś Łukasz Jankowski

Macierze - obliczanie wyznacznika macierzy z użyciem permutacji

Map Reduce Proste zliczanie słów i zapytania SQL

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

1 Podstawy c++ w pigułce.

Języki, automaty i obliczenia

JĘZYKIFORMALNE IMETODYKOMPILACJI

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

0 + 0 = 0, = 1, = 1, = 0.

AUTOMATY SKOŃCZONE. Automat skończony przedstawiamy formalnie jako uporządkowaną piątkę:

JĘZYKI FORMALNE I METODY KOMPILACJI

Przydatne sztuczki - sql. Na przykładzie postgres a.

Ćwiczenia nr 11. Translatory. Wprowadzenie teoretyczne

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Wyrażenia regularne. Wyrażenia regularne: składnia

Hierarchia Chomsky ego

Projekt 4: Programowanie w logice

Wyrażenia regularne w Perlu. Narzędzia informatyczne w językoznawstwie. Przykład bardziej sensowny perlowy minigrep.pl. Pierwsze przykłady

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Ćwiczenie 8 Kolory i znaki specjalne

1. Zaczynamy! (9) 2. Edycja dokumentów (33)

Maszyna Turinga języki

1 Działania na zbiorach

Języki regularne, rozpoznawanie wzorców regularnych, automaty skończone, wyrażenia regularne

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Zad. 3: Układ równań liniowych

Przegląd podstawowych funkcji Excel.

Algorytmy sztucznej inteligencji

OPCJE -A num, --after-context=num Wypisuje po pasujących liniach num linii następującego kontekstu.

Transkrypt:

Języki formalne i automaty Ćwiczenia 6 Autor: Marcin Orchel Spis treści Spis treści... 1 Wstęp teoretyczny... 2 Wyrażenia regularne... 2 Standardy IEEE POSIX Basic Regular Expressions (BRE) oraz Extended Regular Expressions (ERE). 2 Wyrażenia regularne w Perlu... 3 Zastosowanie wyrażeń regularnych do operacji tekstowych... 4 Bibliografia... 4 Zadania... 5 Zadania na 3.0... 5 Zadania na 4.0... 5 Zadania na 5.0... 5

Wstęp teoretyczny Wyrażenia regularne Wyrażenia regularne to jeden ze sposobów reprezentacji języka formalnego. Każde wyrażenie regularne można przedstawić za pomocą gramatyki regularnej i odwrotnie. Definicja wyrażenia regularnego. Dany jest alfabet Σ. Wyrażeniami regularnymi są: ε - wyrażenie regularne oznaczające następujący język formalny {ε}, - wyrażenie regularne oznaczające język formalny:, a - wyrażenie regularne oznaczające język formalny {a}, gdzie a Σ. Ponadto wyrażeniami regularnymi są: RS - wyrażenie regularne oznaczające konkatenację dwóch zbiorów A i B wyrażonych za pomocą wyrażeń regularnych R i S odpowiednio: {αβ α A and β B}, R S - wyrażenie regularne oznaczające alternatywę dwóch zbiorów A i B wyrażonych za pomocą wyrażeń regularnych R i S, R* - wyrażenie regularne oznaczające gwiazdę Kleene'go na zbiorze A wyrażonym za pomocą wyrażenia regularnego R, to znaczy jest to zbiór wszystkich słów z R oraz słów powstałych przez konkatenację słów z języka R, zawierający również łańcuch pusty. Ponadto w wyrażeniach regularnych można używać nawiasów pomocnych w definiowaniu priorytetów działań. Standardowe priorytety są następujące od najwyższego: gwiazda Kleenego, konkatenacja, alternatywa. Przykłady wyrażeń regularnych: a b* oznacza zbiór {ε, a, b, bb, bbb,...} (a b)* oznacza zbiór wszystkich słów z symbolami a oraz b, łącznie z łańcuchem pustym. ab*(c ε) oznacza zbiór wszystkich słów rozpoczynających się od a, później zero lub więcej symboli b, i na końcu opcjonalnie c. Często w definicjach wyrażeń regularnych spotyka się następujące redundantne symbole: R+ oznacza zbiór zbiór wszystkich słów z R oraz słów powstałych przez konkatenację słów z wyrażenia R nie zawierający łańcucha pustego. R+ może być zapisany przy pomocy symbolu * jako RR*. R? może być zapisany jako (R ε). ~R - zbiór wszystkich słów z Σ*, które nie należą do R. Zapis tego zbioru może być bardziej skomplikowany. Standardy IEEE POSIX Basic Regular Expressions (BRE) oraz Extended Regular Expressions (ERE) Wyrażenia regularne w standardzie BRE posiadają symbole oraz następujące metasymbole i metasekwencje znaków:

. - oznacza dowolny pojedynczy symbol oprócz znaku nowej linii, w nawiasach kwadratowych oznacza po prostu kropkę [ ] - oznacza pojedynczy symbol, który jest zawarty w nawiasach, np [abc], [a-z]. Zauważmy, że nie ma możliwości zapisywania słów w nawiasach kwadratowych, jeśli - występuje tuż po nawiasie początkowym lub przed nawiasem końcowym to oznacza ona pauzę, aby uzyskać pauzę położoną wewnątrz nawiasów trzeba użyć strategii escapowania, to znaczy zamiast pauzy napisać \-. [^ ] - oznacza pojedynczy symbol, który nie jest zdefiniowany w nawiasach, np [^abc] - oznacza każdy symbol, który nie jest ani a, ani b, ani c. Np. [^a-z] oznacza wszystkie symbole, które nie są małymi literkami. ^ - oznacza początek łańcucha, kiedy analizujemy linie oznacza początek linii $ - oznacza koniec łańcucha, kiedy analizujemy linie oznacza koniec linii \ ( \) - oznaczone podwyrażenie (blok, grupa), napis wewnątrz tych nawiasów może być użyty później za pomocą odwołania \1,..., \9. \n - odwołanie do grupy, \1,..., \9, wykorzystanie odwołań powoduje, że dostajemy język, który nie jest regularny * - zero lub więcej razy poprzedzający element, np. ab*c oznacza {ac, abc, abbc,...}, [xyz]* oznacza {ε, x, y, z, zx, zyx,...},.* oznacza dowolny łańcuch \{m, n\} - oznacza wystąpienie od m do n razy poprzedzającego elementu: a\{3,\5} to {aaa, aaaa, aaaaa}. Przykłady: ^[hc]at - oznacza słowo hat lub cat występujące na początku linii. [hc]at$ - oznacza słowo hat lub cat występujące na końcu linii. Wyrażenia regularne w standardzie ERE. Różnice w stosunku do BRE. Brak możliwości używania grup.? - oznacza wystąpienie elementu poprzedzającego zero lub jeden raz, np ba? oznacza b lub ba. + - oznacza wystąpienie elementu poprzedzającego jeden lub więcej razy, np ba+ oznacza {ba, baa, baaa},.... - oznacza alternatywę np abc def oznacza {abc, def}. Przykłady: [hc]+at - oznacza {hat, cat, hhat, chat,...} [hc]?at - oznacza {hat, cat, at} Niektóre zakresy liczb lub liter można zapisywać za pomocą klasy definiowaniej w standardzie, przykładowo: [A-za-z] można zapisać jako [:alpha:] - oznacza znaki alfanumeryczne, [0-9] można zapisać jako [:digit:] - oznacza cyfry, itd Wyrażenia regularne w Perlu Wyrażenia regularne w Perlu są bardziej rozbudowane w porównaniu ze standardami BRE i ERE. Różnice: \ - escapowanie za pomocą \ oznacza zawsze znak nie alfanumeryczny. W perlu możliwe jest zdefiniowanie leniwego dopasowania, w przeciwieństwie do zachłannego dopasowania: dany łańcuch: ala <ma> <kota>,

zachłanne dopasowanie za pomocą wyrażenia <.*>: <ma> <kota>, leniwe dopasowanie za pomocą wyrażenia <.*>: <ma>. Jak inaczej osiągnąć łańcuch <ma>? Np. za pomocą wyrażenia <[^>]*>. Leniwe dopasowanie oznaczane jest jako <.*?>, znak zapytania po gwiazdce. W praktyce spotyka się wiele rozszerzeń wyrażeń regularnych. Takie wyrażenia z rozszerzeniami często nie dadzą się przedstawić w ogólności za pomocą wyrażenia regularnego, dlatego nazywa się je dla odróżnienia wzorcami, np wyrażenia z grupami nie da się przedstawić w ogólności za pomocą wyrażeń regularnych. Zastosowanie wyrażeń regularnych do operacji tekstowych 1. Wyszukiwanie linii, które zawierają co najmniej jedno słowo akceptowane przez wyrażenie regularne. 2. Zastępowanie słów w tekście akceptowanych przez dane wyrażenie regularne. 3. Sprawdzanie czy dane słowo jest akceptowane przez wyrażenie regularne. 4. Usuwanie linii zawierających słowa akceptowane przez dane wyrażenie regularne. 5. Usuwanie linii nie zawierających słowa akceptowanego przez dane wyrażenie regularne. 6. Usuwanie linii nie akceptowanych przez wyrażenie regularne. 7. Usuwanie linii akceptowanych przez wyrażenie regularne. Bibliografia 1. [Online] http://en.wikipedia.org/wiki/regular_expressions. 2. [Online] http://www.jflap.org/tutorial/regular/index.html.

Zadania Opis pliku comparisonfakepersonaldata.csv. W pliku tym w każdym wierszu znajdują sie wygenerowane dane dwóch osób. Lista narzędzi unixowych przydatnych do operacji na plikach tekstowych: grep, sed, uniq, split, sort, nl. Zadania na 3.0 a) Wypisać wszystkie porównania, dla których porównywane osoby mają to samo imię. b) Wypisać wszystkie porównania, dla których porównywane osoby mają to samo imię i nazwisko c) usunąć duplikaty z pliku comparisonfakepersonaldata.csv, duplikaty to każde dwa wiersze, zgodne na wszystkich polach oprócz pola id d) posortować wiersze według nazwiska pierwszej osoby Zadania na 4.0 a) dodac do każdego wiersza kolumny mówiące czy imiona dwóch osób są takie same, czy nazwiska dwóch osób są takie same, czy adresy dwóch osób są takie same. Zadania na 5.0 a) podzielić pola imię, nazwisko, ulica na tokeny, dla każdego test case'a dołączyć kolumnę z listą takich samych tokenów i różniących się na jednej literze. Użyć Perla. b) wyświetlić pary wierszy występujących obok siebie, które są zgodne na polach imię i nazwisko obu osób. Użyć do tego zadania skryptu sedowego z wykorzystaniem multilinii. Do zadań dołączone są następujące pliki: plik comparisonfakepersonaldata.csv, comparisonfakepersonaldata.txt - opis formatu pliku comparisonfakepersonaldata.csv.