Heiner KückerCodegenerator für hierarchische Datenstrukturen |
|||||||||
Home Java-Seite Bit Packed Array ASM Improved heterogene Map, HMap Constraint Code Generator JSP WorkFlow PageFlow FlowControl Page Flow Engine Web Flow Engine Control_and_Command JSP_Spreadsheet Code-Generator für Option-Either-Stil in Java verbesserter Comparator Fluent-Interface Code-Generator auf Basis einer Grammatik Visitor mit Multidispatch for-Schleife mit yield-return Kognitions-Maschine semantisches Netz Domain Parser Codegenerator_für hierarchische Datenstrukturen Expression_Engine Formula_Parser Thread Preprocessor State Transition Engine AspectJ Java_Explorer DBF_Library Kalender_Applet SetGetGen BeanSetGet CheckPackage LineNumbers GradDms Excel-Export StringTokenizer JspDoc JspCheck JSP-Schulung Java Server Pages Struts Ascii-Tabellen- Layouter Ascii-Baum- Layouter Ascii-Art-Fluss- Diagramm- Parser AsciiArt AssignmentMatrix Layouter StringSerial Silbentrennung JDBC_Schlüssel- Generierung bidirektional/ unidirektional gelinkte Liste Java_Sitemap Generator XmlBuilder RangeMap StringFormatter VersionSafe XCopy JTextField CommandLine- ParamReader Bitmap-Grafik MultiMarkable- Buffered- InputStream JavaCache JdomUtil CollectionUtil XML Really Pull Parser Log-Filter Remote-Protokoll Sudoku-Generator Delegation statt Mehrfachvererbung Disjunct Interval Set WebCam_Demo Weiterentwicklung_Java Alaska-XBase++-Seite Projekte Philosophien Techniken Konzepte Sudoku Kontakt / Impressum Links SiteMap Letzte Aktualisierung: 19.02.2005 |
Codegenerator für hierarchische DatenstrukturenCode generation for hierarchic data structures
Dieser kleine Codegenerator ist ein Beispiel für die
Anwendung des Domain Parser's
(Parser für fachspezifische Sprachen,domain specific languages).
Für komplexe Strukturen (definieren eine in geschwungene Klammern eingeschlossene Unterstruktur) werden Klassen generiert. Nicht als Liste definierte Strukturen werden als Variablen mit set- und get-Methoden in den generierten Klassen hinterlegt. Listen (gekennzeichnet durch paaarweise eckige Klammern [] hinter dem Klassen-Namen) werden als ArrayList mit add-, getXxxCount- und getXxx(index)-Methoden in den generierten Klassen hinterlegt. Die hierarchische Datenstruktur wird in folgender Notation in einer Definitionsdatei Haus.strudef hinterlegt. Dabei ist das Beispiel Haus nur eine angenommene hierarchische Datenstruktur:
In obigem Beispiel erzeugt der Codegenarator die Klassen Haus, Etage, Wohnung, Raum, Keller, KellerRaum und Person. Im Zip-File Hierarchy.zip mit dem Quellcode sind die generierten Java-Klassen für das Haus-Beispiel enthalten. Die erzeugten Klassen bilden eine Komposition, eine Sonderform der Aggregation (Composite-Pattern). In der jetzigen Version bietet der Codegenerator noch reichlich Raum für Verbesserungen. So könnte man für die Erzeugung des Codes eine Template-Engine verwenden. Durch eigene Schlüsselwörter wäre es möglich die Code-Erzeugung besser zu steuern. Denkbar sind zum Beispiel immutable Klassen (alle Werte werden im Konstruktor gesetzt und stehen danach nur noch lesend (get-Methoden) zur Verfügung). Sicher wird der zu erzeugende Code je nach Projektumfeld variieren. Für diesen Zweck kann sich der geschätzte Benutzer meinen Code relativ leicht anpassen. Download der Quelldateien und des Haus-Beispiels Hierarchy.zip Mitgelieferte Dateien:
Zum Kompilieren und Starten des Codegenerators müssen noch die Sourcen des DomainParser's eingebunden werden.
Achtung: Erweiterungen und Fixes stelle ich ohne Historie
und ohne Ankündigung hier bereit. Lizenzbedingungen:
Die Programme, Quelltexte und Dokumentationen können ohne
irgendwelche Bedingungen kostenlos verwendet werden. |