Zadanie 1

W pewnym języku programowania część znacząca liczby zmiennopozycyjnej to ciąg cyfr, znaków podkreślenia i kropki. Dokładniej, ten ciąg ma zawierać dokładnie jedną kropkę i co najmniej jedną cyfrę. Znaki podkreślenia można używać dla poprawy czytelności. Przed częścią znaczącą może (ale nie musi) wystąpić znak (tzn. '+' lub '-'). Po której może wystąpić litera 'd' lub 'e'. Po literze może wystąpić wykładnik tzn. liczba całkowita. Na początku wykładnika może (ale nie musi) wystąpić znak (tzn. '+' lub '-'). W wykładniku również można umieszczać znaki podkreślenia. Napisać wyrażenie regularne opisujące te liczby. Następnie napisać odpowiednią gramatykę bezkontekstową.

Zadanie 2

Automat skończony jest zadany następującą tabelą przejścia:

stan 0: 'e' -> 1; [a-df-z] -> 4
stan 1: 'n' -> 2; [a-mo-z] -> 4; '_' -> 5
stan 2: 'd' -> 3; [a-ce-z] -> 4; '_' -> 5
stan 3: [a-z] -> 4; '_' -> 5
stan 4: [a-z] -> 4; '_' -> 5
stan 5: [a-z] -> 4
gdzie dla każdego stanu po dwukropku podajemy dozwolone przejścia, przy tym po strzałce jest numer stanu do którego mamy przejść. Stanem początkowym jest stan 0. W stanie 3 akceptujemy z wynikiem pierwszym. W stanie 4 akceptujemy z wynikiem drugim. Sprawdzić jak nasz automat zachowa się na następujących ciągach: "end", "end_", "_ala", "a__la", "a_l_a", "endala", "end_ala". Jak można zinterpretować wyniki tego automatu. Pokazać że ten automat jest minimalny. Pokazać że jeśli potraktujemy oba wyniki jako równoważne (tzn. przyjmiemy stany 3 i 4 po prostu jako akceptujące) to automat nie będzie minimalny. Znaleźć minimalną wersję po tej modyfikacji.

Zadanie 3

Napisać gramatyki regularne odpowiadające automatom z zadania 2.

Zadanie 4

Zakładamy że symbolami gramatyki są pojedyńcze znaki. Uzupełnić poniższą gramatykę regułami tak by rozpoznawała zwykłe liczby całkowite w notacji dziesiętnej, liczby całkowite w notacji szesnastkowej, tak jak w C: `0x1ab' i liczby zmiennopozycyjne (te muszą zawierać kropkę dziesiętną, np: `.001', `100.' `3.1415').

liczba : liczba_zmiennopozycyjna
       | liczba_dziesietna
       | liczba_szesnastkowa
       ;