\begin{frame}{Context-Free Languages}
    A grammar $G = (V,T,S,P)$ is called \emph{context-free} if all production rules are of the form
      \alert{A} \to u
    where \alert{$A \in V$} and $u \in (V \cup T)^*$.
  That is, the left-hand side of all rules is a single variable.

    A language $L$ is \emph{context-free} if there is a context-free grammar with $L = L(G)$.
    Context-free grammars are used to 
      \item describe the \emph{syntax of programming languages}, and
      \item form the basis of \emph{parsing algorithms}.