\begin{frame}{Context-Free Languages}
\begin{block}{}
A grammar $G = (V,T,S,P)$ is called \emph{context-free} if all production rules are of the form
\begin{talign}
\alert{A} \to u
\end{talign}
where \alert{$A \in V$} and $u \in (V \cup T)^*$.
\end{block}
That is, the left-hand side of all rules is a single variable.
\pause\medskip
\begin{block}{}
A language $L$ is \emph{context-free} if there is a context-free grammar with $L = L(G)$.
\end{block}
\pause\bigskip
\begin{goal}{}
Context-free grammars are used to
\begin{itemize}
\item describe the \emph{syntax of programming languages}, and
\item form the basis of \emph{parsing algorithms}.
\end{itemize}
\end{goal}
\end{frame}