\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}