260 likes | 523 Views
Lingwistyka Matematyczna. wykład 4. Agenda. Kompilacja Drzewo wyprowadzeń Gramatyka z translacją Podsumowanie Q&A. Kompilacja. Kompilacja Tłumaczenie kodu napisane w jednym języku na drugi Sprawdzanie poprawności kodu W kompilacji zastosowanie mają: Lingwistyka matematyczna
E N D
Lingwistyka Matematyczna wykład 4
Agenda • Kompilacja • Drzewo wyprowadzeń • Gramatyka z translacją • Podsumowanie • Q&A Mgr inż. Michał Jaros
Kompilacja • Kompilacja • Tłumaczenie kodu napisane w jednym języku na drugi • Sprawdzanie poprawności kodu • W kompilacji zastosowanie mają: • Lingwistyka matematyczna • Języki formalne Mgr inż. Michał Jaros
Kompilacja Przód kompilatora (z ang. „front end”) • Analiza leksykalna • Tokenizacja kodu źródłowego • Utworzenie tablicy symboli • Analiza Składniowa • Utworzenie drzewa wyprowadzeń • Sprawdzenie poprawności gramatycznej • Analiza semantyczna • Sprawdzanie sensu (sprawdzanie typów, ...) • Uzupełnienie tablicy symboli Mgr inż. Michał Jaros
Kompilacja Środek kompilatora (z ang. „middle end”) • Generacja kodu pośredniego • Ogólna optymalizacja Mgr inż. Michał Jaros
Kompilacja Tył kompilatora (z ang. „back end”) • Optymalizacja kodu • Generacja kodu wynikowego Mgr inż. Michał Jaros
Kompilacja Mgr inż. Michał Jaros
Kompilacja Kody pośrednie dla różnych języków Mgr inż. Michał Jaros
Drzewo wyprowadzeń Drzewo wyprowadzeń • Hierarchiczna struktura graficznie reprezentująca wyprowadzenie zdania z gramatyki • Korzeń = Symbol początkowy • Gałęzie = Symbole pomocnicze • Liście = Symbole końcowe • Struktura gałęzi = Produkcje Mgr inż. Michał Jaros
Drzewo wyprowadzeń S::=SAB;|AB; A::=type B::=B,C|C C::=id Mgr inż. Michał Jaros
Drzewo wyprowadzeń Niejednoznaczność składni • Zdanie ma więcej niż jedno drzewo wyprowadzeń. S::=E E::=E+E|E*E|(E)|id id+id*id Mgr inż. Michał Jaros
Drzewo wyprowadzeń id+id*id Mgr inż. Michał Jaros
Drzewo wyprowadzeń S::=C C::=D+C|D D::=E*D|E E::=(C)|id id+id*id Mgr inż. Michał Jaros
Drzewo wyprowadzeń Przypadek rzeczywisty • Niejednoznaczność instrukcji warunkowejif-else w językach C oraz Pascal Pascal S::=ε| stmt| if W then SL| if W then SL else SL SL::=SL;S | S Mgr inż. Michał Jaros
Drzewo wyprowadzeń if W then if W then S else S Mgr inż. Michał Jaros
Drzewo wyprowadzeń Problem • Niejednoznaczność if-else • Języki programowania Pascal i C Rozwiązanie • Słowo kluczowe else jest kojarzone z najbliżej występującym słowem kluczowym if Mgr inż. Michał Jaros
Drzewo wyprowadzeń Eliminacja niejednoznaczności instrukcji warunkowej if-else w języku Modula-2. Analogiczne rozwiązanie w VisualBasic. S::=ε| stmt| if W then SL end| if W then SL else SL end SL::=SL;S | S Modula-2 Mgr inż. Michał Jaros
Drzewo wyprowadzeń Pascal • if W thenif W then S else S Modula-2 • if W thenif W then S else S endend • if W then if W then S endelse S end Mgr inż. Michał Jaros
Gramatyka z translacją Translacja sterowana składnią • Gramatyka bezkontekstowa • Zbiór terminali uzupełniony dodatkowymi symbolami (symbole translacji) • Symbole translacji generują dodatkowe słowo wyjściowe Mgr inż. Michał Jaros
Gramatyka z translacją S ::= E E ::= T El El ::= +T El | -T El | ε T ::= F Tl Tl ::= * F Tl | / F Tl | ε F ::= - F | (E) | id id ::= w | x | y | z Mgr inż. Michał Jaros
Gramatyka z translacją S ::= E E ::= T El El ::= +T {+} El | -T {-} El | ε T ::= F Tl Tl ::= * F {*} Tl | / F {/} Tl | ε F ::= - F {-} | (E) | id {id} id ::= w | x | y | z Mgr inż. Michał Jaros
Gramatyka z translacją Mgr inż. Michał Jaros
Podsumowanie • Kompilacja • Drzewo wyprowadzeń • Gramatyka z translacją Mgr inż. Michał Jaros
Q&A Mgr inż. Michał Jaros
KONIEC Mgr inż. Michał Jaros