blob: cb5695f55d3a5bd9f04d0948059b2eecdfcd3fe1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
---
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*}
|