--- header-includes: - \usepackage[perp]{backnaur} - \newcommand{\nonterminal}[1]{\ensuremath{\langle \text{\emph{#1}} \rangle}} --- # Backus-Naur-Form a) i) Ja. - Wir starten in \nonterminal{Smiley}. - Wir springen in \nonterminal{FröhlicherSmiley}. - Von den möglichen Terminalen \texttt{:}, \texttt{;}, und \texttt{B} passt keines auf \texttt{8}. - Wir springen zurück in \nonterminal{Smiley}. - Wir springen in \nonterminal{TraurigerSmiley}. - Von den möglichen Terminalen \texttt{:}, und \texttt{8} passt \texttt{8}. - Wir springen in \nonterminal{Nase}. - Von den möglichen Terminalen \texttt{o}, und \texttt{-} passt \texttt{o}. - Wir sind am Ende von \nonterminal{Nase}. - Wir springen in \nonterminal{TraurigerMund}. - Von den möglichen Terminalen \texttt{(}, und \texttt{|} passt \texttt{|}. - Wir sind am Ende von \nonterminal{TraurigerMund}, \nonterminal{TraurigerSmiley}, \nonterminal{Smiley}. ii) Nein. Nach dem ersten \texttt{(} werden die restlichen \texttt{(} nicht mehr gematcht ­ im Gegensatz zu \nonterminal{FröhlicherMund} erlaubt \nonterminal{TraurigerMund} keine Wiederholungen. b) \texttt{:-)))} c) \begin{bnf*} \bnfprod{SmileyListe}{\bnfpn{TraurigerSmiley} \bnfsp (\bnfpn{SmileyListe'} \bnfor \bnfes)} \\ \bnfprod{SmileyListe'}{\bnfpn{FröhlicherSmiley} \bnfsp (\bnfpn{SmileyListe} \bnfor \bnfes)} \end{bnf*}