Hallo!!
Ich hab da mal ne Frage zu Aufgabe 9.1
Zu 1.verstehe ich nicht genau, wie das Wort 00101 die Produktionen durchläuft. Die Linksableitung wird zu 0A1B( da v. S->A1B, A->0A)Ist die 2. Null und die nächste 1 abhängig v. B->0B|1B| und geht dann über zu lambda von B und eliminiert A aus d. Ableitung?
http://www.informatik.uni-hamburg.de/TGI/lehre/vl/SS03/F2/F2aufg09.pdf.gz
ja das ist die einzige linksableitige möglichkeit
edit
also vielleicht doch nicht genau so wie du sagts
S -> A1B -> 0A1B -> 00A1B -> 001B -> 0010B -> 00101B -> 00101
immer das linkeste nonterminal wird ersetzt
Aber das linkeste Nonterminal wird ersetzt wegen lambda,oder?
Und bei der Bestimmung der produktiven Symbole heisst es ja einmal für 1 :
U= Vereinigung
Mo={0,1} S->A1B|CD
M1=Mo U {A,B} A->0A|D|lambda
M2=M1 U{S,A,B} B->0B|1B|lambda
M3=M2 U{S,A,B} C->0D
D->1C
und für 2.
Mo=Vt E->E+F|T
M1=Mo U {F} T->T*F|F
M2=M1 U{T,F} F->(E)|i
M3=M2 U {E,T,F}
Verstehe ich das jetzt richtig, dass ich für Mo einmal die Terminalsymbole benenne und dann gucke woraus sich diese Symbole ableiten lassen. Also für Aufgabe1 A und B von der linken Seite, danach woraus A und B von der linken Seite abgelitten sind. Hier dann von S.
Bei 2. komme ich jetzt ins schleudern. M1=MoU{F} ist damit das F aus T->T*F oder T->F gemeint? Ich tippe auf T->F. Wenn ja, warum? Ich hätte nämlich intuitiv auf T->T*F getippt wegen * aus Mo. Wo ist mein Denkfehler?
Aber das linkeste Nonterminal wird ersetzt wegen lambda,oder?
nach 2 nullen wird das A auf lambda abgebildet
Und bei der Bestimmung der produktiven Symbole heisst es ja einmal für 1 :
U= Vereinigung
Mo={0,1} S->A1B|CD
M1=Mo U {A,B} A->0A|D|lambda
M2=M1 U{S,A,B} B->0B|1B|lambda
M3=M2 U{S,A,B} C->0D
D->1C
Verstehe ich das jetzt richtig, dass ich für Mo einmal die Terminalsymbole benenne und dann gucke woraus sich diese Symbole ableiten lassen. Also für Aufgabe1 A und B von der linken Seite, danach woraus A und B von der linken Seite abgelitten sind. Hier dann von S.
klingt gut
und für 2.
Mo=Vt E->E+F|T
M1=Mo U {F} T->T*F|F
M2=M1 U{T,F} F->(E)|i
M3=M2 U {E,T,F}
Bei 2. komme ich jetzt ins schleudern. M1=MoU{F} ist damit das F aus T->T*F oder T->F gemeint? Ich tippe auf T->F. Wenn ja, warum? Ich hätte nämlich intuitiv auf T->T*F getippt wegen * aus Mo. Wo ist mein Denkfehler?
M1=Mo U {F} doch wegen F -> i mit i aus Mo
im nächsten schritt kommt T dazu, wegen T -> F
dann E
Hallo ich hab noch Probleme bei dieser Aufgabe:
S-> aAbBCc | AS
A-> aAb | lambda
B-> bBc | cCDd
C-> cc | cEc
D-> AabB | BbS
E-> ab | ba
Die folgende Grammatik soll reduziert werden.
Also bestimmen wir erstmals die Produktiven Symbole.
Mo ={a,b,c,d}
M1 = Mo U {A,C,E}
wie komme ich auf ACE? ich verstehe die Definition nicht richtig, kann mir da jemand helfen?
Def lautet:
Mo:= Vt , Mi+1 := Mi U {A element Vn | Es gibt w element Mi* : A-> w element P}
Mo:= Vt , Mi+1 := Mi U {A element Vn | Es gibt w element Mi* : A-> w element P}
also M1 = Mo U {A element Vn | Es gibt w element Mo* : A-> w element P}
= {a,b,c,d} U {A element Vn | Es gibt w element {a,b,c,d}* : A-> w element P}
auf deutsch: es kommen alle nonterminale dazu, die auf terminalwörter abbilden,
also A wegen A -> lambda, C wegen C -> cc und E wegen E -> ab
denn diese 3 nonterminale sind produktiv,
in der nächsten runde zur bestimmung von M2
kommen alle nonterminale hinzu, die auf wörter bestehend aus
terminalsymbolen und A,C,E abbilden,
also ganz nach definiton