\begin{frame}{B(ackus) N(aur) F(orm) is a Context-Free Grammar}
\begin{goal}{}
The BNF (Backus Naur Form) is often used to define the syntax of programming languages.
These are context-free grammars!
\end{goal}
\begin{example}
\begin{tabular}{rcl}
$\langle$stm$\rangle$ & $\to$ & $\langle$var$\rangle$ {\bf :=} $\langle$expr$\rangle$ \\
$\langle$stm$\rangle$ & $\to$ & $\langle$stm$\rangle$ {\bf ;} $\langle$stm$\rangle$ \\
$\langle$stm$\rangle$ & $\to$ & {\bf begin} $\langle$stm$\rangle$ {\bf end} \\
$\langle$stm$\rangle$ & $\to$ & {\bf if}\ $\langle$cond$\rangle$ {\bf then}\ $\langle$stm$\rangle$ {\bf else}\ $\langle$stm$\rangle$ \\
%$\langle$stm$\rangle$ & $\to$ & {\bf if} $\langle$cond$\rangle$ {\bf then} $\langle$stm$\rangle$ \\
$\langle$stm$\rangle$ & $\to$ & {\bf while} $\langle$cond$\rangle$ {\bf do} $\langle$stm$\rangle$ \\
$\langle$cond$\rangle$ & $\to$ & $\cdots$ \\
$\langle$var$\rangle$ & $\to$ & $\cdots$ \\
$\langle$expr$\rangle$ & $\to$ & $\cdots$ \\
$\cdots$ & $\to$ & $\cdots$
\end{tabular}
\end{example}
In BNF, non-terminals (variables) are indicated by \alert{$\langle$} and \alert{$\rangle$}.
\end{frame}