Laboratorium
Transkrypt
Laboratorium
Podstawy Kompilatorów Laboratorium 4 Zad. 1: Proszę wskazać alfabet, terminale, nieterminale oraz domyślny symbol startowy w poniższej gramatyce: Liczba → L L → L Cyfra L → Cyfra Cyfra → 0 Cyfra → 1 Cyfra → 2 Cyfra → 3 Cyfra → 4 Cyfra → 5 Cyfra → 6 Cyfra → 8 Cyfra → 9 Zad. 2: Przyjmując gramatykę z zad. 1, które z poniższych form zdaniowych są zdaniami? Liczba 998 Cyfra58 LCyfraCyfra7 Zad. 3: Dana jest gramatyka: E → E + T E → T T → T * F T → F F → ( E ) F → id Proszę napisać lewostronne wyprowadzenie dla zdania: (id + id) * ((id + id) * id) Zad. 4: Korzystając z gramatyki z zad. 3, proszę narysować drzewo wyprowadzenia dla zdania: (id + id) * id Zad. 5: Proszę napisać produkcje jednoznacznej gramatyki bezkontekstowej dla języka regularnego generowanego przez wyrażenie regularne a+a*b+. Zad. 6: Proszę napisać produkcje jednoznacznej gramatyki bezkontekstowej dla języka regularnego generowanego przez wyrażenie regularne a*b+c. Odpowiedzi do zadań Zad. 1: Alfabet = {0,1,2,3,4,5,6,7,8,9,Cyfra,Liczba,L} Nieterminale = Liczba, L, Cyfra Terminale = 0,1,2,3,4,5,6,7,8,9 Symbol startowy = Liczba Zad. 2: Zdaniem jest łańcuch 998, gdyż nie zawiera nieterminali. Zad. 3: E ⇒ T ⇒ T * F ⇒ F * F ⇒ ( E ) * F ⇒ (E + T) * F ⇒ (T + T) * F ⇒ (F + T) * F ⇒ (id + T) * F ⇒ (id + F) * F ⇒ (id + id) * F ⇒ (id + id) * (E) ⇒ (id + id) * (T) ⇒ (id + id) * (T * F) ⇒ (id + id) * (F * F) ⇒ (id + id) * ((E) * F) ⇒ (id + id) * ((E + T) * F) ⇒ (id + id) * ((T + T) * F) ⇒ (id + id) * ((F + T) * F) ⇒ (id + id) * ((id + T) * F) ⇒ (id + id) * ((id + F) * F) ⇒ (id + id) * ((id + id) * F) ⇒ (id + id) * ((id + id) * id) Zad. 4: Zad. 5: Proszę zwrócić uwagę, że wyrażenie a+a*b+ generuje ten sam język co uproszczone wyrażenie a+b+. S A A B B → → → → → A B A a a B b b Zad. 6: S A A B B C → → → → → → A B C A a ε B b b c