Zadanie 1

Zakodować automat skończony rozpoznający język składający się z czterch słów 'do', 'downto', 'for', 'to'. Automat powinien odzczytywac (i aktualizować) zmienna 'biezacy_znak' (tak naprawde ten znak to podglad). Zakładamy że przed wywołaniem automatu zmienna 'biezacy_znak' jest wypełnina pierwszym znakiem tekstu, automat ma "zjeść" rozpoznane słowo i zostawić w zmiennj 'biezacy_znak' następny znak.

Rozszerzyć automat, tak by dodatkowo rozpoznwał dowolne ciągi spacji. Następnie dodać rozpoznawanie identyfikatorów (dowolnych ciągów liter).

Uwaga: Automat ma wybierać ciąg maksymalnej długości tzn. 'down' jest identyfikatorem a całe 'downto' to słowo kluczowe. Kolejne wywołania automatu mają dawać kolejne słowa (a właściwie na przemian ciągi spacji i słowa).

Zadanie 2

Zapoznać się z przykładowym kompilatorem. Zmodyfikować go, np:

Zadanie 3

Napisać funkcję (analizator sytaktyczny) który wyprodukuje strukturę drzewiastą (podobną do tej produkowanej przez przykładowy kompilator) z :

Pierwsze dwa warianty łatwo zrobić rekursywnie, trzeci łatwo zrobić czytając wyrażenie of końca, jeśli czyta się od początku to trzeba użyć stos.

Zadanie 4

Napisać funkcję która mająć daną strukturę drzewiastą (zrobioną przez funkcję z Zadania 3) wypisze wyrażenie z powrotem w jednej z form zewnętrznych (podobnie jak funkcja 'wypisz' przykładowego kompilatora).