Skip to content

Commit 52e18d2

Browse files
committed
homework: finalize B07 (#379) 7b260e5
0 parents  commit 52e18d2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+14131
-0
lines changed

.nojekyll

Whitespace-only changes.

CREDITS.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
## Credits
2+
3+
This is a list of external projects used to build the lecture slides and
4+
the lecture notes for the teaching material. These are licensed under
5+
their own licences and are not part of the CC BY-SA 4.0 licence of this
6+
project.
7+
8+
### Building the Lecture Slides
9+
10+
- [Pandoc](https://github.com/jgm/pandoc)
11+
- [Pandoc-Lecture](https://github.com/cagix/pandoc-lecture)
12+
- [Pandoc-Lecture-Zen](https://github.com/cagix/pandoc-lecture-zen)
13+
- [TeX Live](http://tug.org/texlive/)
14+
- [Beamer](https://github.com/josephwright/beamer)
15+
- [Metropolis](https://github.com/matze/mtheme)
16+
17+
### Building the Lecture GitHub Preview
18+
19+
- [Pandoc](https://github.com/jgm/pandoc)
20+
- [Pandoc-Lecture](https://github.com/cagix/pandoc-lecture)
21+
22+
### Further Tools used
23+
24+
- [GNU Make](https://www.gnu.org/software/make/)
25+
- [Pandoc Dockerfiles](https://github.com/pandoc/dockerfiles)
26+
- [Docker](https://www.docker.com/)
27+
- [GitHub](https://github.com/)
28+
29+
### Contributors
30+
31+
[This
32+
project](https://github.com/Compiler-CampusMinden/CB-Vorlesung-Bachelor)
33+
has been created and is being maintained by the authors [BC
34+
George](https://github.com/bcg7), and [Carsten
35+
Gips](https://github.com/cagix), and various
36+
[contributors](https://github.com/Compiler-CampusMinden/CB-Vorlesung-Bachelor/graphs/contributors).
37+
38+
------------------------------------------------------------------------
39+
40+
<img src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" width="10%">
41+
42+
Unless otherwise noted, this work is licensed under CC BY-SA 4.0.
43+
44+
<blockquote><p><sup><sub><strong>Last modified:</strong> e188a08 (markdown: switch to leaner yaml header (#363), 2025-08-09)<br></sub></sup></p></blockquote>

admin/images/architektur_cb.png

90.4 KB
Loading

admin/readme.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Organisatorisches
2+
3+
------------------------------------------------------------------------
4+
5+
<img src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" width="10%">
6+
7+
Unless otherwise noted, this work is licensed under CC BY-SA 4.0.
8+
9+
<blockquote><p><sup><sub><strong>Last modified:</strong> e188a08 (markdown: switch to leaner yaml header (#363), 2025-08-09)<br></sub></sup></p></blockquote>

homework/readme.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Praktikum
2+
3+
Hier finden Sie die Übungsblätter.
4+
5+
------------------------------------------------------------------------
6+
7+
<img src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" width="10%">
8+
9+
Unless otherwise noted, this work is licensed under CC BY-SA 4.0.
10+
11+
<blockquote><p><sup><sub><strong>Last modified:</strong> e188a08 (markdown: switch to leaner yaml header (#363), 2025-08-09)<br></sub></sup></p></blockquote>

homework/sheet01.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Blatt 01: Reguläre Sprachen
2+
3+
## A1.1: Sprachen von regulären Ausdrücken (1P)
4+
5+
Welche Sprache wird von dem folgenden regulären Ausdruck beschrieben?
6+
7+
$`a\ +\ a\ (a\ +\ b)^*\ a`$
8+
9+
## A1.2: Bezeichner in Programmiersprachen (3P)
10+
11+
Betrachten Sie eine Programmiersprache, in der die Bezeichner (= Namen
12+
für Variablen, Funktionen, Klassen, Methoden, …) folgenden Aufbau haben:
13+
14+
- Alle Variablennamen beginnen mit **V** oder **v**
15+
- Handelt es sich um globale Variablen, beginnen Sie mit **V**, lokale
16+
beginnen mit **v**
17+
- Funktions- und Methodenparameter beginnen mit **p**, KLassenparameter
18+
(bei der Definition von Vererbung) beginnen mit **P**
19+
- Weitere Bezeichner müssen mit einem Buchstaben (a-z, A-Z) beginnen
20+
- Die folgenden Zeichen dürfen Buchstaben, Ziffern und ein Untersreich
21+
sein
22+
- Bezeichner dürfen nicht mit einem Unterstrich enden
23+
- Alle Bezeichner müssen aus mindestens zwei Zeichen bestehen
24+
25+
Entwickeln Sie einen regulären Ausdruck, der den Aufbau der Bezeichner
26+
beschreibt. Beachten Sie, dass Ihr regex alle zulässigen Bezeichner
27+
beschreiben muss, aber keinen einzigen unzulässigen beschreiben darf.
28+
Wählen Sie zwei Bezeichner aus der Sprache und zeigen Sie, wie sie vom
29+
regex gematcht werden.
30+
31+
Entwickeln Sie einen DFA, der diese Bezeichner akzeptiert. Beachten Sie,
32+
dass Ihr DFA alle zulässigen Bezeichner akzeptieren muss, aber keinen
33+
einzigen unzulässigen akzeptieren darf. Wählen Sie zwei Bezeichner aus
34+
der Sprache und zeigen Sie, wie sie vom Automaten zeichenweise gelesen
35+
und akzeptiert werden.
36+
37+
Entwickeln Sie eine reguläre Grammatik, die diese Bezeichner generiert.
38+
Beachten Sie, dass Ihre Grammatik alle zulässigen Bezeichner generieren
39+
können muss, aber keinen einzigen unzulässigen generieren darf. Wählen
40+
Sie zwei Bezeichner aus der Sprache und zeigen Sie die Ableitungsbäume
41+
dazu.
42+
43+
## A1.3: Gleitkommazahlen in Programmiersprachen (2P)
44+
45+
Recherchieren Sie zunächst den Aufbau von Gleitkommazahlen in Python und
46+
Java.
47+
48+
Erstellen Sie für jede der beiden Programmiersprachen reguläre
49+
Ausdrücke, DFAs und reguläre Grammatiken wie in Aufgabe A1.2.
50+
Verifizieren Sie Ihre Lösungen wie in Aufgabe A1.2.
51+
52+
## A1.4: Mailadressen? (1P)
53+
54+
Warum ist der folgende regex ungeeignet für die Verarbeitung von
55+
Mailadressen?
56+
57+
$`(a-z)^+@(a-z).(a-z)`$
58+
59+
Bitte beachten Sie, dass die Schreibweise a-z nicht unserer Definition
60+
genügt. Eigentlich müsste jedes Zeichen aufgeführt werden:
61+
62+
$`a + b + c + c + \ldots + z`$ ist besser, aber immer noch nicht
63+
richtig. Warum?
64+
65+
Anmerkung: Diese Darstellung wird ab jetzt akzeptiert.
66+
67+
Verbessern Sie den gegebenen regulären Ausdruck.
68+
69+
## A1.5: Der zweitletzte Buchstabe (1P)
70+
71+
Entwickeln Sie einen DFA, der nur Wörter über
72+
$`\Sigma = \lbrace 1,2,3 \rbrace`$ akzeptiert, deren zweitletztes
73+
Zeichen dasselbe ist wie das zweite.
74+
75+
## A1.6: Sprache einer regulären Grammatik (2P)
76+
77+
Welche Sprache generiert die folgende Grammatik?
78+
79+
``` math
80+
\begin{eqnarray}
81+
S &\rightarrow& a A \nonumber \\
82+
A &\rightarrow& d B \ | \ b A \ | \ c A \nonumber \\
83+
B &\rightarrow& a c \ | \ b C \ | \ c A \nonumber \\
84+
C &\rightarrow& \epsilon \nonumber
85+
\end{eqnarray}
86+
```
87+
88+
------------------------------------------------------------------------
89+
90+
<img src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" width="10%">
91+
92+
Unless otherwise noted, this work is licensed under CC BY-SA 4.0.
93+
94+
<blockquote><p><sup><sub><strong>Last modified:</strong> c2d8d8c (homework: finalize B01 (#373), 2025-10-02)<br></sub></sup></p></blockquote>

homework/sheet02.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Blatt 02: CFG
2+
3+
## A2.1: PDA (3P)
4+
5+
Erstellen Sie einen deterministischen PDA, der die Sprache
6+
7+
``` math
8+
L = \lbrace w \in \lbrace a, b, c \rbrace^* \; | \; w \; \text{hat doppelt so viele a's wie c's} \rbrace
9+
```
10+
11+
akzeptiert.
12+
13+
Beschreiben Sie Schritt für Schritt, wie der PDA die Eingaben *bcaba*
14+
und *bccac* abarbeitet.
15+
16+
## A2.2: Akzeptierte Sprache (2P)
17+
18+
Ist der folgenden PDA deterministisch? Warum (nicht)?
19+
20+
$`q_4`$ sei der akzeptierende Zustand.
21+
22+
``` math
23+
\begin{eqnarray}
24+
\delta(q_0,a, \perp) &=& (q_0, A\perp) \nonumber \\
25+
\delta(q_0,a, A) &=& (q_0, AA) \nonumber \\
26+
\delta(q_0,b, A) &=& (q_1, BA) \nonumber \\
27+
\delta(q_1,b, B) &=& (q_1, BB) \nonumber \\
28+
\delta(q_1,c, B) &=& (q_2, \epsilon) \nonumber \\
29+
\delta(q_2,c, B) &=& (q_2, \epsilon) \nonumber \\
30+
\delta(q_2,d, A) &=& (q_3, \epsilon) \nonumber \\
31+
\delta(q_3,d, A) &=& (q_3, \epsilon) \nonumber \\
32+
\delta(q_3,d, A) &=& (q_3, AA) \nonumber \\
33+
\delta(q_3,\epsilon, \perp) &=& (q_4, \epsilon) \nonumber
34+
\end{eqnarray}
35+
```
36+
37+
Zeichnen Sie den Automaten. Geben Sie das 7-Tupel des PDa an. Welche
38+
Sprache akzeptiert er?
39+
40+
## A2.3: Kontextfreie Sprache (2P)
41+
42+
Welche Sprache generiert die folgende kontextfreie (Teil-) Grammatik?
43+
44+
``` math
45+
G = (\lbrace \text{Statement}, \text{Condition}, \ldots \rbrace, \lbrace \text{"if"}, \text{"else"}, \ldots \rbrace, P, \text{Statement})
46+
```
47+
48+
mit
49+
50+
``` math
51+
\begin{eqnarray}
52+
P = \lbrace && \nonumber \\
53+
&\text{Statement}& \rightarrow \text{"if" Condition Statement} \; | \; \text{"if" Condition Statement "else" Statement} \nonumber \\
54+
&\text{Condition}& \rightarrow \ldots \nonumber \\
55+
\rbrace \nonumber
56+
\end{eqnarray}
57+
```
58+
59+
Ist die Grammatik mehrdeutig? Warum (nicht)?
60+
61+
## A2.4: Kontextfreie Grammatik (3P)
62+
63+
Entwickeln Sie eine kontextfreie Grammatik für die Sprache
64+
65+
``` math
66+
L = \lbrace a^ib^jc^k \; | \; i = j \lor j = k \rbrace
67+
```
68+
69+
Zeigen Sie, dass die Grammatik mehrdeutig ist. Entwickeln Sie einen PDA
70+
für diese Sprache.
71+
72+
------------------------------------------------------------------------
73+
74+
<img src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" width="10%">
75+
76+
Unless otherwise noted, this work is licensed under CC BY-SA 4.0.
77+
78+
<blockquote><p><sup><sub><strong>Last modified:</strong> 102c219 (homework: finalize B02 (#374), 2025-10-03)<br></sub></sup></p></blockquote>

0 commit comments

Comments
 (0)