Hallo in die Runde, Das Thema Codegeneratoren wird hier recht selten aufgegriffen. Da möchte ich mal eine Aufgabe (weil Probleme gibt es ja nicht) in den viruellen Raum stellen. Also ich möchte mir einen einfachen Codegenerator schreiben. Hauptaufgabe ist es Informationen für die Konfiguration in Strukturen und Konstanten und #defines zu packen. Richtig fein wird es wenn man die Konfiguration noch auf einer einfachen grafischen Oberfläche (ähnlich einem XML-Editor) erledigen könnte, ist aber nicht wirklich nötig. Nun wollte ich mich mal belesen was es da für Möglichkeiten gibt. Aber alles was man so im Netz findet geht viel zu weit und beschreibt den Weg vom Model zum Code. Was kennt ihr für Möglichkeiten sich einen Codegenerator zu bauen? Eine Option die ich theoretisch kenne, ist der Weg aus XML über die Transformation (XSLT). In Richtung HTML hab ich das schon gemacht. Auf Arbeit haben wir ein etwas mächtigeres Werkzeug, welches mir aber trotzdem noch zusagt. Dieses nutzt XML um die Konfigurationsstruktur zu beschreiben. Daraus wird eine Java-Klasse (Java-Objekt) automatisch generiert. Und dann kann man per ANT richtig flexibel beliebige Generatoren schreiben. Man kann im Generator-ANT-File auf alle Struktur-Elemente über GetFunktionen zugreifen. Also für die jenigen die näher dran sind: Ich will mir einen einfachen AUTOSAR-Config-Code-Generator basteln. Schon mal vorne Weg, danke für die Ideen, TManiac
Moin, Ich will einfach das Thema noch mal hochziehen. Kann doch nicht sein, dass sich keiner Hilfswerkzeuge bastelt um übermäßige und fehlerträchtige Tipparbeit zu vermeiden. Wie gesagt, auch wenn ich es für AUTOSAR-Software nutzen möchte, so müssen die Ideen nicht zwangsweise direkt aus der Ecke kommen. Gruß, TManiac
...bei uns gibts lt. Intranet nur einen Hartmut Räthe, ansonsten hört sich das sehr nach den Vorentwicklern an :) Kann ich dir aber leider auch nicht helfen, auch wenn ich das Thema kenne. Jedoch nicht von seiten der Basissoftwarekonig. Aber das Thema ist schon sehr speziell, muss man sagen... Viel Erfolg, Klaus.
Nee, nicht ganz. Ich suche nichts spezielles. Ich suche nur eine einfache Möglichkeit um Strukturen und so zu erzeugen. Das hat im Grunde nichts direkt mit AUTOSAR zu tun. Es kann aber dafür genutzt werden (so wie der Aufbau eines Getriebes auch mit einem Auto zu tun haben kann, muss aber nicht). kleines Beispiel? ich habe zb eine Beschreibung in folgender Weise (XML):
1 | <module> |
2 | <allgemeineEigenschaften> |
3 | <EigenschaftTypeA>WertABC</EigenschaftTypeA> |
4 | <EigenschaftTypeB>WertCBA</EigenschaftTypeB> |
5 | </allgemeineEigenschaften> |
6 | <spezielleEigenschaften> |
7 | <EigenschaftTypeC> |
8 | <TeilEigenschaftTypeC1>234</TeilEigenschaftTypeC1> |
9 | <TeilEigenschaftTypeC2>987</TeilEigenschaftTypeC2> |
10 | <TeilEigenschaftTypeC3>567</TeilEigenschaftTypeC3> |
11 | </EigenschaftTypeC> |
12 | <EigenschaftTypeD> |
13 | <TeilEigenschaftTypeD1>SymbolischeName1</TeilEigenschaftTypeD1> |
14 | <TeilEigenschaftTypeD2>42</TeilEigenschaftTypeD2> |
15 | </EigenschaftTypeD> |
16 | </spezielleEigenschaften> |
17 | </module> |
und daraus würde ich gerne etwas im folgenden Stil machen:
1 | #define DefMitEigenschaftTypeA WertABC
|
2 | #define DefMitEigenschaftTypeB WertCBA
|
3 | |
4 | const TypeEigenschaftTypeC ConstantEigenschaftTypeC = |
5 | {
|
6 | 234, |
7 | 987, |
8 | 567
|
9 | };
|
10 | |
11 | const TypeEigenschaftTypeD ConstantEigenschaftTypeD = |
12 | {
|
13 | SymbolischeName1, |
14 | 42
|
15 | };
|
Das Beispiel ist halt stark vereinfacht, aber es sollte reichen um das Verfahren zu verstehen. Es geht eben nur darum um überhaupt einen Ansatz zu haben. Gruß, TManiac
Ok - verstanden, aber keine Aktien drin, sry :) Klaus.
Hallo, das hab ich schon auf vielfältige Weise gemacht. Z.B. habe ich in grauer Vorzeit SNMP ASN.1 MIBs in C Strukturen "compiliert". Als Werkzeuge habe ich flex und bison (lex/yacc) verwendet. Bei einen HTML-Komprimierer (Tokenizer/Musterkomprimierung) für Ulrich Radigs Webserver habe ich einen HTML/XML Scanner/Tokenizer aus Codeproject (http://www.codeproject.com/KB/recipes/#Parsers) zurückgegriffen. Hier wird HTML etwa auf 50%-70% komprimiert in C-Headers (Progmem-Struktur) übersetzt und von einem atmega 644 mittels Mustertabelle on the fly dekomprimiert. Möglichkeiten/Tools gibts also viele, allerdings habe ich niemals ein Metatool gesehen, welches scannen/parsen der Quellinformation und generieren des Zielformats ohne Umweg über ein Programm (dedizierter compiler). Gruss, Andreas
Hallo, Ich weiss nicht, ob noch jemand den Thread auf dem Radar hat, aber ich versuche es mal. Also mir fallen zwei realistische Möglichkeiten ein: 1. dynamische Sprachen (z.B. Python oder Ruby) machen es sehr einfach deine Systembeschreibung (XML, YAML, ...) zu verarbeiten. Zu anschließenden Codegenerierung bieten sich Templating-Systeme (z.B. Cheetah/Python http://www.cheetahtemplate.org/ an). Wenn man eine für sich passende Tool-Kombination gefunden hat, kann man nicht mehr ohne, die Einsatzmöglichkeiten sind vielfältig. Einer der wenigen Titel zu diesem Thema ist: Jack Herrington: Codegeneration in Action [Manning]. Ich habe es zwar noch nicht gelesen, aber es scheint einen breiten Überblick zu bieten (unter der Verwendung von Ruby). 2. Model-driven Development/Engineering (Modellgetriebene Software-Entwicklung) Wenn du dich beruflich mit AUTOSAR beschäftigst, kommst du früher oder später damit so oder so in Berührung. Und ja, es ist ein sehr komplexes Thema. Ich kann hier nur das Eclipse-basierte Projekt Acceleo http://www.eclipse.org/acceleo/ empfehlen; die Tutorials sind einen Blick wert. Wer nun MDSD automatisch mit UML assoziert, der irrt sich, jedenfalls im Zusammenspiel mit Eclipse. Das Eclipse-Modelling-Framework (EMF) bietet Tools mit denen man unter anderem eigene Meta-Modelle anlegen kann. Das ist nicht so schrecklich, wie es sich anhört. Es könnte in deinen Fall bedeuten, das dein Meta-Modell aus den Elementen "module, allgemeineEigenschaften,EigenschaftTypeA" etc. besteht, die in irgendwelchen Beziehungen zueinander stehen. Danach generierst du einen Model-Editor, mit dem du die konkreten Eigenschaftswerte "WertABC,WertCBA" erfasst. Zu guter Letzt transformierst du dein Modell in eine beliebige Text-Darstellung; Acceleo ist ein model-to-text Tool. Es ist letztlich eine Frage der Angemessenheit und der Bereitschaft sich einzuarbeiten, und der Aufwand ist mitunter nicht gering. Cheers Chris
Dank dir Christoph, der Tipp mit dem Buch ist viel wert. MDSD ist zwar am Rande auch da, mir geht es aber mehr um die LowLevel Software. Ich versuche mich an einer eigenen Implementation der MCAL Module für mich privat. Da fließt zwar einiges aus dem Erfahrungen im Berufsumfeld ein, aber das Geld für die Tools will ich nicht ausgeben. Inzwischen weiß ich auch dass so einiges zur Godegeneration schon im EMF drin ist, das auch ausgiebig in den kommerziellen Tools genutzt wird. Gruß, TManiac
Jens Räthe schrieb: > Ich suche nur eine einfache Möglichkeit um > Strukturen und so zu erzeugen Falls du des Javas mächtig bist, ich nutze für sowas ganz gerne http://velocity.apache.org/ Mit einem passendem Template und einem kleinem XML Parser kannst du dir da relativ simpel deinen gewünschten Generator bauen. Wenn du es sehr Luxoriös haben willst: http://www.eclipse.org/Xtext/ das generiert dir automatsich eine Editor Plugin für Eclipse...
Hallo zusammen! Sollte noch jemand diesen Thread beobachten, stelle ich einmal meine Absicht vor. Ich besitze zum Beispiel 30 Codes, möchte daraus gerne 300 machen. Es müsste doch möglich sein, aus einer gewissen Anzahl von Codes den Algorithmus dahinter auszulesen - am besten mit einem Tool zum Erstellen eines Generators, welches ich allerdings bisher noch nicht gefunden habe. Kennt jemand eine solche Hilfe? Ich denke mal nicht, dass es möglich sein wird per Hand mit nur 30 Codes einen Algorithmus auszulesen, oder? Taylor
@ Taylor Dies hier ist ein Thread in dem es darum geht, Programmcode automatisch zu generieren. Abgesehen von den grundsätzlichen Schwierigkeiten den Algorithmus einer Information zu finden der verwendet wurde um sie zu generieren um neue Information im Sinne einer Identifikation (Code) bzw. eines Schlüssels (Kryptografie) zu generieren, wäre zu klären ob Dein konkretes Vorhaben nicht gegen geltende Gesetze bzw. allgemeine oder besondere Geschäftsbedingungen verstösst. Der erste Grund, also die grundsätzlichen mathematischen Schwierigkeiten, stehen allerdings einem deterministischen Verfahren überhaupt im Wege. So lässt sich zu jeder beliebigen Zahlenfolge eine unendliche Menge von Algorithmen angeben um sie zu erzeugen. Ob einer davon einen weiteren Code erzeugt, der den Regeln zur Verifikation auch der ursprünglichen Folge(n) entspricht lässt sich ausschliesslich durch Versuch herausfinden.
Rein Interesse haber, aber ist was draus geworden? Generell wäre mir bei XML und daraus im einfach Stil Code generieren auch XSLT dazu eingefallen.
Hallo! Wenn das Thema Codegenerator (für AUTOSAR) noch aktuell ist, sollstest Du dir unbedingt X2X anschauen (www.x2x.ch). Damit kannst Du superschnell Deien Gnerator bauen uns auch Stück für Stück ausbauen, ohne groß programmieren zu müssen.
Eine weitere Idee, die wir in nem Autosar-Serienprojekt nutzen: http://www.infoq.com/articles/thiede-ruby-modelling
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.