Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

PSS Gedächtnisprotokoll Klausur WS 0506: Unterschied zwischen den Versionen

(aufgabe 1)
Zeile 3: Zeile 3:
 
----
 
----
 
<pre>
 
<pre>
1. forme die grammatik in ll1 um und zeige das sie ll1 ist.
+
1.
zeige das die ausgangsgrammatik nicht ll1 ist
+
gegebene grammatik:
  
S  -> E#
+
S  -> E #
E  -> ide
+
E  -> ide
| ide ( A )
+
    | ide ( A )
A  -> P
+
A  -> P
|
+
    |
P  -> P , E
+
P  -> P , E
| E
+
    | E
 +
 
 +
 
 +
1.1
 +
forme die grammatik so um, dass sie für einen
 +
top-down-parser geignet ist (--> LL(1)).
 +
 
 +
1.2
 +
direktormengen aufstellen.
 +
für die alte und die neue grammatik.
 +
 
 +
 
 +
2.
 +
schreibe einen recursive-decent-parser (combinator/hand)
 +
ohne fehlerbehandlung für die grammatik:
 +
 
 +
S  ->  T #
 +
T  ->  < T T' >
 +
T' ->  ide
 +
    |
 +
 
 +
???
  
2. schreibe einen recursive decent-/combinator-parser ohne fehlerbehandlung für die grammatik:
 
S -> T#
 
T -> < T T' >
 
T' -> ide
 
|
 
 
in der sprache war: <<1 2 4> <1 4 5> 3>
 
in der sprache war: <<1 2 4> <1 4 5> 3>
 
das ganze repräsentierte einen n-ären baum
 
das ganze repräsentierte einen n-ären baum
Zeile 28: Zeile 44:
 
Close
 
Close
 
space
 
space
id(val:???)
+
id(val:int)
  
 
3. SECD
 
3. SECD

Version vom 13. Februar 2006, 20:27 Uhr

Hier fehlen noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft! Außerdem scheint mir einiges falsch..? naja vorallem die 2. Grammatik ist nicht identisch


1.
gegebene grammatik:

S  ->  E #
E  ->  ide
    |  ide ( A )
A  ->  P
    |
P  ->  P , E
    |  E


1.1
forme die grammatik so um, dass sie für einen
top-down-parser geignet ist (--> LL(1)).

1.2
direktormengen aufstellen.
für die alte und die neue grammatik.


2.
schreibe einen recursive-decent-parser (combinator/hand)
ohne fehlerbehandlung für die grammatik:

S  ->  T #
T  ->  < T T' >
T' ->  ide
    |

???

in der sprache war: <<1 2 4> <1 4 5> 3>
das ganze repräsentierte einen n-ären baum
DATA absy ==
	node(val:seq[absy])
	leaf(val:token)	
DATA token ==
	Open
	Close
	space
	id(val:int)

3. SECD
(\x. x(2))(\y. dup(y))
ergebnis 4
dup ist triviale operation

4. codeerzeugung
int f(x:int, y:int){
	if(x==0)
		return y
	else
		return f(x-1, x*y)
}
erzeuge pseudocode für eine stackartige maschine
erläutere den stackframe (überlappung und sowas)

5. unifikation
length: string -> nat
even?: nat -> bool
h: string -> ???
h(s) == ???
					eval
			eval			s
		eval	length
	???		even?
ergebnis war korrekt, aber das sah vllt. auch etwas anders aus..