PSS Gedächtnisprotokoll Klausur WS 0506: Unterschied zwischen den Versionen
Erscheinungsbild
Keine Bearbeitungszusammenfassung |
aufgabe 1 |
||
| Zeile 3: | Zeile 3: | ||
---- | ---- | ||
<pre> | <pre> | ||
1. | 1. | ||
gegebene grammatik: | |||
S -> E# | S -> E # | ||
E -> ide | E -> ide | ||
| ide ( A ) | |||
A -> P | A -> P | ||
| | |||
P -> P , E | 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> | 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..