Hallo,
ich bastel seit geraumer Zeit an einem Taschenrechner rum.
Ich bin jetzt an dem Punkt angekommen, an dem mein Rechner einen String bekommen soll und diesen Parsen und - sofern alles korrekt ist - als mathematischen Term interpretieren soll.
Dafür wollte ich eine Klasse MathTerm erstellen, wobei ich bei dem Design noch unschlüssig bin.
Im Prinzip ist ein mathematischer Term eigentlich eine Liste von mathematischen Begriffen (Operatoren, Elemente der Grundmenge und Variablennamen). Deshalb wäre meine intuitive Wahl in Richtung einer LinkedList gegangen. Hier bin ich mir aber auch noch nicht im Klaren, ob meine Klasse MathTerm dann eine Unterklasse von LinkedList darstellt, oder ob MathTerm ein LinkedList-Attribut besitzen soll.
Da ich sowohl beim Parsen, als auch beim Evaluieren mich ziemlich viel in der Datenstruktur bewegen muss, wäre meine Wahl eigentlich eher auf das Erweitern der Klasse LinkedList gegangen.
Vorhin ist mir gerade noch der Gedanke gekommen, dass ein Term nun auch verschachtelt sein kann und im Prinzip die innersten Ausdrücke dann zuerst ausgeführt werden sollten. Dafür wäre dann eigentlich eine Baumstruktur geeignet, um das möglichst effizient abzuhandeln.
Ich würde gerne eure Meinung darüber hören, was ihr denkt, was Sinn macht und wo ich daneben liege.
Vielen Dank schon mal und liebe Grüße,
Naryxus
ich bastel seit geraumer Zeit an einem Taschenrechner rum.
Ich bin jetzt an dem Punkt angekommen, an dem mein Rechner einen String bekommen soll und diesen Parsen und - sofern alles korrekt ist - als mathematischen Term interpretieren soll.
Dafür wollte ich eine Klasse MathTerm erstellen, wobei ich bei dem Design noch unschlüssig bin.
Im Prinzip ist ein mathematischer Term eigentlich eine Liste von mathematischen Begriffen (Operatoren, Elemente der Grundmenge und Variablennamen). Deshalb wäre meine intuitive Wahl in Richtung einer LinkedList gegangen. Hier bin ich mir aber auch noch nicht im Klaren, ob meine Klasse MathTerm dann eine Unterklasse von LinkedList darstellt, oder ob MathTerm ein LinkedList-Attribut besitzen soll.
Da ich sowohl beim Parsen, als auch beim Evaluieren mich ziemlich viel in der Datenstruktur bewegen muss, wäre meine Wahl eigentlich eher auf das Erweitern der Klasse LinkedList gegangen.
Vorhin ist mir gerade noch der Gedanke gekommen, dass ein Term nun auch verschachtelt sein kann und im Prinzip die innersten Ausdrücke dann zuerst ausgeführt werden sollten. Dafür wäre dann eigentlich eine Baumstruktur geeignet, um das möglichst effizient abzuhandeln.
Ich würde gerne eure Meinung darüber hören, was ihr denkt, was Sinn macht und wo ich daneben liege.
Vielen Dank schon mal und liebe Grüße,
Naryxus