\documentclass{fja}
\usepackage[shorthands=off,czech]{babel}

% vim: spell spelllang=cs
% gen: ready

\assignment{11}
\exercise{2}
\points{0,5}
\duedate{8. 5. 2020 12:00}

\newcommand{\smlnum}[1]{\text{\scriptsize(#1)}\ }
\newcommand{\upp}{\boldsymbol{++}}
\newcommand{\umm}{\boldsymbol{--}}
\newcommand{\uif}{\mathbf{if}}
\newcommand{\uthen}{\mathbf{then}}
\newcommand{\uelse}{\mathbf{else}}
\newcommand{\ufi}{\mathbf{fi}}
\newcommand{\uwhile}{\mathbf{while}}
\newcommand{\udo}{\mathbf{do}}
\newcommand{\udone}{\mathbf{done}}
\newcommand{\ua}{\mathbf{a}}
\newcommand{\ub}{\mathbf{b}}
\newcommand{\uc}{\boldsymbol{;}}


%%% ZDE NAPISTE SVOJE UCO A JMENO
\name{}
\uco{}


\begin{document}
\begin{zadani}
Uvažte následující bezkontextovou gramatiku $G$:

%\vspace{-0.8em}
\[ G = (\set{S, X, E, V},\set{ \uif, \uthen, \uelse, \ufi, \uwhile, \udo, \udone, \upp, \umm, \ua, \ub, \uc }, P, S) \]
\vspace{-1.5em}
\begin{align*}
    P = \{ \smlnum{1}  & S \to X \uc\ S, &
           \smlnum{3}  & X \to \uif\ V\ \uthen\ S\ E\ \ufi, &
           \smlnum{9}  & E \to \uelse\ S, &
           \smlnum{11} & V \to \ua, \\
           \smlnum{2}  & S \to \eps, &
           \smlnum{4}  & X \to \uwhile\ V\ \udo\ S\ \udone, &
           \smlnum{10} & E \to \eps, &
           \smlnum{12} & V \to \ub, \\
           & & \smlnum{5} & X \to V\upp, \\
           & & \smlnum{6} & X \to V\umm, \\
           & & \smlnum{7} & X \to \ua, \\
           & & \smlnum{8} & X \to \ub \}.
\end{align*}

\noindent
\begin{enumerate}[a)]
    \item Sestrojte analyzátor \emph{shora dolů} a analyzujte pomocí něj slovo \uv{$\uwhile\ \ua\ \udo\ \ua\umm\uc\ \udone\uc$}.
    \item Sestrojte analyzátor \emph{zdola nahoru} a analyzujte pomocí něj slovo \uv{$\uif\ \ua\ \uthen\ \ub\upp\uc\ \ufi\uc$}
\end{enumerate}

\noindent
Zapište celý postup výpočtu analyzátoru (vizte definici 3.37 ze skript). Na přechody mezi stavy výpočtu napište kromě čteného písmene také číslo pravidla gramatiky $G$, které jste v daném kroku použili $\left(\turnstile{\textit{čtené písmeno}}{\textit{číslo pravidla}}\right)$.
\newline
\newline
\noindent
\emph{Poznámka}: Dobře si všimněte, jaká je množina terminálů gramatiky, zejména, že terminály jsou i symboly $\uif$, $\uthen$, $\uelse$, $\ufi$, $\uwhile$, $\udo$, $\udone$, $\upp$, $\umm$ a $\uc$ (středník). U všech terminálů jsme použili tučné zvýraznění, abychom tím dali najevo, že jde o jeden terminál, i když se některé z nich skládají ze dvou či více znaků. Bílá místa (mezery) ve slovech jsou jen pro lepší čitelnost, mezery nepatří mezi terminály.
\end{zadani}


\begin{reseni}
%%% SEM PISTE SVE RESENI
\end{reseni}

\end{document}
