Zadanie 1

Napisać wyrażenia regularne dla flex-a do rozpoznawania liczb. Mają one rozpoznawać 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'). W szczególności chcemy odróżniać liczby dziesiętne, szesnastkowe i zmiennopozycyjne. Uwaga: Zakładamy że liczby dziesiętne i liczby zmiennopozycyjne nie zawierają zer na początku.

Zadanie 2

Mamy następującą gramatykę:
S : S S | 'x'
Jak wygląda język generowany przez tą gramatykę. Pokazać że gramatyka ta nie jest jednoznaczna zaś ilość drzew rozbioru rośnie wykładniczo z długością słowa (dokładnie jest to liczba Catalana: ((2*n-2)!)/(((n-1)!*(n-1)!)*n) ).

Zadanie 3

Zakładamy że każda prawa strona reguły gramatyki zaczyna się od nawiasu otwierającego a kończy się nawiasem zamykającym. Nawiasy nie występują w środku reguły. Ponadto zakładamy że dla różnych symboli pomocniczych prawe strony reguł są różne. Opisać słownie jak można przeprowadzić analizę syntaktyczną dla takiej gramatyki.

Zadanie 4

Napisać gramatykę bezkontekstową opisującą listy składające się z pewnej liczby symboli 'x' oddzielonych średnikami. Dopuszczamy użycie kilku średników do oddzielenia dwu 'x'-ów i średnik na końcu. Np:
x;;x;x;

Zadanie 5

Napisać gramatykę bezkontekstową opisującą listy odzielone średnikami których elementami są listy 'x' oddzielonych precinkami, np:
x,x;x,x,x;x,x
Uwaga: ten opis jest celowo nieprecyzyjny, proszę uzupełnić szczeguły według uznania i wyjaśnić jak się one tłumaczą na gramatykę.

Zadanie 6

Symbolami końcowymi jęzka są nawiasy '(', ')', '[', ']', '{', '}'. Napisać gramatykę dla układów poprawnie zagniżdżonych nawiasów (nawiasowi otwierającemu ma odpowiadać nawias zamykający tego samego rodzaju), np:
([]([][]))[]()

Zadanie 7

Pokazać że gramatyka:

S: A 'r' | B 'l' ;
A: /* puste */ | 'x' A ;
B: /* puste */ | B 'x' ;
jest jednoznaczna i można dla niej podać prosty algorytm analizy syntaktycznej.