<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.190.198.225</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.190.198.225"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/84.190.198.225"/>
	<updated>2026-11-01T18:03:06Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6639</id>
		<title>PSS Gedächtnisprotokoll Klausur WS 0506</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6639"/>
		<updated>2006-02-15T16:28:46Z</updated>

		<summary type="html">&lt;p&gt;84.190.198.225: /* Aufgabe 4: Codeerzeugung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier fehlen ggf. noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft! Die Bearbeitungszeit waren 90 Minuten. Alle Hilfmittel waren zugelassen (Kofferklausur)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Grammatikumformung ==&lt;br /&gt;
1. Forme die Grammatik so um, dass sie von einem &#039;&#039;&#039;recursive-descent&#039;&#039;&#039;-Parser geparst werden kann.&lt;br /&gt;
&lt;br /&gt;
2. Entscheide und begründe, ob die umgeformte Grammatik und die ursprüngliche Grammatik die LL(1)-Eigenschaft erfüllen. Bilde die nötigen First-, Follow- und Directormengen.&lt;br /&gt;
&lt;br /&gt;
 S  -&amp;gt; E#&lt;br /&gt;
 E  -&amp;gt; ide&lt;br /&gt;
    |  ide ( A )&lt;br /&gt;
 A  -&amp;gt; P&lt;br /&gt;
    |  {Epsilon}&lt;br /&gt;
 P  -&amp;gt; P , E&lt;br /&gt;
    |  E&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Parser ==&lt;br /&gt;
&lt;br /&gt;
Gegeben folgende Grammatik mit Directormenge:&lt;br /&gt;
 S  -&amp;gt;  T #&lt;br /&gt;
 T  -&amp;gt;  ide&lt;br /&gt;
        &amp;lt;T T&#039;&amp;gt;&lt;br /&gt;
 T&#039; -&amp;gt;  {Epsilon}&lt;br /&gt;
     |  _ T T&#039; {Das _ war ein &#039;&#039;space&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
Ein Wort der Sprache war: &amp;lt;&amp;lt;1 2 4&amp;gt; &amp;lt;1 4 5&amp;gt; 3&amp;gt;&lt;br /&gt;
Das ganze repräsentierte einen n-ären Baum&lt;br /&gt;
&lt;br /&gt;
 DATA token ==&lt;br /&gt;
 	Open&lt;br /&gt;
 	Close&lt;br /&gt;
 	space&lt;br /&gt;
 	id(val:int)&lt;br /&gt;
 	eof&lt;br /&gt;
&lt;br /&gt;
1. Entwickle einen passenden Absy.&lt;br /&gt;
&lt;br /&gt;
Lösung: &lt;br /&gt;
&lt;br /&gt;
 DATA absy ==&lt;br /&gt;
   node(val:seq[absy])&lt;br /&gt;
   leaf(val:token)	&lt;br /&gt;
&lt;br /&gt;
2. Schreibe einen Recursive-Descent-/Combinator-Parser ohne Fehlerbehandlung. Falls Combinator: Programmiere auch die Kombinatoren.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: SECD ==&lt;br /&gt;
&lt;br /&gt;
Der Ausdruck (λ &#039;&#039;x&#039;&#039; . &#039;&#039;x&#039;&#039;(2))(λ &#039;&#039;y&#039;&#039; . &#039;&#039;dup&#039;&#039;(&#039;&#039;y&#039;&#039;)) war mit der SECD-Maschine zu interpretieren, wobei &#039;&#039;dup&#039;&#039; eine triviale Operation war, die ihr Argument verdoppelte.&lt;br /&gt;
&lt;br /&gt;
Ergebnis: 4.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4: Codeerzeugung ==&lt;br /&gt;
 int f(x:int, y:int){&lt;br /&gt;
 	if(x==0)&lt;br /&gt;
 		return y&lt;br /&gt;
 	else&lt;br /&gt;
 		return f(x-1, x*y)&lt;br /&gt;
 }&lt;br /&gt;
1. Erzeuge Pseudocode für eine abstrakte stackbasierte Maschine.&lt;br /&gt;
&lt;br /&gt;
2. Erläutere den Aufbau eines Stackframes. Warum werden die Komponenten in genau dieser Reihenfolge angeordnet?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 5: Unifikation ==&lt;br /&gt;
1. Zeige die Typkorrektheit von h. Gleichungen für jedes tau aufstellen. Umformungen begründen (Was wird hier gemacht?).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN _ o _ : (beta -&amp;gt; gamma) -&amp;gt; (alpha -&amp;gt; beta) -&amp;gt; (alpha -&amp;gt; beta)&lt;br /&gt;
FUN length: string -&amp;gt; nat&lt;br /&gt;
FUN even?: nat -&amp;gt; bool&lt;br /&gt;
&lt;br /&gt;
FUN h: string -&amp;gt; bool&lt;br /&gt;
DEF h(s) == o(even?)(length)(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apply(tau1)&lt;br /&gt;
	apply(tau2)&lt;br /&gt;
		apply(tau4)&lt;br /&gt;
			o(tau6)&lt;br /&gt;
			even?(tau7)&lt;br /&gt;
		length(tau5)&lt;br /&gt;
	s (tau3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zur Notation: Erst kommt ein Knoten, dann seine Kinder von links nach rechts.&lt;br /&gt;
&lt;br /&gt;
Der Baum gehört zu h(s) und ist korrekt.&lt;/div&gt;</summary>
		<author><name>84.190.198.225</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6638</id>
		<title>PSS Gedächtnisprotokoll Klausur WS 0506</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6638"/>
		<updated>2006-02-15T16:27:52Z</updated>

		<summary type="html">&lt;p&gt;84.190.198.225: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier fehlen ggf. noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft! Die Bearbeitungszeit waren 90 Minuten. Alle Hilfmittel waren zugelassen (Kofferklausur)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Grammatikumformung ==&lt;br /&gt;
1. Forme die Grammatik so um, dass sie von einem &#039;&#039;&#039;recursive-descent&#039;&#039;&#039;-Parser geparst werden kann.&lt;br /&gt;
&lt;br /&gt;
2. Entscheide und begründe, ob die umgeformte Grammatik und die ursprüngliche Grammatik die LL(1)-Eigenschaft erfüllen. Bilde die nötigen First-, Follow- und Directormengen.&lt;br /&gt;
&lt;br /&gt;
 S  -&amp;gt; E#&lt;br /&gt;
 E  -&amp;gt; ide&lt;br /&gt;
    |  ide ( A )&lt;br /&gt;
 A  -&amp;gt; P&lt;br /&gt;
    |  {Epsilon}&lt;br /&gt;
 P  -&amp;gt; P , E&lt;br /&gt;
    |  E&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Parser ==&lt;br /&gt;
&lt;br /&gt;
Gegeben folgende Grammatik mit Directormenge:&lt;br /&gt;
 S  -&amp;gt;  T #&lt;br /&gt;
 T  -&amp;gt;  ide&lt;br /&gt;
        &amp;lt;T T&#039;&amp;gt;&lt;br /&gt;
 T&#039; -&amp;gt;  {Epsilon}&lt;br /&gt;
     |  _ T T&#039; {Das _ war ein &#039;&#039;space&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
Ein Wort der Sprache war: &amp;lt;&amp;lt;1 2 4&amp;gt; &amp;lt;1 4 5&amp;gt; 3&amp;gt;&lt;br /&gt;
Das ganze repräsentierte einen n-ären Baum&lt;br /&gt;
&lt;br /&gt;
 DATA token ==&lt;br /&gt;
 	Open&lt;br /&gt;
 	Close&lt;br /&gt;
 	space&lt;br /&gt;
 	id(val:int)&lt;br /&gt;
 	eof&lt;br /&gt;
&lt;br /&gt;
1. Entwickle einen passenden Absy.&lt;br /&gt;
&lt;br /&gt;
Lösung: &lt;br /&gt;
&lt;br /&gt;
 DATA absy ==&lt;br /&gt;
   node(val:seq[absy])&lt;br /&gt;
   leaf(val:token)	&lt;br /&gt;
&lt;br /&gt;
2. Schreibe einen Recursive-Descent-/Combinator-Parser ohne Fehlerbehandlung. Falls Combinator: Programmiere auch die Kombinatoren.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: SECD ==&lt;br /&gt;
&lt;br /&gt;
Der Ausdruck (λ &#039;&#039;x&#039;&#039; . &#039;&#039;x&#039;&#039;(2))(λ &#039;&#039;y&#039;&#039; . &#039;&#039;dup&#039;&#039;(&#039;&#039;y&#039;&#039;)) war mit der SECD-Maschine zu interpretieren, wobei &#039;&#039;dup&#039;&#039; eine triviale Operation war, die ihr Argument verdoppelte.&lt;br /&gt;
&lt;br /&gt;
Ergebnis: 4.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4: Codeerzeugung ==&lt;br /&gt;
 int f(x:int, y:int){&lt;br /&gt;
 	if(x==0)&lt;br /&gt;
 		return y&lt;br /&gt;
 	else&lt;br /&gt;
 		return f(x-1, x*y)&lt;br /&gt;
 }&lt;br /&gt;
1. Erzeuge Pseudocode für eine abstrakte stackbasierte Maschine.&lt;br /&gt;
&lt;br /&gt;
2. Erläutere den Stackframe (überlappung und sowas)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 5: Unifikation ==&lt;br /&gt;
1. Zeige die Typkorrektheit von h. Gleichungen für jedes tau aufstellen. Umformungen begründen (Was wird hier gemacht?).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN _ o _ : (beta -&amp;gt; gamma) -&amp;gt; (alpha -&amp;gt; beta) -&amp;gt; (alpha -&amp;gt; beta)&lt;br /&gt;
FUN length: string -&amp;gt; nat&lt;br /&gt;
FUN even?: nat -&amp;gt; bool&lt;br /&gt;
&lt;br /&gt;
FUN h: string -&amp;gt; bool&lt;br /&gt;
DEF h(s) == o(even?)(length)(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apply(tau1)&lt;br /&gt;
	apply(tau2)&lt;br /&gt;
		apply(tau4)&lt;br /&gt;
			o(tau6)&lt;br /&gt;
			even?(tau7)&lt;br /&gt;
		length(tau5)&lt;br /&gt;
	s (tau3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zur Notation: Erst kommt ein Knoten, dann seine Kinder von links nach rechts.&lt;br /&gt;
&lt;br /&gt;
Der Baum gehört zu h(s) und ist korrekt.&lt;/div&gt;</summary>
		<author><name>84.190.198.225</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6637</id>
		<title>PSS Gedächtnisprotokoll Klausur WS 0506</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6637"/>
		<updated>2006-02-15T16:24:44Z</updated>

		<summary type="html">&lt;p&gt;84.190.198.225: /* Aufgabe 5: Unifikation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier fehlen ggf. noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Grammatikumformung ==&lt;br /&gt;
1. Forme die Grammatik so um, dass sie von einem &#039;&#039;&#039;recursive-descent&#039;&#039;&#039;-Parser geparst werden kann.&lt;br /&gt;
&lt;br /&gt;
2. Entscheide und begründe, ob die umgeformte Grammatik und die ursprüngliche Grammatik die LL(1)-Eigenschaft erfüllen. Bilde die nötigen First-, Follow- und Directormengen.&lt;br /&gt;
&lt;br /&gt;
 S  -&amp;gt; E#&lt;br /&gt;
 E  -&amp;gt; ide&lt;br /&gt;
    |  ide ( A )&lt;br /&gt;
 A  -&amp;gt; P&lt;br /&gt;
    |  {Epsilon}&lt;br /&gt;
 P  -&amp;gt; P , E&lt;br /&gt;
    |  E&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Parser ==&lt;br /&gt;
&lt;br /&gt;
Gegeben folgende Grammatik mit Directormenge:&lt;br /&gt;
 S  -&amp;gt;  T #&lt;br /&gt;
 T  -&amp;gt;  ide&lt;br /&gt;
        &amp;lt;T T&#039;&amp;gt;&lt;br /&gt;
 T&#039; -&amp;gt;  {Epsilon}&lt;br /&gt;
     |  _ T T&#039; {Das _ war ein &#039;&#039;space&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
Ein Wort der Sprache war: &amp;lt;&amp;lt;1 2 4&amp;gt; &amp;lt;1 4 5&amp;gt; 3&amp;gt;&lt;br /&gt;
Das ganze repräsentierte einen n-ären Baum&lt;br /&gt;
&lt;br /&gt;
 DATA token ==&lt;br /&gt;
 	Open&lt;br /&gt;
 	Close&lt;br /&gt;
 	space&lt;br /&gt;
 	id(val:int)&lt;br /&gt;
 	eof&lt;br /&gt;
&lt;br /&gt;
1. Entwickle einen passenden Absy.&lt;br /&gt;
&lt;br /&gt;
Lösung: &lt;br /&gt;
&lt;br /&gt;
 DATA absy ==&lt;br /&gt;
   node(val:seq[absy])&lt;br /&gt;
   leaf(val:token)	&lt;br /&gt;
&lt;br /&gt;
2. Schreibe einen Recursive-Descent-/Combinator-Parser ohne Fehlerbehandlung. Falls Combinator: Programmiere auch die Kombinatoren.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: SECD ==&lt;br /&gt;
&lt;br /&gt;
Der Ausdruck (λ &#039;&#039;x&#039;&#039; . &#039;&#039;x&#039;&#039;(2))(λ &#039;&#039;y&#039;&#039; . &#039;&#039;dup&#039;&#039;(&#039;&#039;y&#039;&#039;)) war mit der SECD-Maschine zu interpretieren, wobei &#039;&#039;dup&#039;&#039; eine triviale Operation war, die ihr Argument verdoppelte.&lt;br /&gt;
&lt;br /&gt;
Ergebnis: 4.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4: Codeerzeugung ==&lt;br /&gt;
 int f(x:int, y:int){&lt;br /&gt;
 	if(x==0)&lt;br /&gt;
 		return y&lt;br /&gt;
 	else&lt;br /&gt;
 		return f(x-1, x*y)&lt;br /&gt;
 }&lt;br /&gt;
1. Erzeuge Pseudocode für eine abstrakte stackbasierte Maschine.&lt;br /&gt;
&lt;br /&gt;
2. Erläutere den Stackframe (überlappung und sowas)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 5: Unifikation ==&lt;br /&gt;
1. Zeige die Typkorrektheit von h. Gleichungen für jedes tau aufstellen. Umformungen begründen (Was wird hier gemacht?).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN _ o _ : (beta -&amp;gt; gamma) -&amp;gt; (alpha -&amp;gt; beta) -&amp;gt; (alpha -&amp;gt; beta)&lt;br /&gt;
FUN length: string -&amp;gt; nat&lt;br /&gt;
FUN even?: nat -&amp;gt; bool&lt;br /&gt;
&lt;br /&gt;
FUN h: string -&amp;gt; bool&lt;br /&gt;
DEF h(s) == o(even?)(length)(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apply(tau1)&lt;br /&gt;
	apply(tau2)&lt;br /&gt;
		apply(tau4)&lt;br /&gt;
			o(tau6)&lt;br /&gt;
			even?(tau7)&lt;br /&gt;
		length(tau5)&lt;br /&gt;
	s (tau3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zur Notation: Erst kommt ein Knoten, dann seine Kinder von links nach rechts.&lt;br /&gt;
&lt;br /&gt;
Der Baum gehört zu h(s) und ist korrekt.&lt;/div&gt;</summary>
		<author><name>84.190.198.225</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6636</id>
		<title>PSS Gedächtnisprotokoll Klausur WS 0506</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6636"/>
		<updated>2006-02-15T16:22:35Z</updated>

		<summary type="html">&lt;p&gt;84.190.198.225: /* Aufgabe 2: Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier fehlen ggf. noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Grammatikumformung ==&lt;br /&gt;
1. Forme die Grammatik so um, dass sie von einem &#039;&#039;&#039;recursive-descent&#039;&#039;&#039;-Parser geparst werden kann.&lt;br /&gt;
&lt;br /&gt;
2. Entscheide und begründe, ob die umgeformte Grammatik und die ursprüngliche Grammatik die LL(1)-Eigenschaft erfüllen. Bilde die nötigen First-, Follow- und Directormengen.&lt;br /&gt;
&lt;br /&gt;
 S  -&amp;gt; E#&lt;br /&gt;
 E  -&amp;gt; ide&lt;br /&gt;
    |  ide ( A )&lt;br /&gt;
 A  -&amp;gt; P&lt;br /&gt;
    |  {Epsilon}&lt;br /&gt;
 P  -&amp;gt; P , E&lt;br /&gt;
    |  E&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Parser ==&lt;br /&gt;
&lt;br /&gt;
Gegeben folgende Grammatik mit Directormenge:&lt;br /&gt;
 S  -&amp;gt;  T #&lt;br /&gt;
 T  -&amp;gt;  ide&lt;br /&gt;
        &amp;lt;T T&#039;&amp;gt;&lt;br /&gt;
 T&#039; -&amp;gt;  {Epsilon}&lt;br /&gt;
     |  _ T T&#039; {Das _ war ein &#039;&#039;space&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
Ein Wort der Sprache war: &amp;lt;&amp;lt;1 2 4&amp;gt; &amp;lt;1 4 5&amp;gt; 3&amp;gt;&lt;br /&gt;
Das ganze repräsentierte einen n-ären Baum&lt;br /&gt;
&lt;br /&gt;
 DATA token ==&lt;br /&gt;
 	Open&lt;br /&gt;
 	Close&lt;br /&gt;
 	space&lt;br /&gt;
 	id(val:int)&lt;br /&gt;
 	eof&lt;br /&gt;
&lt;br /&gt;
1. Entwickle einen passenden Absy.&lt;br /&gt;
&lt;br /&gt;
Lösung: &lt;br /&gt;
&lt;br /&gt;
 DATA absy ==&lt;br /&gt;
   node(val:seq[absy])&lt;br /&gt;
   leaf(val:token)	&lt;br /&gt;
&lt;br /&gt;
2. Schreibe einen Recursive-Descent-/Combinator-Parser ohne Fehlerbehandlung. Falls Combinator: Programmiere auch die Kombinatoren.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: SECD ==&lt;br /&gt;
&lt;br /&gt;
Der Ausdruck (λ &#039;&#039;x&#039;&#039; . &#039;&#039;x&#039;&#039;(2))(λ &#039;&#039;y&#039;&#039; . &#039;&#039;dup&#039;&#039;(&#039;&#039;y&#039;&#039;)) war mit der SECD-Maschine zu interpretieren, wobei &#039;&#039;dup&#039;&#039; eine triviale Operation war, die ihr Argument verdoppelte.&lt;br /&gt;
&lt;br /&gt;
Ergebnis: 4.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4: Codeerzeugung ==&lt;br /&gt;
 int f(x:int, y:int){&lt;br /&gt;
 	if(x==0)&lt;br /&gt;
 		return y&lt;br /&gt;
 	else&lt;br /&gt;
 		return f(x-1, x*y)&lt;br /&gt;
 }&lt;br /&gt;
1. Erzeuge Pseudocode für eine abstrakte stackbasierte Maschine.&lt;br /&gt;
&lt;br /&gt;
2. Erläutere den Stackframe (überlappung und sowas)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 5: Unifikation ==&lt;br /&gt;
1. Stelle die Gleichungen auf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN _ o _ : (beta -&amp;gt; gamma) -&amp;gt; (alpha -&amp;gt; beta) -&amp;gt; (alpha -&amp;gt; beta)&lt;br /&gt;
FUN length: string -&amp;gt; nat&lt;br /&gt;
FUN even?: nat -&amp;gt; bool&lt;br /&gt;
&lt;br /&gt;
FUN h: string -&amp;gt; bool&lt;br /&gt;
DEF h(s) == o(even?)(length)(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apply(tau1)&lt;br /&gt;
	apply(tau2)&lt;br /&gt;
		apply(tau4)&lt;br /&gt;
			o(tau6)&lt;br /&gt;
			even?(tau7)&lt;br /&gt;
		length(tau5)&lt;br /&gt;
	s (tau3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zur Notation: Erst kommt ein Knoten, dann seine Kinder von links nach rechts.&lt;br /&gt;
&lt;br /&gt;
Der Baum gehört zu h(s) und ist korrekt.&lt;/div&gt;</summary>
		<author><name>84.190.198.225</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6635</id>
		<title>PSS Gedächtnisprotokoll Klausur WS 0506</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6635"/>
		<updated>2006-02-15T16:22:18Z</updated>

		<summary type="html">&lt;p&gt;84.190.198.225: /* Aufgabe 2: Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier fehlen ggf. noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Grammatikumformung ==&lt;br /&gt;
1. Forme die Grammatik so um, dass sie von einem &#039;&#039;&#039;recursive-descent&#039;&#039;&#039;-Parser geparst werden kann.&lt;br /&gt;
&lt;br /&gt;
2. Entscheide und begründe, ob die umgeformte Grammatik und die ursprüngliche Grammatik die LL(1)-Eigenschaft erfüllen. Bilde die nötigen First-, Follow- und Directormengen.&lt;br /&gt;
&lt;br /&gt;
 S  -&amp;gt; E#&lt;br /&gt;
 E  -&amp;gt; ide&lt;br /&gt;
    |  ide ( A )&lt;br /&gt;
 A  -&amp;gt; P&lt;br /&gt;
    |  {Epsilon}&lt;br /&gt;
 P  -&amp;gt; P , E&lt;br /&gt;
    |  E&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Parser ==&lt;br /&gt;
&lt;br /&gt;
Gegeben folgende Grammatik mit Directormenge:&lt;br /&gt;
 S  -&amp;gt;  T #&lt;br /&gt;
 T  -&amp;gt;  ide&lt;br /&gt;
        &amp;lt;T T&#039;&amp;gt;&lt;br /&gt;
 T&#039; -&amp;gt;  {Epsilon}&lt;br /&gt;
     |  _ T T&#039; {Das _ war ein &#039;&#039;space&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
Ein Wort der Sprache war: &amp;lt;&amp;lt;1 2 4&amp;gt; &amp;lt;1 4 5&amp;gt; 3&amp;gt;&lt;br /&gt;
Das ganze repräsentierte einen n-ären Baum&lt;br /&gt;
&lt;br /&gt;
 DATA token ==&lt;br /&gt;
 	Open&lt;br /&gt;
 	Close&lt;br /&gt;
 	space&lt;br /&gt;
 	id(val:int)&lt;br /&gt;
 	eof&lt;br /&gt;
&lt;br /&gt;
1. Entwickle einen passenden Absy.&lt;br /&gt;
&lt;br /&gt;
Lösung: &lt;br /&gt;
&lt;br /&gt;
 DATA absy ==&lt;br /&gt;
	node(val:seq[absy])&lt;br /&gt;
	leaf(val:token)	&lt;br /&gt;
&lt;br /&gt;
2. Schreibe einen Recursive-Descent-/Combinator-Parser ohne Fehlerbehandlung. Falls Combinator: Programmiere auch die Kombinatoren.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: SECD ==&lt;br /&gt;
&lt;br /&gt;
Der Ausdruck (λ &#039;&#039;x&#039;&#039; . &#039;&#039;x&#039;&#039;(2))(λ &#039;&#039;y&#039;&#039; . &#039;&#039;dup&#039;&#039;(&#039;&#039;y&#039;&#039;)) war mit der SECD-Maschine zu interpretieren, wobei &#039;&#039;dup&#039;&#039; eine triviale Operation war, die ihr Argument verdoppelte.&lt;br /&gt;
&lt;br /&gt;
Ergebnis: 4.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4: Codeerzeugung ==&lt;br /&gt;
 int f(x:int, y:int){&lt;br /&gt;
 	if(x==0)&lt;br /&gt;
 		return y&lt;br /&gt;
 	else&lt;br /&gt;
 		return f(x-1, x*y)&lt;br /&gt;
 }&lt;br /&gt;
1. Erzeuge Pseudocode für eine abstrakte stackbasierte Maschine.&lt;br /&gt;
&lt;br /&gt;
2. Erläutere den Stackframe (überlappung und sowas)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 5: Unifikation ==&lt;br /&gt;
1. Stelle die Gleichungen auf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN _ o _ : (beta -&amp;gt; gamma) -&amp;gt; (alpha -&amp;gt; beta) -&amp;gt; (alpha -&amp;gt; beta)&lt;br /&gt;
FUN length: string -&amp;gt; nat&lt;br /&gt;
FUN even?: nat -&amp;gt; bool&lt;br /&gt;
&lt;br /&gt;
FUN h: string -&amp;gt; bool&lt;br /&gt;
DEF h(s) == o(even?)(length)(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apply(tau1)&lt;br /&gt;
	apply(tau2)&lt;br /&gt;
		apply(tau4)&lt;br /&gt;
			o(tau6)&lt;br /&gt;
			even?(tau7)&lt;br /&gt;
		length(tau5)&lt;br /&gt;
	s (tau3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zur Notation: Erst kommt ein Knoten, dann seine Kinder von links nach rechts.&lt;br /&gt;
&lt;br /&gt;
Der Baum gehört zu h(s) und ist korrekt.&lt;/div&gt;</summary>
		<author><name>84.190.198.225</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6634</id>
		<title>PSS Gedächtnisprotokoll Klausur WS 0506</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=PSS_Ged%C3%A4chtnisprotokoll_Klausur_WS_0506&amp;diff=6634"/>
		<updated>2006-02-15T16:21:47Z</updated>

		<summary type="html">&lt;p&gt;84.190.198.225: /* Aufgabe 2: Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier fehlen ggf. noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Grammatikumformung ==&lt;br /&gt;
1. Forme die Grammatik so um, dass sie von einem &#039;&#039;&#039;recursive-descent&#039;&#039;&#039;-Parser geparst werden kann.&lt;br /&gt;
&lt;br /&gt;
2. Entscheide und begründe, ob die umgeformte Grammatik und die ursprüngliche Grammatik die LL(1)-Eigenschaft erfüllen. Bilde die nötigen First-, Follow- und Directormengen.&lt;br /&gt;
&lt;br /&gt;
 S  -&amp;gt; E#&lt;br /&gt;
 E  -&amp;gt; ide&lt;br /&gt;
    |  ide ( A )&lt;br /&gt;
 A  -&amp;gt; P&lt;br /&gt;
    |  {Epsilon}&lt;br /&gt;
 P  -&amp;gt; P , E&lt;br /&gt;
    |  E&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Parser ==&lt;br /&gt;
&lt;br /&gt;
Gegeben folgende Grammatik mit Directormenge:&lt;br /&gt;
 S  -&amp;gt;  T #&lt;br /&gt;
 T  -&amp;gt;  ide&lt;br /&gt;
        &amp;lt;T T&#039;&amp;gt;&lt;br /&gt;
 T&#039; -&amp;gt;  {Epsilon}&lt;br /&gt;
     |  _ T T&#039; {Das _ war ein &#039;&#039;space&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
Ein Wort der Sprache war: &amp;lt;&amp;lt;1 2 4&amp;gt; &amp;lt;1 4 5&amp;gt; 3&amp;gt;&lt;br /&gt;
Das ganze repräsentierte einen n-ären Baum&lt;br /&gt;
&lt;br /&gt;
 DATA token ==&lt;br /&gt;
 	Open&lt;br /&gt;
 	Close&lt;br /&gt;
 	space&lt;br /&gt;
 	id(val:int)&lt;br /&gt;
 	eof&lt;br /&gt;
&lt;br /&gt;
1. Entwickle einen passenden Absy.&lt;br /&gt;
&lt;br /&gt;
Lösung: &lt;br /&gt;
&lt;br /&gt;
DATA absy ==&lt;br /&gt;
	node(val:seq[absy])&lt;br /&gt;
	leaf(val:token)	&lt;br /&gt;
&lt;br /&gt;
2. Schreibe einen Recursive-Descent-/Combinator-Parser ohne Fehlerbehandlung. Falls Combinator: Programmiere auch die Kombinatoren.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: SECD ==&lt;br /&gt;
&lt;br /&gt;
Der Ausdruck (λ &#039;&#039;x&#039;&#039; . &#039;&#039;x&#039;&#039;(2))(λ &#039;&#039;y&#039;&#039; . &#039;&#039;dup&#039;&#039;(&#039;&#039;y&#039;&#039;)) war mit der SECD-Maschine zu interpretieren, wobei &#039;&#039;dup&#039;&#039; eine triviale Operation war, die ihr Argument verdoppelte.&lt;br /&gt;
&lt;br /&gt;
Ergebnis: 4.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4: Codeerzeugung ==&lt;br /&gt;
 int f(x:int, y:int){&lt;br /&gt;
 	if(x==0)&lt;br /&gt;
 		return y&lt;br /&gt;
 	else&lt;br /&gt;
 		return f(x-1, x*y)&lt;br /&gt;
 }&lt;br /&gt;
1. Erzeuge Pseudocode für eine abstrakte stackbasierte Maschine.&lt;br /&gt;
&lt;br /&gt;
2. Erläutere den Stackframe (überlappung und sowas)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 5: Unifikation ==&lt;br /&gt;
1. Stelle die Gleichungen auf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN _ o _ : (beta -&amp;gt; gamma) -&amp;gt; (alpha -&amp;gt; beta) -&amp;gt; (alpha -&amp;gt; beta)&lt;br /&gt;
FUN length: string -&amp;gt; nat&lt;br /&gt;
FUN even?: nat -&amp;gt; bool&lt;br /&gt;
&lt;br /&gt;
FUN h: string -&amp;gt; bool&lt;br /&gt;
DEF h(s) == o(even?)(length)(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apply(tau1)&lt;br /&gt;
	apply(tau2)&lt;br /&gt;
		apply(tau4)&lt;br /&gt;
			o(tau6)&lt;br /&gt;
			even?(tau7)&lt;br /&gt;
		length(tau5)&lt;br /&gt;
	s (tau3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zur Notation: Erst kommt ein Knoten, dann seine Kinder von links nach rechts.&lt;br /&gt;
&lt;br /&gt;
Der Baum gehört zu h(s) und ist korrekt.&lt;/div&gt;</summary>
		<author><name>84.190.198.225</name></author>
	</entry>
</feed>