001
28.11.2014, 22:47 Uhr
Hans
Library Walker (Operator)
|
Hi,
auf der Wikipediaseite von ANTLR liest man u.a.:
Zitat von Wikipedia: |
ANTLR unterstützt die Erzeugung von Parsern, Lexern und TreeParsern für LL(k)-Grammatiken mit beliebigen k. ... Als Zielsprachen werden u. a. ActionScript, Ada95, C, C++, C#, Java, JavaScript, Objective-C und Python unterstützt.
|
Unten auf der Seite findet sich dann ein Link zu einer Seite die erklärt, wie man ANTLR dazu bewegt, C++ code zu erzeugen. Die JNI-Schnittstelle ist der Weg, die in C++ erstellten Funktionen in Java verfügbar zu machen, wie ich einem weiteren Artikel der Wikipedia entnommen habe. Da ist unten ebenfalls ein einführender Artikel zur Handhabung der Schnittstelle vorhanden. Also kannst Du weiter auf Deinen Listner aus Java aufbauen.
Beim TreeWalker und Listner handelt es sich im übrigen um Funktionen (oder Programme), die man auch in C++ oder sonst einer Programmiersprache realisieren kann. Wenn mich nicht alles täuscht, ist der TreeWalker nichts anderes als eine Funktion, die die Datenstruktur "Baum" traversiert. Da es um die Auswertung von arithmetischen Ausdrücken geht, dürfte es sich um Postorder-traversierung handeln. Das kann man beispielsweise bei Sedgewick, Algorithmen in C++ nachlesen. Zum Vergleich kann man den Titel Algorithmen in Java vom selben Autor heran ziehen.
Zitat: |
Erste Aufgabe soll es sein, erstmal eine solche Ableitung an einer Stelle x0 zu berechnen in einer C++ Funktion. Da wir uns C++ jetzt selbst aneignen müssen bin ich ziemlich ratlos wie man in C++ "rechnet".
|
Das Problem, wie man eine Ableitung bestimmt, findet sich in den Lehrbüchern zur numerischen Mathematik, Stichwort Newtonverfahren. Dann suchst Du in der Bibliothek nach Büchern, die numerische Mathematik auch gleich anhand von Quellcode demonstrieren. Etwa Numerical Recipes Example Book (C++): The Art of Scientific Computing by Vetterling, William T., Press, William H., Teukolsky, Saul oder Numerik-Algorithmen; Verfahren, Beispiele, Anwendungen von Gisela Engeln-Müllges u.a. - Von dieser Dame gibt es auch Versionen des Buches mit Beispielcode in unterschiedlichen Programmiersprachen. Die sind aber schon etwas älter.
Als letztes wäre noch ein gutes Lehrbuch zu C++ nötig. Da gibt es auch den einen oder anderen Titel, der Java und C++ gegenüber stellt, etwa dieses hier: Objektorientierte Programmiersprachen. Einführung und Vergleich von Java, C++, C# und Ruby von Klaus Zeppenfeld. Ansonsten nachsehen, was die Biliothek sonst noch im Angebot hat und gucken, womit man am besten klar kommt.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 28.11.2014 um 22:50 Uhr von Hans editiert. |