\documentclass[a4paper,10pt]{article}

\setlength{\oddsidemargin}{0pt} \setlength{\evensidemargin}{0pt}
\setlength{\marginparwidth}{1in} \setlength{\marginparsep}{0pt}

\setlength{\topmargin}{0pt} \setlength{\headheight}{0pt}
\setlength{\headsep}{0pt} \setlength{\topskip}{0pt}

% A4 is 29,7301778cm x 21,0224103cm
%     =  9,7047944in x 6,2765395in
\setlength{\textheight}{24,6501778cm}
\setlength{\textwidth}{15,9424103cm} \setlength{\unitlength}{1in}

\begin{document}

\begin{center}
\textbf{Prevodioci i interpretatori - Novembar 2002.}
\end{center}
\begin{enumerate}
\item Data je azbuka $\Sigma=\{0,1,2,3,4,5,6,7\}$.

\begin{enumerate}
\item Odrediti deterministi\v cki kona\v cni transduktor koji
prevodi sve re\v ci iz $\Sigma^+$ u taj isti jezik, tako da
oktalni zapis broja $n$ prevodi u oktalni zapis broja
$[\frac{n}{7}]$. (Npr. Broj $123$ prevodi u broj $13$)

\item Na osnovu transduktora konstruisanog u prvom delu zadatka,
napisati AWK program koji za sve oktalne brojeve pronadjene u
tekstualnoj datoteci ispisuje njihov celobrojni oktalni koli\v
cnik i ostatak pri deljenju sa 7.

Npr. za uneto:

\begin{verbatim}
      123 prevodioci 99 12345
\end{verbatim}

Program treba da ispi\v se :
\begin{verbatim}
      123=7*13+6
      12345=7*1374+1
\end{verbatim}


\end{enumerate}

\item Opisati LL(1) gramatikom deklaracije procedura i funkcija u
PASCAL-u. Neki primeri deklaracija u PASCALU su:

\verb"function f(a,b : integer; procedure g,h; function i,j : integer) : integer;"

\verb"procedure p(var slovo : char; i,j : integer; procedure proc(a : integer));"

Za datu gramatiku, konstruisati program u LEX-u i C-u koji
simuliraji\' ci rad potisnog automata za unetu nisku ispisuje da
li je korektna PASCAL deklaracija funkcije, odnosno procedure.

 \item Za neterminal $A$, gramatike
$G=(N,\Sigma,P,S)$, ka\v zemo da je \textit{rekurzivan} ako
$A\Rightarrow^+\alpha A\beta$, za neko $\alpha,\beta \in
(N\cup\Sigma)^*$.

Kontekstno slobodna gramatika $G$ je opisana u tekstualnoj
datoteci na slede\' ci na\v cin :
\begin{itemize}
\item $\Sigma=\{a,b,\ldots,z,A,B,\ldots,Z\}^+$, tj. terminali su
neprazne re\v ci engleske abecede. npr.

\verb"   zdravo, Pera, difeomorfizam"

\item Neterminali su re\v ci iz $\Sigma^+$, zapisani izmedju znakova $<$ i $>$. npr.

\verb"   <A>, <b>, <PREVODIOCI>, <Zdravo>".

\item Pravila su terminisana sa \verb";", a vi\v se desnih strana pravila za
jedan neterminal je razdvojeno sa \verb"|". Npr.

\begin{verbatim}
   <PREVODIOCI> -> dobar <Predmet> |
                   zanimljiva <Vestina>;
\end{verbatim}

\end{itemize}
Napisati program koji ispisuje imena svih rekurzivnih neterminala
gramatike $G$. Koristiti LEX i YACC. Opisati i postupak dobijanja
izvr\v snog koda programa.

\end{enumerate}
\end{document}
