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