hallo gemeinde, bin neu hier und hab auch schon gleich eine frage :lol:
also es geht um folgendes: ich muss ein projekt durchführen bei dem von den verschiedenen modulen eines compilers zwei ausgewählte gegenstand des projekts sind:
symboltabellenverwaltung, sowie das parsen von arithmetischen ausdrücken mit erzeugung von auswertbaren „Expression-Trees"
also für die symboltabelle wollte ich eine hashtabelle benutzen, ich brauch nur die identifier selbst un die werte dort drin, soweit ist mir das alles noch klar.
dann das parsen.
ein beliebiger arithmetischer ausdruck der form
soll verarbeitet werden, zur vereinfachung sind nur identifier als operanden zugelassen und keine konstanten, desweitern nur + - * / (mit priorität und klammerung)
das ziel soll es sein einen arithmetischen ausdruckzu analysieren und den zugehörigen expression tree aufzubauen
der die semantik des ausdrucks genau wiederspiegelt.
hab mich soweit auch mittels verschiedenen quellen in die thematik eingelesen dennoch sind mir dazu einige dinge nicht ganz klar wie sie zusammenspielen...
also ich hab mir das bisher so gedacht dass ich mir nen lexer bau der mir dann den eingabestring in tokens splittet und diese dann an den parser weitergibt(realisiert mit stacks), so weit so gut aber was mach ich mit der symboltabelle bzw welche rolle spielt die bei der ganzen sache, es muss doch irgendwie ne verbindung zwischen diesen modulen geben :bahnhof:
ein script meint folgendes:
klar wenn ich mir den baum jetzt so auf papier aufmale für ein ganz simples beispiel 2 + 4 * 3 ist das offensichtlich aber wo genau ich den baum jetzt generiere ist mir unklar und die sache mit der symboltabelle(die mit dem lexer zusammenspielt?!?!)
so das wars erstmal
bin dankbar für jede hilfe
gruß dennis
also es geht um folgendes: ich muss ein projekt durchführen bei dem von den verschiedenen modulen eines compilers zwei ausgewählte gegenstand des projekts sind:
symboltabellenverwaltung, sowie das parsen von arithmetischen ausdrücken mit erzeugung von auswertbaren „Expression-Trees"
also für die symboltabelle wollte ich eine hashtabelle benutzen, ich brauch nur die identifier selbst un die werte dort drin, soweit ist mir das alles noch klar.
dann das parsen.
ein beliebiger arithmetischer ausdruck der form
Code:
[(A*B+C*(D-E))
das ziel soll es sein einen arithmetischen ausdruckzu analysieren und den zugehörigen expression tree aufzubauen
der die semantik des ausdrucks genau wiederspiegelt.
hab mich soweit auch mittels verschiedenen quellen in die thematik eingelesen dennoch sind mir dazu einige dinge nicht ganz klar wie sie zusammenspielen...
also ich hab mir das bisher so gedacht dass ich mir nen lexer bau der mir dann den eingabestring in tokens splittet und diese dann an den parser weitergibt(realisiert mit stacks), so weit so gut aber was mach ich mit der symboltabelle bzw welche rolle spielt die bei der ganzen sache, es muss doch irgendwie ne verbindung zwischen diesen modulen geben :bahnhof:
ein script meint folgendes:
Wenn jedem Identifier in der Tabelle ein Wert zugeordnet ist, ist die Auswertung des Baums offensichtlich:
Bei jedem Knoten wird auf die schon berechneten (oder bei Blättern: aus der Symboltabelle geholten) Werte der beiden Söhne die Knotenoperation angewendet.
Das Ergebnis der Operation erhält der Knoten als Wert.
Der Wert der Wurzel entspricht dem Wert des gesamten arithmetischen Ausdrucks.
klar wenn ich mir den baum jetzt so auf papier aufmale für ein ganz simples beispiel 2 + 4 * 3 ist das offensichtlich aber wo genau ich den baum jetzt generiere ist mir unklar und die sache mit der symboltabelle(die mit dem lexer zusammenspielt?!?!)
so das wars erstmal
bin dankbar für jede hilfe
gruß dennis