Metody Programowania - Lista 9

Zadanie 1

Zapoznać się z programami przykładowymi parse1.p i parse2.p. Napisać procedurę która z drzewa produkowanego przez parse1.p wyprodukuje z powrotem program, wykonujący te same obliczenia jak oryginaly program, ale być może wyglądający inczej. Procedura ta powinna się starać wypisać ładny wynik: każde podstawienie w oddzielnej linii, instrukcje wewnątrz pętli i w gałęziach instrukcji if z wcięciami.

Zadanie 2

Uprościć program parse2.p, tak by obsługiwał tylko wyrażenia arytmetyczne. Następnie dodać obsługę funkcji logarytmicznej i wykładniczej. Wynik z otrzymanego analizatora przekazać do procedury różniczkującej z zadania 4 z listy 7.

Zadanie 3

Napisać procedurę która upraszcza (częściowo "spłaszcza") drzewa. Dokładniej, jeśli dany wezeł drzewa jest reprezentowany przez listę jednoelementową ma być on zastąpiony przez jedyny element tej listy.

Zadanie 4

Napisać procedurę "upraszczającą" wyrażenia arytmetyczne (reprezentowane przez drzewa). Procedura ta powinna pomijać dodawanie 0 i mnożenie przez 1 oraz wykonać działania których argumentami są liczby.