DE10314835A1 - Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen - Google Patents
Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen Download PDFInfo
- Publication number
- DE10314835A1 DE10314835A1 DE10314835A DE10314835A DE10314835A1 DE 10314835 A1 DE10314835 A1 DE 10314835A1 DE 10314835 A DE10314835 A DE 10314835A DE 10314835 A DE10314835 A DE 10314835A DE 10314835 A1 DE10314835 A1 DE 10314835A1
- Authority
- DE
- Germany
- Prior art keywords
- code
- language
- extensions
- formulated
- codeml
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Die
Erfindung besteht im Wesentlichen darin, dass ein in einer Meta-Auszeichnungssprache formulierter
erster Code CodeML, der mindestens eine Spracherweiterung LE enthält und durch
RCONV nicht in gültigen
Quelltext SC* überführbar ist,
durch eine Transformation T in Abhängigkeit von Transformationsregeln
TR, welche einen Sprachkonverter LC enthalten, in einen in der Meta-Auszeichnungssprache
formulierten zweiten Code CodeML* ohne diese Spracherweiterungen
LE überführt wird,
und dieser zweite Code CodeML* in einen in der ersten Programmiersprache
ohne die Spracherweiterungen formulierten zweiten Quellcode SC*
verwandelt wird. Ein wesentlicher Vorteil besteht bspw. darin, dass
eine Verifikation oder Überprüfung der
Spracherweiterungen mit einem für
die normale Programmiersprache vorgesehenen Compiler erfolgen kann.
Description
- Die Erfindung betrifft ein Verfahren und eine Anordnung zur Erzeugung und Verarbeitung von Quellcode, bei dem/der ein Quellcode in eine Darstellung in einer Meta-Auszeichnungssprache, beispielsweise XML, übergeführt, dort, beispielsweise mit XSLT, transformiert und dann diese in der Meta-Auszeichnungssprache formulierte transformierte Darstellung wieder in einen Quellcode umgewandelt wird.
- Aus dem Internet ist unter http://beautyj.berlios.de/ ein Java Source Code Transformation Tool BeautyJ bekannt, bei dem ein Java Quellcode in eine XML-Darstellung umgewandelt wird, mittels Sourclet API, beispielsweise durch Einfügen von Leerzeichen oder geänderten Kommentaren an bestimmten Stellen, „verschönert" und anschließend der modifizierte Quellcode in Java Quellcode zurück konvertiert werden kann. Eine Transformation mittels XSLT wird hier, für diesen Zweck, nur vorgeschlagen, aber nicht umgesetzt.
- Die der Erfindung zugrunde liegende Aufgabe liegt nun darin, ein Verfahren und eine Anordnung zur Erzeugung und Verarbeitung von Quellcode anzugeben, bei dem/der eine weitergehende noch flexiblere und effizientere Modifikation des Quellcodes erreicht wird.
- Diese Aufgabe wird hinsichtlich des Verfahrens durch die Merkmale des Patentanspruchs 1 und hinsichtlich der Anordnung durch die Merkmale des Anspruchs 4 erfindungsgemäß gelöst. Die weiteren Ansprüche betreffen bevorzugte Ausgestaltungen der Erfindung.
- Die Erfindung besteht im Wesentlichen darin, dass ein in einer Meta-Auszeichnungssprache formulierter erster Code CodeML, der mindestens eine Spracherweiterung LE enthält und durch RCONV nicht in gültigen Quelltext SC* überführbar ist, durch eine Transformation T in Abhängigkeit von Transformationsregeln TR, welche einen Sprachkonverter LC enthalten, in einen in der Meta-Auszeichnungssprache formulierten zweiter Code CodeML* ohne diese Spracherweiterungen LE überführt wird, und dieser zweite Code CodeML* in einen in der ersten Programmiersprache ohne die Spracherweiterungen formulierten zweiten Quellcode SC* verwandelt wird. Ein wesentlicher Vorteil besteht bspw. darin, dass eine Verifikation oder Überprüfung der Spracherweiterungen mit einem für die normale Programmiersprache vorgesehenen Compiler erfolgen kann.
- Die Erfindung wird im Folgenden anhand von in den Zeichnungen dargestellten Beispielen näher erläutert. Dabei zeigt
- Zeichnung 1 ein Gesamtblockdiagramm zur Erläuterung der Erfindung und
- Zeichnung 2 ein Blockschaltbild zur Erläuterung der erfindungsgemäßen Überführung von PreProcessing-Erweiterungen.
- In Zeichnung 1 ist ein Gesamtblockdiagramm zur Erläuterung der Erfindung dargestellt, bei dem ein in einer Meta-Auszeichnungsprache formulierter erster Code CodeML, der eine Spracherweiterung LE enthält und durch RCONV nicht in gültigen Quelltext SC* überführbar ist, durch eine Transformation T in Abhängigkeit von Transformationsregeln TR, welche einen Sprachkonverter LC enthalten, in einen in der Meta-Auszeichnungssprache formulierten zweiter Code CodeML* ohne überführt wird, welcher keine diese Spracherweiterungen LE enthält und deshalb in einen Quellcode SC* verwandelt werden kann, welcher mittels eines Compilers COMP wiederum in gültigen Binärcode/ByteCode B* überführbar ist.
- Der modifizierte Quellcode SC* sind beispielsweise in der Programmiersprache Java und die Codes CodeML und CodeML* sind beispielsweise in der Meta-Auszeichnungssprache XML formuliert, wobei „XML" für Extended Markup Language steht.
- Die Transformation T, z. B. eine Extended Stylesheet Language Transformation oder XSLT, wird durch Transformationsregeln TR, z. B. innerhalb von XSL (Extended Stylesheet Language) Dateien beschrieben, wobei bspw. die in XSL formulierten Regeln u.a. als Language Converter LC verwendet werden und beschreiben wie der in XML-codierte Quellcode CodeML mit einer Spracherweiterung LE in eine Variante ohne Spracherweiterung transformierbar ist.
- In Zeichnung 2 ist ein erstes Ausführungsbeispiel dargestellt, bei dem ein in einer Meta-Auszeichnungssprache formulierter erster Code CodeML eine Spracherweiterung für PreProcessing PPE (z.B. <define>, <ifdef>, usw.) enthält, und mit Hilfe einer Transformtion T in Abhängigkeit von Transformationsregeln TR, welche einen PreProcessing Language Converter PPLC besitzen der PPE auflöst bzw. anwendet, in einen in der Meta-Auszeichnungssprache formulierten zweiten Code CodeML* ohne Spracherweiterung transformiert wird.
- Die Ausgestaltung der Spracherweiterung erfolgt typischerweise in Form von Elementen für die generische Programmierung 1, und/oder für PreProcessing 2 und/oder eine kunden- bzw. entwicklerspezifische Grammatik 3 und/oder für Makros 4.
- Alle Spracherweiterung bzw. der CodeML selbst kann jederzeit durch den Einsatz von DTDs(document type definitions) bzw. XMLSchema validiert werden.
- Der Programmierer erhält durch die Erfindung mehr Freiheiten, da die Grammatik der verwendeten Programmiersprache auf die Wünsche des Programmierers abgestimmt werden kann und eine Rücktransformation auf die normale Grammatik der Programmiersprache erst am Ende der Programmentwicklung erfolgen muss. Ein wesentlicher Vorteil besteht auch darin, dass eine Validierung der Spracherweiterungen mit einem für die normale Programmiersprache vorgesehenen Compiler erfolgen kann.
- Die im Anhang 1 befindlichen Programmauflistungen Listing 1 bis Listing 3 zeigen die Auflösung der PreProcessing-Erweiterungen PPE an einem konkreten Beispiel, bei dem die in Listing 1 dargestellte Klasse TestOutput.xjava eine PPE in Form von <define name="m" value="private"> enthält, welche Einfluß auf die Werte der <m>-Elemente nimmt, und durch eine Transformation T in Abhängigkeit von Transformationsregeln TR (hier: PPLC) nun in die in Listing 2 dargestellte XML-basierte Form TestOutput.xjava* überführt wird, bei der alle <m>-Elemente durch ein über value="private" bestimmtes <private/>-Element ersetzt werden. Hiermit wird es möglich TestOutput.xjava* in den in Listing 3 aufgezeigten Quellcode TestOutput.java zu überführen.
- Durch das erfindungsgemäße Verfahren ergibt sich noch eine Reihe von weiteren Vorteilen, wie beispielsweise:
- 1. Es ist nur ein System für Problemstellungen wie Customizing von Programmiersprachen, usw. erforderlich und nicht eine Reihe verschiedener teilweise proprietärer Werkzeuge.
- 2. Das Verfahren basiert auf Standards wie XML und XSLT und ist hinsichtlich der Konvertierbarkeit in andere Programmiersprachen geringeren Beschränkungen unterworfen als andere Verfahren zur Modifikation von Quellcode.
- 3. Selbst für spezielle und komplizierte Quellcode-Modifikationen sind keine proprietären Speziallösungen erforderlich, sondern es können hierfür existierende Standards wie XSLT, XPath und XQuery genutzt werden.
- 4. Diese Art der Modifikation erlaubt die Erstellung von Hierarchien u.a. durch die Möglichkeit zur geordneten, automatisierten Hintereinanderausführung (Pipelines) mehrerer Transformationen, bspw. von Sprachanpassungen.
- 5. Die Transformationen können für eine allgemeine Wiederverwendung in XSLT-Dateien gespeichert werden, so daß Bibliotheken z.B. für bestimmte Abläufe entstehen können.
- 6. Es kann eine XML-Repräsentation des Quellcodes in einer XML-Datenbasis gespeichert und bei Bedarf mit Hilfe einer XSTL in einfacher Weise an die jeweiligen Kunden- bzw. Entwicklerbedürfnisse angepasst werden (Customization).
- 7. Durch die Verwendung der Standards XMLSchema oder DTD oder entsprechende XSLTs kann der Code vorab (ohne Kompilierung), auf bestimmte Korrektheitsaspekte hin, überprüft (validiert) werden.
- 8. Übliche XML-Tools können zur einfachen Bearbeitung bzw. Visualisierung und Bestimmung von Beziehungen im Code verwendet werden.
Claims (6)
- Verfahren zur Erzeugung und Verarbeitung von Quellcode, – bei dem ein in einer Meta-Auszeichnungsprache formulierter erster Code (CodeML) mit mindestens in einer Meta-Auszeichnungssprache formulierten Spracherweiterungen (LE) als Ausgangscode zur Verfügung steht, – bei dem der Ausgangscode durch eine Transformation (T) in Abhängigkeit von Transformationsregeln (TR) in einen in der Meta-Auszeichnungssprache formulierter zweiter Code (CodeML*) ohne die in der Meta-Auszeichnungssprache formulierten Spracherweiterungen (LE) überführt wird, – bei dem die Transformationsregeln einen Sprachkonverter (LC) enthalten, der die Spracherweiterungen (LE) des ersten Codes auflöst bzw. anwendet – bei dem der erste Code nicht und der zweite Code prinzipiell durch einen Rückkonverter (RCONV) verarbeitet werden kann, und – bei dem dieser zweite Code in einen in der ersten Programmiersprache oder einer anderen Programmiersprache formulierten zweiten Quellcode (SC*) umwandelbar ist, und einen gültigen Binärcode/ByteCode (B*) ergeben würde.
- Verfahren nach Anspruch 1, bei dem die Spracherweiterungen (LE) entweder PreProcessing-Erweiterungen (PPE), und/oder die generische Erweiterungen, und/oder kunden- bzw. entwicklerspezifische Erweiterungen und/oder für Makro-Erweiterungen enthält.
- Verfahren nach Anspruch 1, bei dem im zweiten Code (CodeML*) mindestens eine Spracherweiterung (LE*) neu erzeugt oder aus dem ersten Code (CodeML) übernommen wird, und diese Erzeugung oder Übernahme der Sprachkonverter (LC) vornimmt, und das Verfahren nach Anspruch 1 auf diesem zweiten Code erneut angewendet werden kann.
- Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Programmiersprache des zweiten Quellcodes Java und die Meta-Auszeichnungssprache XML ist und bei dem die Transformation und der Regelbeschreibung mittels XSLT und XSL erfolgt.
- Anordnung zur Erzeugung und Verarbeitung von Quellcode, – bei der ein Prozessor derart vorhanden ist, dass eine Transformation (T) des Ausgangscodes (CodeML) in Abhängigkeit von in einer erweiterten Stilbeschreibungssprache formulierten Transformationsregeln (TR) und einen darin enthaltenen Sprachkonverter (LC) so durchgeführt wird, dass entweder ein in der Meta-Auszeichnungssprache formulierter zweiter Code (CodeML*) ohne die in der Meta-Auszeichnungssprache formulierten Spracherweiterungen (LE) des ersten Codes (CodeML), oder ein in der Meta-Auszeichnungssprache formulierter zweiter Code (CodeML*) mit neuen und/oder den ursprünglichen in der Meta-Auszeichnungssprache formulierten Spracherweiterungen (LE) erzeugt wird, und – bei der ein Konverter (RCONV) derart vorhanden ist, dass dieser zweite Code in einen in der ersten Programmiersprache oder einer anderen Programmiersprache formulierten Quellcode (SC*) verwandelt wird.
- Anordnung nach Anspruch 5, bei dem die Spracherweiterungen (LE) entweder als PreProcessing-Erweiterungen (PPE), und/oder als generische Erweiterungen, und/oder als kunden- bzw. entwicklerspezifische Erweiterungen und/oder als Makro-Erweiterungen vorhanden sind.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10314835A DE10314835A1 (de) | 2003-04-01 | 2003-04-01 | Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen |
EP04739074A EP1609061A2 (de) | 2003-04-01 | 2004-03-29 | Verfahren und anordnung zur veränderung von software oder quellcode |
US10/551,454 US8473937B2 (en) | 2003-04-01 | 2004-03-29 | Method and array for changing software or source code |
PCT/EP2004/003301 WO2004088549A2 (de) | 2003-04-01 | 2004-03-29 | Verfahren und anordnung zur veränderung von software oder quellcode |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10314835A DE10314835A1 (de) | 2003-04-01 | 2003-04-01 | Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10314835A1 true DE10314835A1 (de) | 2004-11-04 |
Family
ID=33103159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10314835A Ceased DE10314835A1 (de) | 2003-04-01 | 2003-04-01 | Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE10314835A1 (de) |
-
2003
- 2003-04-01 DE DE10314835A patent/DE10314835A1/de not_active Ceased
Non-Patent Citations (2)
Title |
---|
Stefan Schonger et al: Aspect-Oriented Programming and Component Weaving: Using XML Reprensentations of Abstract Syntax Trees, In: Second Workshop on Aspect-Oriented Software Developement, Bonn, Feb- ruary 21-22, 2002, S.59-64, (ftp://ftp3.informatik .uni-bonn.de/pub/paper/tr/IAI-TR-2002-1pdf.gz) (recherchiert am 01.06.04) |
Stefan Schonger et al: Aspect-Oriented Programmingand Component Weaving: Using XML Reprensentations of Abstract Syntax Trees, In: Second Workshop on Aspect-Oriented Software Developement, Bonn, Feb- ruary 21-22, 2002, S.59-64, (ftp://ftp3.informatik.uni-bonn.de/pub/paper/tr/IAI-TR-2002-1pdf.gz) (recherchiert am 01.06.04) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1176482B1 (de) | Verfahren und Computerprogramm zum Herstellen einer Regelung oder Steuerung | |
EP0432802A2 (de) | Verfahren für die automatische Syntaxanalyse (Parsen) des Textes von Computer-Programmen in Kompilierern | |
EP1522028A1 (de) | Verfahren und vorrichtungen zum kodieren/dekodieren von strukturierten dokumenten, insbesondere von xml-dokumenten | |
WO2015185328A1 (de) | Computerimplementiertes verfahren und signalfolge für ein programm zur wiederverwendung von ausführbaren softwarekonfigurationen für softwaresysteme sowie rechneranlage und ein computerprogramm mit programmcode zur durchführung des verfahrens | |
EP3032408B1 (de) | Verfahren zur erzeugung von lauffähigen applikationen mit dynamischen skalierbaren vektorgrafiken | |
EP1721248B1 (de) | Verfahren und datenverarbeitungsgerät zur aktualisierung von rechnerprogrammen per datenübertragung | |
DE102004009676A1 (de) | Verfahren und Systeme zum Erzeugen von Unterstützungsdateien für Befehle | |
EP1609061A2 (de) | Verfahren und anordnung zur veränderung von software oder quellcode | |
DE10357831A1 (de) | System und Verfahren zum Reengineering von Objektmodell-Komponenten zur Generierung von Web-Services | |
EP1622022A1 (de) | Automatische Erzeugung von Testfällen | |
DE10314835A1 (de) | Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen | |
EP1202166A1 (de) | System zur Verifikation von Software-Anwendungsmodellen in Ketten von Software-Entwurfswerkzeugen | |
EP0662226B1 (de) | Verfahren zur bearbeitung eines anwenderprogramms auf einem parallelrechnersystem | |
DE10314832B3 (de) | Verfahren und Anordnung zur kundenseitigen Anpassung von Software | |
DE10314831A1 (de) | Verfahren und Anordnung zur Transformation von Quellcode | |
DE102008044808B4 (de) | Verfahren zur Generierung von Programmcode in einem Betriebssystemspeicher und einem Applikationsspeicher eines Datenträgers | |
DE102020118832B3 (de) | Verfahren zum Bereitstellen sicherheitsrelevanter Daten mittels eines Serversystems, Serversystem und Computerprogrammprodukt | |
EP2682866B1 (de) | Verfahren zur Umsetzung von Datenformaten | |
DE10314834A1 (de) | Verfahren Anordnung zur Modifikation von Quellcode unter Einbeziehung zusätzlicher Informationen | |
EP0560342B1 (de) | Verfahren zum Untersuchen des Ablaufs eines in einer Hardware-Beschreibungssprache geschriebenen Programms | |
EP1959430A2 (de) | Verfahren zur automatischen Generierung von VoiceXML-sprachapplicationen aus Sprachdialogmodellen | |
DE10111461B4 (de) | Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors | |
DE19617719C2 (de) | Verfahren zur Programmübersetzung eines in der Programmiersprache C++ geschriebenen Programms | |
DE19954793A1 (de) | Verfahren zur Compilierung eines Maschinenprogramms | |
EP0729607B1 (de) | Vergleichsverfahren für steuerprogramm-quellcode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |