PSS Gedächtnisprotokoll Klausur WS 0506: Unterschied zwischen den Versionen
Zeile 1: | Zeile 1: | ||
Hier fehlen noch ein paar Informationen, mein Gedächtnis ist da etwas lückenhaft! | 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 | |
---- | ---- | ||
<pre> | <pre> | ||
Zeile 23: | Zeile 23: | ||
DATA absy == | DATA absy == | ||
node(val:seq[absy]) | node(val:seq[absy]) | ||
− | + | leaf(val:token) | |
DATA token == | DATA token == | ||
Open | Open |
Version vom 13. Februar 2006, 19:00 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. forme die grammatik in ll1 um und zeige das sie ll1 ist. zeige das die ausgangsgrammatik nicht ll1 ist S -> E# E -> ide | ide ( A ) A -> P | P -> P , E | E 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> das ganze repräsentierte einen n-ären baum DATA absy == node(val:seq[absy]) leaf(val:token) DATA token == Open Close space id(val:???) 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..