Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11."— Zapis prezentacji:

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!


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

Podobne prezentacje


Reklamy Google