Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.

Slides:



Advertisements
Podobne prezentacje
Lingwistyka Matematyczna
Advertisements

Lingwistyka Matematyczna
Systemy czasu rzeczywistego
Wprowadzenie do informatyki Wykład 6
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
Informatyka jako dziedzina wiedzy
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Analiza Składniowa Wstępująca
Lingwistyka Matematyczna
Generator analizatorów składniowych
Metoda pierwszeństwa operatorów
Systemy czasu rzeczywistego Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Informatyka jako dziedzina wiedzy Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie.
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Przetwarzanie tekstów i AWK Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Obliczalność i złożoność obliczeniowa
Budowa komputera Wstęp do informatyki Wykład 15
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Informatyka jako dziedzina wiedzy Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Wprowadzenie do teoretycznych podstaw informatyki
Przetwarzanie tekstów i AWK Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Przetwarzanie tekstów i AWK
Programowanie imperatywne i język C
Języki formalne i gramatyki
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Informatyka jako dziedzina wiedzy Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Przetwarzanie tekstów i AWK Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Przetwarzanie tekstów i AWK Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Metody formalne Copyright, 2005 © Jerzy R. Nawrocki Analiza systemów informatycznych.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wyrażenia regularne i język AWK
Komunikacja poprzez Internet
Dokumenty i prezentacje Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
KONSTRUKCJA KOMPILATORÓW WYKŁAD WYKŁAD Robert Plebaniak Robert Plebaniak.
Przetwarzanie tekstu i strony WWW Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Informatyka I - Wykład ANSI C
Generator analizatorów składniowych
Języki i automaty część 5.
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.
Gramatyki i translatory
Pomiary procesów programistycznych Copyright, 2002 © Jerzy R. Nawrocki Zarządzanie jakością.
Podstawy języka Instrukcje - wprowadzenie
Przetwarzanie tekstów i AWK Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
Wprowadzenie do teoretycznych podstaw informatyki Copyright, 2004 © Jerzy R. Nawrocki
ANALIZA SKŁADNIOWA.
Y A C C Generator analizatorów składniowych. GENERATOR YACC Zadaniem generatora YACC jest wygenerowanie kodu źródłowego analizatora składniowego (domyślnie)
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Systemy wspomagające dowodzenie twierdzeń
Wyrażenia regularne i język AWK Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne.
Wstęp do programowania Wykład 9
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Przetwarzanie języka Wprowadzenie do informatyki Jerzy Nawrocki
Zapis prezentacji:

Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 10 begin goto spacer end.

J.Nawrocki, Gramatyki i translatory Języki programowania AnalizatorGenerator.pas.exe Kompilator

J.Nawrocki, Gramatyki i translatory Języki programowania Dany jest ciąg cyfr, nawiasów, znaków +, -, *, /. Czy ten ciąg jest poprawnie zbudowanym wyrażeniem arytmetycznym? * * 2 3 = 7 = ???

J.Nawrocki, Gramatyki i translatory Fazy kompilacji Analiza leksykalna.pas Środowisko czasu wykon. Analiza składniowa Generacja kodu pośr. Generacja kodu wynik..exe Wyrażenia regularne Gramatyki

J.Nawrocki, Języki formalne i gramatyki Zastosowania języków formalnych Kompilatory dla nowych języków programowania (C#, xSQL) Generowanie kodu na podstawie modeli (UML, HRT HOOD, sieci Petri’ego) Przypadki testowe (pokrycie, gen.) Szacowanie maksymalnego czasu wykonania programów Analiza łańcuchów DNA (wzorce) Przetwarzanie dokumentów XML

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

J.Nawrocki, Gramatyki i translatory Produkcje i wywód 1+ =1+ =1+ =1+ = { 1, 11, 111,... } Symbol początkowy: S Produkcje: (reguły zastępowania) S  1 S  S 1 Wywód: 111: S 1) 2) S 1 S  2  2  1 1: S 1  1

J.Nawrocki, Gramatyki i translatory Inne produkcje S  A B A  1 A  A 1 B  0 B  B 0 Wywód: 10: SA BA B 1 B 1 0  1  2  4 1) 2) 3) 4) 5) 100:

J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy

J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy Symbole nieterminalne N = {S, A, B}

J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy Symbole nieterminalne N = {S, A, B} Symbole terminalne T = {0, 1}

J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy Symbole nieterminalne N = {S, A, B} Symbole terminalne T = {0, 1} Produkcje

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

J.Nawrocki, Gramatyki i translatory Domknięcie relacji wywodu S  A B A  1 A  A 1 B  0 B  B 0 Wywód: SA BA B 1 B 1 0  1  2  4 1) 2) 3) 4) 5) S 1 0  + Z S można wywieść 10 stosując 1 lub więcej produkcji

J.Nawrocki, Gramatyki i translatory Zbiór ciągów nad alfabetem S  A B A  1 A  A 1 B  0 B  B 0 Alfabet = Zbiór symboli terminalnych T = {0, 1} Zbiór ciągów nad alfabetem T*: Zbiór wszystkich ciągów skończonych zbudowanych z elementów zbioru T. Jeśli T = {0, 1} to T* = { , 0, 1, 00, 01, 10, 11, 000,...} Jeśli T = {a, b, c} to T* = { , a, b, c, aa, ab, ac, ba, bb, bc,...}

J.Nawrocki, Gramatyki i translatory Język formalny Gramatyka G = S – Symbol początkowy N – Zbiór symboli nieterminalnych T – Zbiór symboli terminalnych P – Zbiór produkcji L(G) = {x  T*: S x  + } Język formalny L zdefiniowany przez gramatykę G:

J.Nawrocki, Gramatyki i translatory Język formalny L(G) = {x  T*: S x  + } S  A B A  1 A  A 1 B  0 B  B 0 S 1 B  + Czy 1B należy do L(G) ? Czy 11 należy do L(G) ? 11  T* SA BA B 1 B  1  2 1) 2) 3) 4) 5)

J.Nawrocki, Gramatyki i translatory Równoważność gramatyk Gramatyki G1 i G2 są równoważne wtedy i tylko wtedy, gdy L(G1) = L(G2) S  A B A  1 A  A 1 B  0 B  B 0 G1 S  S 0 S  A 0 A  1 A  A 1 G2 S  1 S S  1 A A  0 A  0 A G3

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe Noam Chomsky

J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe Noam Chomsky

J.Nawrocki, Gramatyki i translatory Gramatyki kontekstowe Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe Noam Chomsky Gramatyki klasy 0

J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe

J.Nawrocki, Gramatyki i translatory Gramatyki liniowe b 1.S  S b 2.S  A a 3.A  a a 4.A  A a Lewoliniowa Prawoliniowa a 1.S  a S 2.S  B b 3.B  b B b 4.B  b aba+ b+aba+ b+ Twierdzenie. Dla każdego wyrażenia regularnego istnieje gramatyka lewoliniowa ( prawoliniowa ) opisująca ten sam język.

J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe

J.Nawrocki, Gramatyki i translatory Gramatyka bezkontekstowa () 1. W  ( W ) 1 2. W  1 Jeden nieterminal

J.Nawrocki, Gramatyki i translatory Gramatyka bezkontekstowa 1.W  S + 2.W  W + S 3. S  C * 4. S  S * C 5. C  L () 6. C  ( W ) 1 7. L  L  L  3 Jeden nieterminal

J.Nawrocki, Gramatyki i translatory Gramatyki kontekstowe Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe

J.Nawrocki, Gramatyki i translatory Gramatyka kontekstowa a 1. S  a X Y a 2. S  a S X Y aa b 3. a X  a b bb b 4. b X  b b cc c 5. c X  c c bb c 6. b Y  b c cc c 7. c Y  c c

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

J.Nawrocki, Gramatyki i translatory Problem Język liczb binarnych L = {0, 1, 00, 01, 10, 11,...}. Po liczbie jest spacja. Napisać program sprawdzania, czy x  L. N – liczba binarna (Numer binarny) C – Cyfra binarna N = C + N = {C, CC, CCC,...} N  C N N  C

J.Nawrocki, Gramatyki i translatory Problem Język liczb binarnych L = {0, 1, 00, 01, 10, 11,...}. Po liczbie jest spacja. Napisać program sprawdzania, czy x  L. N – liczba binarna (Numer binarny) C – Cyfra binarna N = C + N = {C, CC, CCC,...} gdzie C = {0, 1} N  C N N  C C  0 C  1

J.Nawrocki, Gramatyki i translatory Bufor wejściowy #define Bool int #define True 1 #define False 0 void Init() Bool Widzisz(char c) void Nastepny() 1011‘ N  C N N  C C  0 C  1

J.Nawrocki, Gramatyki i translatory Bufor wejściowy #define Bool int #define True 1 #define False 0 char Token; void Init(){ scanf("%c", &Token); return; } Bool Widzisz(char c){ return Token == c; } void Nastepny(){ scanf("%c", &Token); return; } 1011‘ Token N  C N N  C C  0 C  1

J.Nawrocki, Gramatyki i translatory Bufor wejściowy void main(){ Init(); if (N()){ printf("OK\n"); }else{ printf("Error\n"); } return; } Token N  C N N  C C  0 C  1

J.Nawrocki, Gramatyki i translatory Bufor wejściowy Bool C(){ if (Widzisz('0') || Widzisz('1')){ Nastepny(); return True; }else{ return False; } Token N  C N N  C C  0 C  1

J.Nawrocki, Gramatyki i translatory Bufor wejściowy #define N_ogr ' ' Bool N(){ Bool ok; ok= C(); if (ok && Widzisz(N_ogr)){ return ok; }else{ if (ok){ return N(); }else{ return False; } Token N  C N N  C C  0 C  1

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

J.Nawrocki, Gramatyki i translatory Nieterminale mogą być problemem Boolean W() 0 1. W  A W  B 1 3. A  B ... void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; }

J.Nawrocki, Gramatyki i translatory Boolean W() { if (Current ==... ) 0 return A() & Take(‘ 0 ’); 1 else return B() & Take(‘ 1 ’); } Nieterminale mogą być problemem void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; } 0 1. W  A W  B 1 3. A  B ...

J.Nawrocki, Gramatyki i translatory Boolean W() { if (Current ==... ) 0 return A() & Take(‘ 0 ’); 1 else return B() & Take(‘ 1 ’); } Nieterminale mogą być problemem A .. first(A) = {b  T: A  * b  } 0 1. W  A W  B 1 3. A  B ... void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; }

J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  B  4 (2 first(A) = { (, 2 }

J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 }

J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } first(W) = first(A)  first(B)

J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } first(W) = first(A)  first(B)

J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A W  0 B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } first(W) = first(A) ...

J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A W  0 B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } 0 first(W) = first(A)  { 0 }

J.Nawrocki, Gramatyki i translatory Zbiory first 0 1. W  A W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } Boolean W() { (2 if (Current == ‘ ( ’ || Current == ‘ 2 ‘ ) 0 return A() & Take(‘ 0 ’); 1 else return B() & Take(‘ 1 ’); } void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; }

J.Nawrocki, Gramatyki i translatory Podsumowanie Gramatyka formalna Wywód zdania Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Wreszcie!

J.Nawrocki, Gramatyki i translatory Literatura J. Cybulka, B. Jankowska, J. Nawrocki, Automatyczne przetwarzanie tekstów. AWK, Lex i YACC, Nakom, Poznań, 

J.Nawrocki, Gramatyki i translatory Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Zbyt wolno czy zbyt szybko? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co poprawić i jak?