\documentclass[a4paper]{article}
\setlength{\oddsidemargin}{-1cm}
\setlength{\topmargin}{-3cm}
\setlength{\textwidth}{18cm}
\setlength{\textheight}{26cm}
\pagestyle{empty}

\begin{document}
\begin{center}
\textbf{Prevodioci i interpretatori - jun 2005. - teorijski deo}
\end{center}
\begin{enumerate}
\item Konstruisati minimalni deterministi\v cki kona\v cni automat koji opisuje jezik $(abb)+(ab?a|b)*$
\item Konstruisati SLR parser za gramatiku
\begin{eqnarray*}
  stmt &\rightarrow& ID\ =\ e\ ;\\
  e &\rightarrow& ID\ +\ e \\
     &|& ID
\end{eqnarray*}
Parser opisati action i goto tablicama i simulirati njegov rad prilikom prihvatanja niske
$ID = ID + ID + ID;$
\item Biblioteka \v cuva knjige i \v casopise.

Sve knjige se karakteri\v su svojim
imenom, autorom (autorima), izdava\v cem i godinom izdanja. Pored ovoga, za neke knjige
je poznat i broj strana kao i cena.

\v Casopisi su predstavljeni imenom i
brojem izdanja. Za svaki \v casopis poznat je i niz \v clanaka koji su u njemu \v stampani.

Za svaki \v clanak, poznata su imena autora, i ime \v clanka.

Napisati {\sc dtd} koji
opisuje sturkturu {\sc xml} dokumenata koji opisuju datu biblioteku. Atributima predstaviti
isklju\v civo imena knjiga, \v casopisa, autora, odnosno \v clanaka. Napisati jedan {\sc xml}
dokument koji sadr\v zi bar dve knjige, i bar jedan \v casopis sa najmanje dva \v clanka.
\end{enumerate}


\newpage
\begin{center}
\textbf{Prevodioci i interpretatori - jun 2005. - prakti\v cni deo}
\end{center}
\begin{enumerate}
\item U direktorijumu \verb"public_html" i njegovim
poddirektorijumima se nalaze {\sc html} datoteke. Napisati {\sc
perl} skript koji ispisuje zajedni\v cki izve\v staj o svim
hiperlinkovima pronadjenim u svim {\sc html} datotekama. Izve\v
staj bi trebalo da budu leksikografski uredjeni na osnovu domena
(com, net, yu, \ldots) npr. \hfill[15]
\begin{verbatim}
com:
    http://www.google.com
    http://www.yahoo.com
net:
    http://www.b92.net/sport/
yu:
    http://www.matf.bg.ac.yu/~filip
\end{verbatim}

\item Napisati interpreter za jezik koji dopu\v sta definisanje lista celih brojeva.
Jezik dopu\v sta definisanje promenljivih tipa \verb"list".
Konstante se zapisuju tako \v sto se izmedju uglastih zagrada navedu elementi lista odvojeni
razmacima. Ukoliko je lista jedno\v clana zagrade se mogu izostaviti. Prilikom deklaracije,
promenljive se inicijalizuju na praznu listu \verb"[]". Podr\v zana je naredba dodele izraza
promenljivim kreiranih kori\v s\' cenjem
operacija \verb"'" - obrtanje liste, \verb"." nadovezivanje dve liste, \verb"+" sabiranje
dve liste sa istim brojem elemenata, \verb"*" pokoordinatno mno\v zenje dve liste sa
istim brojem elemenata, \verb"@" ``skalarno'' mno\v zenje dve liste sa istim brojem elemenata.
Ugradjena funkcija \verb"print" ispisuje listu, dok \verb"length" izra\v cunava du\v zinu
liste.
Npr.
\begin{verbatim}
list a = [1 2 3];
list b = a', c = a . b;
print(b, c);                                            [3 2 1]
d = [1 2].b.length(a) + c;                              [1 2 3 3 2 1]
print(d);                                               [2 4 6 5 3 4]
\end{verbatim}


\begin{enumerate}
\item Kreirati leksi\v cki analizator za opisani jezik \hfill[2]
\item Definisati strukturu podataka za \v cuvanje lista celih
brojeva. \hfill[2] \item Kreirati efikasnu ``tablicu simbola'' u
kojoj se \v cuvaju vrednosti definisanih promenljivih. \hfill[3]
\end{enumerate}
\end{enumerate}

\vspace{1cm}


\begin{center}
\textbf{Prevodioci i interpretatori - jun 2005. - prakti\v cni
deo}
\end{center}
\begin{enumerate}
\item U direktorijumu \verb"public_html" i njegovim
poddirektorijumima se nalaze {\sc html} datoteke. Napisati {\sc
perl} skript koji ispisuje zajedni\v cki izve\v staj o svim
hiperlinkovima pronadjenim u svim {\sc html} datotekama. Izve\v
staj bi trebalo da budu leksikografski uredjeni na osnovu domena
(com, net, yu, \ldots) npr. \hfill[15]
\begin{verbatim}
com:
    http://www.google.com
    http://www.yahoo.com
net:
    http://www.b92.net/sport/
yu:
    http://www.matf.bg.ac.yu/~filip
\end{verbatim}

\item Napisati interpreter za jezik koji dopu\v sta definisanje
lista celih brojeva. Jezik dopu\v sta definisanje promenljivih
tipa \verb"list". Konstante se zapisuju tako \v sto se izmedju
uglastih zagrada navedu elementi lista odvojeni razmacima. Ukoliko
je lista jedno\v clana zagrade se mogu izostaviti. Prilikom
deklaracije, promenljive se inicijalizuju na praznu listu
\verb"[]". Podr\v zana je naredba dodele izraza promenljivim
kreiranih kori\v s\' cenjem operacija \verb"'" - obrtanje liste,
\verb"." nadovezivanje dve liste, \verb"+" sabiranje dve liste sa
istim brojem elemenata, \verb"*" pokoordinatno mno\v zenje dve
liste sa istim brojem elemenata, \verb"@" ``skalarno'' mno\v zenje
dve liste sa istim brojem elemenata. Ugradjena funkcija
\verb"print" ispisuje listu, dok \verb"length" izra\v cunava du\v
zinu liste. Npr.
\begin{verbatim}
list a = [1 2 3]; list b = a', c = a . b; print(b, c);
[3 2 1] d = [1 2].b.length(a) + c;                              [1
2 3 3 2 1] print(d);
[2 4 6 5 3 4]
\end{verbatim}


\begin{enumerate}
\item Kreirati leksi\v cki analizator za opisani jezik \hfill[2]
\item Definisati strukturu podataka za \v cuvanje lista celih
brojeva. \hfill[2] \item Kreirati efikasnu ``tablicu simbola'' u
kojoj se \v cuvaju vrednosti definisanih promenljivih. \hfill[3]
\end{enumerate}
\end{enumerate}


\newpage

\begin{enumerate}
\item[]
\begin{enumerate}
\setcounter{enumii}{3}
\item Implementirati interpreter za deo
jezika obuhva\' cen slede\' cim primerom
\begin{verbatim}
list a = [1 2 3], b = 1;                                [1 2 3]
print(a, b);                                            [1]
\end{verbatim}
\hfill[3]

\item Implementirati funkciju length. Pro\v siriti interpereter tako da radi za primer
\begin{verbatim}
list a = [1 2 3];                                       [3]
print(length(a));
\end{verbatim}
\hfill[3]

\item Napraviti funkciju za obrtanje liste. Pro\v siriti interpreter tako da radi za primer
\begin{verbatim}
list a = [1 2 3], b = a';                               [1 2 3]
print(a, b);                                            [3 2 1]
\end{verbatim}
\hfill[5]

\item Napraviti funkciju za nadovezivanje dve liste.
Pro\v siriti interpreter tako da radi za primer
\begin{verbatim}
list a = [1 2].[3 4], b = 1.[3 2]';                     [1 2 3 4 1 2 3]
print(a.b);
\end{verbatim}
\hfill[6]

\item Napraviti funkciju za sabiranje, mno\v zenje i pokoordinatno mno\v zenje
dve liste datih dimenzija.
Pro\v siriti interpreter tako da radi za primer
\begin{verbatim}
list a = [1 2]+[3 4]', b = (1.[2 3])*([2 3].1);         [5 5]
print(a, b, a@a);                                       [2 6 3]
\end{verbatim}
\hfill[9]

\item Objediniti sve u celinu, proveriti da li radi za ve\' ce primere  i dokumentovati program
\hfill[2]
\end{enumerate}
\end{enumerate}

\vspace{1cm}

\begin{enumerate}
\item[]
\begin{enumerate}
\setcounter{enumii}{3} \item Implementirati interpreter za deo
jezika obuhva\' cen slede\' cim primerom
\begin{verbatim}
list a = [1 2 3], b = 1;                                [1 2 3]
print(a, b);                                            [1]
\end{verbatim}
\hfill[3]

\item Implementirati funkciju length. Pro\v siriti interpereter
tako da radi za primer
\begin{verbatim}
list a = [1 2 3];                                       [3]
print(length(a));
\end{verbatim}
\hfill[3]

\item Napraviti funkciju za obrtanje liste. Pro\v siriti
interpreter tako da radi za primer
\begin{verbatim}
list a = [1 2 3], b = a';                               [1 2 3]
print(a, b);                                            [3 2 1]
\end{verbatim}
\hfill[5]

\item Napraviti funkciju za nadovezivanje dve liste. Pro\v siriti
interpreter tako da radi za primer
\begin{verbatim}
list a = [1 2].[3 4], b = 1.[3 2]';                     [1 2 3 4 1
2 3] print(a.b);
\end{verbatim}
\hfill[6]

\item Napraviti funkciju za sabiranje, mno\v zenje i pokoordinatno
mno\v zenje dve liste datih dimenzija. Pro\v siriti interpreter
tako da radi za primer
\begin{verbatim}
list a = [1 2]+[3 4]', b = (1.[2 3])*([2 3].1);         [5 5]
print(a, b, a@a);                                       [2 6 3]
\end{verbatim}
\hfill[9]

\item Objediniti sve u celinu, proveriti da li radi za ve\' ce
primere  i dokumentovati program \hfill[2]
\end{enumerate}
\end{enumerate}




\end{document}
