Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWalery Lamparski Został zmieniony 10 lat temu
1
Translatory Copyright, 2006 © Jerzy R. Nawrocki Jerzy.Nawrocki@put.poznan.pl www.cs.put.poznan.pl/jnawrocki/wdi/ Wprowadzenie do informatyki Wykład 11
2
J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych
3
J.Nawrocki, Gramatyki i translatory Gramatyka S A B A 1 A A 1 B 0 B B 0 Symbol początkowy
4
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}
5
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}
6
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
7
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
8
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:
9
J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomskyego Gramatyki liniowe Noam Chomsky
10
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.
11
J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomskyego Gramatyki liniowe Gramatyki bezkontekstowe Noam Chomsky
12
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
13
J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych
14
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 ::= +
15
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 ::= + ::= * ::= ( *) * ::= ( +) *
16
J.Nawrocki, Gramatyki i translatory Przejście z EBNF na gramatyki ::= * J B J A J
17
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
18
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
19
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
20
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
21
J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych
22
J.Nawrocki, Gramatyki i translatory Definicja sterowana składnią L -> C L L -> C val= L.val + 1; val= 1; Liczba cyfr liczby naturalnej
23
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;
24
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;
25
J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i język Notacja Backusa-Naura Definicje sterowane składnią Translacja metodą zejść rekurencyjnych
26
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;
27
J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = "0123456789"; 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;
28
J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = "0123456789"; 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;
29
J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = "0123456789"; 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;
30
J.Nawrocki, Gramatyki i translatory Translacja Bool L(int *val, int *order){ Bool ok; char First_L [] = "0123456789"; 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;
31
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!
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.