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 PDF

Info

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
Application number
DE10314835A
Other languages
English (en)
Inventor
Roy Oberhauser
Christian Reichel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Priority to DE10314835A priority Critical patent/DE10314835A1/de
Priority to EP04739074A priority patent/EP1609061A2/de
Priority to US10/551,454 priority patent/US8473937B2/en
Priority to PCT/EP2004/003301 priority patent/WO2004088549A2/de
Publication of DE10314835A1 publication Critical patent/DE10314835A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, 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.
  • Anhang 1 Listing 1: TestOutput.xjava
    Figure 00060001
  • Listing 2: TestOutput.xjava*
    Figure 00060002
  • Listing 3: TestOutput.java
    Figure 00060003

Claims (6)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
DE10314835A 2003-04-01 2003-04-01 Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen Ceased DE10314835A1 (de)

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)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
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