Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.

Slides:



Advertisements
Podobne prezentacje
Lingwistyka Matematyczna
Advertisements

Lingwistyka Matematyczna
Lingwistyka Matematyczna
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Analiza Składniowa Wstępująca
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
Lingwistyka Matematyczna
Metoda pierwszeństwa operatorów
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
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
Copyright © Jerzy R. Nawrocki Standardy serii ISO Inżynieria oprogramowania II Wykład.
Budowa komputera Wstęp do informatyki Wykład 15
Testy akceptacyjne Analiza systemów informatycznych Wykład 9
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.
Bazy danych Wprowadzenie do informatyki Wykład 9
Asembler i koncepcja von Neumanna
Informatyka jako dziedzina wiedzy Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Przetwarzanie tekstów i AWK Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
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
Komputerowe systemy sterowania Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
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.
Kompilacja przechodnia
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
ANALIZA LEKSYKALNA. Zadaniem analizatora leksykalnego jest przetwarzanie danych pochodzących ze strumienia wejściowego a także rozpoznawanie ciągów znaków.
Copyright © Jerzy R. Nawrocki Metody formalne Inżynieria oprogramowania II Wykład 5.
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM
Przetwarzanie tekstu i strony WWW Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Generator analizatorów składniowych
Języki i automaty część 5.
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Gramatyki i translatory
Składnia instrukcji warunkowej if…
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Dokumenty elektroniczne Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do.
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.
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Wprowadzenie do teoretycznych podstaw informatyki Copyright, 2004 © Jerzy R. Nawrocki
Od algebry Boole’a do komputera Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie.
ANALIZA SKŁADNIOWA.
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
Przetwarzanie języka Wprowadzenie do informatyki Jerzy Nawrocki
Zapis prezentacji:

Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych

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 Domknięcie relacji wywodu S A B A 1 A A 1 B 0 B B 0 Wywód: SA BA B 1 B ) 2) 3) 4) 5) S Z S można wywieść 10 stosując 1 lub więcej produkcji

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 Klasyfikacja Chomskyego Gramatyki liniowe Noam Chomsky

J.Nawrocki, Gramatyki i translatory Gramatyki liniowe 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 prawoliniowa opisująca ten sam język.

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

J.Nawrocki, Gramatyki i translatory Języki nieliniowe ab 1.S a S b ab 2.S a b aban bnaban bn n > 0 Jeden nieterminal

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych

J.Nawrocki, Gramatyki i translatory Rozszerzona notacja Backusa-Naura John Backus Produkcje + wyrażenia regularne ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= +

J.Nawrocki, Gramatyki i translatory Rozszerzona notacja Backusa-Naura John Backus Produkcje + wyrażenia regularne ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= + ::= * ::= ( *) * ::= ( +) *

J.Nawrocki, Gramatyki i translatory Przejście z EBNF na gramatyki ::= * J B J A J

J.Nawrocki, Gramatyki i translatory Przejście z EBNF na gramatyki John Backus ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * C 0 C 1 C 2... C 9

J.Nawrocki, Gramatyki i translatory Przejście z EBNF na gramatyki John Backus ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * ::= * J B J A J L C L C L

J.Nawrocki, Gramatyki i translatory Przejście z EBNF na gramatyki John Backus ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * ::= * J B J A J S L S L * S

J.Nawrocki, Gramatyki i translatory Przejście z EBNF na gramatyki John Backus ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= * ::= ( *) * ::= ( +) * ::= * J B J A J W S W S + W

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych

J.Nawrocki, Gramatyki i translatory Definicja sterowana składnią L -> C L L -> C val= L.val + 1; val= 1; Liczba cyfr liczby naturalnej

J.Nawrocki, Gramatyki i translatory Definicja sterowana składnią W -> S + W W -> S S -> L * S S -> L L -> C L L -> C val= C.val * L.order + L.val; order= L.order*10; val= C.val; order= 10;

J.Nawrocki, Gramatyki i translatory Definicja sterowana składnią W -> S + W W -> S S -> L * S S -> L L -> C L L -> C val= C.val * L.order + L.val; order= L.order*10; val= C.val; order= 10; val= L.val * S.val; val= L.val;

J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych

J.Nawrocki, Gramatyki i translatory Translacja W -> S + W W -> S S -> L * W S -> L L -> C L L -> C val= C.val * L.order + L.val; order= L.order 10; val= C.val; order= 10;

J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = " "; char Follow_L []= "+*="; int C_val, L_order, L_val; ok= C(&C_val); if (ok && Widzisz(First_L)){ /*** L -> C L ***/ ok= L(&L_val, &L_order); *val= C_val * L_order + L_val; *order= L_order * 10; return ok; } else if (ok && Widzisz(Follow_L)){ /*** L -> C ***/ *val= C_val; *order= 10; return ok; } else return SyntaxError(1); } W -> S + W W -> S S -> L * W S -> L L -> C L L -> C val= C.val * L.order + L.val; order= L.order 10; val= C.val; order= 10;

J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = " "; char Follow_L []= "+*="; int C_val, L_order, L_val; ok= C(&C_val); if (ok && Widzisz(First_L)){ /*** L -> C L ***/ ok= L(&L_val, &L_order); *val= C_val * L_order + L_val; *order= L_order * 10; return ok; } else if (ok && Widzisz(Follow_L)){ /*** L -> C ***/ *val= C_val; *order= 10; return ok; } else return SyntaxError(1); } W -> S + W W -> S S -> L * W S -> L L -> C L L -> C val= C.val * L.order + L.val; order= L.order 10; val= C.val; order= 10;

J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = " "; char Follow_L []= "+*="; int C_val, L_order, L_val; ok= C(&C_val); if (ok && Widzisz(First_L)){ /*** L -> C L ***/ ok= L(&L_val, &L_order); *val= C_val * L_order + L_val; *order= L_order * 10; return ok; } else if (ok && Widzisz(Follow_L)){ /*** L -> C ***/ *val= C_val; *order= 10; return ok; } else return SyntaxError(1); } W -> S + W W -> S S -> L * W S -> L L -> C L L -> C val= C.val * L.order + L.val; order= L.order 10; val= C.val; order= 10;

J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = " "; char Follow_L []= "+*="; int C_val, L_order, L_val; ok= C(&C_val); if (ok && Widzisz(First_L)){ /*** L -> C L ***/ ok= L(&L_val, &L_order); *val= C_val * L_order + L_val; *order= L_order * 10; return ok; } else if (ok && Widzisz(Follow_L)){ /*** L -> C ***/ *val= C_val; *order= 10; return ok; } else return SyntaxError(1); } W -> S + W W -> S S -> L * W S -> L L -> C L L -> C val= C.val * L.order + L.val; order= L.order 10; val= C.val; order= 10;

J.Nawrocki, Gramatyki i translatory Podsumowanie Gramatyki i języki EBNF: produkcje + wyr. regularne Przejście z EBNF na gramatykę Definicja sterowana składnią Translacja metodą zejść rekurencyjnych Wreszcie!