Metody Programowania - Lista 8

Zadanie 1

Napisać rekursywny analizator syntaktyczny wyrażeń logicznych. Ma on przekształcać wyrażenie logiczne do postaci drzewiastej. Wyrażenie logiczne składa się w wyrażeń elementarnych (predykatów) będących słowami lub słowami z listą argumentów (zmiennych) w nawiasach. Wyrażenie logiczne buduje się z wyrażeń elementarnych przy pomocy spójników logicznych "not", "and" i "or" oraz kwatyfikatorów, ogólnego "forall" i szczegółowego "exists". Kwantyfikatory wiążą najmocniej. Np.

forall x P(x) and exists y P(y)
ma być przekształcone na
[and [forall x [app P x]] [exists y [app P y]]]
Dodać otrzymany analizator do programu hao-wang.p i przetestować (hao-wang.p nie obsługuje kwatyfikatorów, więc można przetestować tylko zdania).