Zmodyfikować przykładową gramatyke `pl0' tak by zakazać procedur zanurzonych wewnątrz innych. Zamiast tego dodać parametry do procedur, tak by można było napisać deklarację:
procedure proc1(x, y, z); begin end;a następnie wywołanie:
call proc1(1, 2*x, y);Zapoznać się z zawartością katalogu `pl0/2' i `pl0/3', wykorzystać je do wypisania drzewa rozbioru.
Zmodyfikować przykładową gramatyke `pl0' tak by dodać funkcje (zwracające wartości całkowitoliczbowe). Funkcje wolno będzie używać jako elementy wyrażeń. Należy też dodać instrukcję `return wyrażenie' która pozwoli na zwracanie wartości. Deklaracja ma wyglądać następująco:
function fun(x, y, z); begin return 0 end;Dla uproszczenia wymagamy by funkcja miała choć jeden parametr. Dobrze to zrobić po rozwiązaniu zadania 1.
Bazująć na gramatyce z zadań 1 i 2 przerobić przykład `pl0/3' tak by wypisać odpowiadający im kod w C. Dla uproszcznia wypisana wersja wynikowa ma być możliwie podobna do żródla. Uwaga: oryginalne `pl0' dopuszcza definicje procedur wewnątrz innych procedur, co jest nielegalne w C. Dlatego w zadaniu zakazaliśmy takich procedur (pozwala to na bezpośrednie tłumaczenie).
W przykładzie `pl0/2' zmienić sposób wypisywania list (szczególnie listy instrukcji) tak by ograniczyć poziom wcięć. Innymi słowy, wszystkie elementy list powinny pojawić się na tym samym poziomie.