DE2249852A1 - Computersystem - Google Patents

Computersystem

Info

Publication number
DE2249852A1
DE2249852A1 DE19722249852 DE2249852A DE2249852A1 DE 2249852 A1 DE2249852 A1 DE 2249852A1 DE 19722249852 DE19722249852 DE 19722249852 DE 2249852 A DE2249852 A DE 2249852A DE 2249852 A1 DE2249852 A1 DE 2249852A1
Authority
DE
Germany
Prior art keywords
language
original
information
program
compiler
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.)
Pending
Application number
DE19722249852
Other languages
English (en)
Inventor
Erland Ralph Kyllonen
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.)
NCR Voyix Corp
Original Assignee
NCR Corp
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 NCR Corp filed Critical NCR Corp
Publication of DE2249852A1 publication Critical patent/DE2249852A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

Die Erfindung betrifft ein Computersystem» Hierbei sind die Datenverarbeitungssysteme und - Programme, insbesondere die Compilerfunktion,von Interesse, welch letztere ein wesentlicher Bestandteil von Datenverarbeitungssystemen ist, wobei ein Ursprungsprogramm von einer höheren Ursprungssprache in den endgültigen Objektmaschinencode "compiled" bzw. umgesetzt wird, der für die Ausführung in einem Computer bestimmter Type geeignet ist. Das Ziel dieser Erfindung ist es, optimierte Wege zur Ausführung dieser Compilerfunktion für eine große Vielzahl verschiedener Arten von Ursprungssprachen zu schaffen, derart, daß solche Programme für eine große Vielzahl verschiedener Typen von Computern verwendbar sind.
Auf dem Gebiet der verschiedenen Computerarten sind es die Hardware-Moduls, welche für den Bau eines Computers verwendet werden. Diese Hardware ist von keinem besonderen Nutzen, solange sie nicht in entsprechender Weise mit Instruktionen versehen wird, die angeben, wie sie zu arbeiten hat. Es ist der Programmierer, der eine bestimmte Sprache zur Entwicklung eines Iristruktionssatzes verwendet, dem sogenannten
3Ö9816/dÖ6§
10.10.72
Programm, welches es dann dem Benutzer erlaubt, rohe Daten in ihrer richtigen Form zu verwenden, so daß die "Hardware" durch die "Software" (Programm) angewiesen werden kann, wie die Daten zu handhaben und die gewünschten Resultate zu erzielen sind.
Während der Entwurf und die Anfertigung von für einen Computer geeigneten Hardware als "Ingenieurwissenschaft" bezeichnet wird, ist es genauso eine unumstößliche Tatsache, daß die Erstellung von Instruktions- und Symbolserien (Programmgebung)ebenfalls eine Art Ingenieurwissenschaft ist, obwohl diese Art in Form von gedruckten Symbolen anstatt von Hardware zum Ausdruck kommt.
Es ist noch nicht allzuviele Jahre her, daß die meisten Programme von Instruktionen in einer Sprache geschrieben wurden, die dem Betriebscode von Maschinen (Objektmaschinencode) sehr ähnlich ist. Seit damals sind jedoch große, sogenannte Compiler entwickelt und gebaut worden, die auf einem höheren Niveau stehen und mit sogenannten problemorientierten, höheren Eingangssprachen arbeiten.
Ein Programm ist eine Definition, die von Computersystemen zwecks Erzielung eines bestimmten Ergebnisses angewandt wird. Das Programm wird dadurch aufgestellt, daß an sich einfachere Definitionen in bestimmter Weise zusammengestellt werden. Beim Objektmaschinencode definiert jede Instruktion einen neuen Wert für den Inhalt von Registern. Instruktionen werden zu Reihen zusammengestellt, was bedeutet, daß die Definitionen so geordnet werden, daß sie in der richtigen Reihenfolge nacheinander zur Anwendung kommen.
Bei den höheren Programmiersprachen gibt es Beispiele von anderen Wegen der Zusammenfassung von Definitionen. "Deklarationen", welche außerhalb der Instruktionsreihenfolge stehen, definieren die Wege, wie der Bezug zu Operanden, wel-
10.3.0.72
309316/0869
ehe in den Instruktionen enthalten sind, zu interpretieren ist. "Unterprogramme" ermöglichen nicht nur die'Bestimmung von Operanden, sondern auch Operationen, welche in anderen Teilen des Programms verwendet werden können. "Ausdrücke" ergeben eine innigere Kombination von Operationen als das einfache Zusammenreihen von Instruktionen, wodurch Zwischenoperanden verwendet werden können, ohne daß diese explizit benannt werden müssen, und außerdem implizit die Anwendefolge der Operatoren beibehalten wird.
Demzufolge ist ein "Programm", welches in einer Sprache geschrieben ist, das die Anwendung aller dieser Techniken gestattet, ein sorgfältig ausgearbeitetes Netzwerk von aufeinander bezogenen Definitionen, nämlich ein sogenanntes Ursprungsprogramm ο Der Compiler bzw. die -Compiler funkt ion bewirkt, daß das Ursprungsprogramm in ein bestimmtes anderes Programm in einer bestimmten anderen Sprache umgewandelt wird, welch letztere tatsächlich auch von einem einfacheren Niveau aus zu verstehen ist und von dem betreffenden Computer (Host computer) verarbeitet werden kann.
Bei dem gegenwärtigen Stand der verschiedenen Computerarten gibt es eine Vielzahl von Ursprungssprachen, die von Programmierern zur Darstellung von Algorithmen in Befehlen und Folgen verwendet werden, wie sie für die Handhabung von Daten durch Computereinrichtungen erforderlich sind. Ferner gibt es für die Verwendung spezieller Computersysteme eine Vielzahl von besonderen Anwendungsarten, wie sie beispielsweise durch die verschiedensten Firmen verwendet werden, zu welchen unter·. anderem IBM Burroughs, Honeywell, General Electric, NCR und andere gehören, wobei nicht zu übersehen ist ,· daß bei j edem der verschiedenen Conputersysteme dieser Firmen das Ursprungsprogramm in einem eigenen Objektmaschinencode vorliegen muß, damit es mit der betreffenden Computeranlage gefahren werden kann.
10.10.72
309816/08 6 9
Für jede höhere Ursprungssprache und Objektmaschinenkombination muß ein besonderes Programm bzw. Compilerprogramm entwickelt werden, welches es ermöglicht, das in der Ursprungssprache geschriebene Programm in einer ganz bestimmten Computeranlage einzusetzen.
Wenn ein Ursprungsprogramm in einer höheren Ursprungssprache aufgestellt wurde, z.B. in Cobol oder Fortran, dann muß dieses höhersprachige Programm in die einfache Maschinensprache bzw. in den Objektmaschinencode umgewandelt werden, der für die Verwendung mit dem gegebenen Computersystem geeignet ist. Es muß also für jede bestimmte Konfiguration ein spezielles Compilerprogramm entwickelt, als Programm geschrieben, getestet und von Fehlern befreit werden. Wenn beispielsweise ein Ursprungsprogramm in einer höheren Sprache, z.B. Cobol, entwickelt wurde und mit einem IBM/Öomputer verwendet werden soll, dann muß das in der höheren Cobolsprache vorhandene Programm einem besonderen Compilerprogramm unterzogen werden, um es in einen Objektmaschinencode umzuwandeln, wie er genau zum Betrieb des IBM 360 Computers erforderlich ist.
Das spezielle Compilerprogramm ist jedoch nur für diese eine, spezielle Situation von Nutzen und kann nicht für andere Computer, beispielsweise solche von Burroughs oder NCR verwendet werden, da hierzu wieder ein anderes Compilerprogramm erforderlich ist, um das in der höheren Ursprungssprache geschriebene Programm für andere Computerarten anwendbar zu machen.
Jedes einzelne dieser "speziellen Compilerprogramme" sind "große Pa^kete" und enthalten tausende und manchmal mehrere hunderttausend Instruktionen, die von Programmierern und Systemanalytikern entwickelt werden müssen. Danach müssen sie geprüft, von Fehlern befreit und zuverlässig gemacht werden, was hunderte von "Mannjahren" in Anspruch nehmen kann. Es ist eindeutig nicht optimal, wenn jedes dieser speziellen Compilerprogramme jedesmal neu erstellt und geprüft werden muß, wenn
10.10.72
30981 6/0869
eine andere Ursprungssprache für ein Programm aufgestellt wird, wobei jedesmal eine andere Art der Erstellung von Computersystemen Anwendung findet.'
Nimmt man beispielsweise an, daß es erwünscht ist, drei verschiedene Arten von Computersystem zu verwenden, zusammen mit Ursprungsprogrammen, welche in drei verschiedenen höheren Ursprungssprachen aufgestellt wurden, dann ist ersichtlich, daß mindestens neun individuelle Compiler entworfen, gebaut, programmiert und geprüft werden müssen, um die erwünschte Fähigkeit zu erzielen. Damit kommt man aber zu einem solch ungeheuer umfangreichen Projekt, daß es höchst unpraktikabel wird. Nimmt man beispielsweise einen Durchschnittsarbeitsfaktor für die Fähigkeit eines einzelnen Programmierers, der ein Jahr arbeitet und in der Lage ist, fünfhundert Instruktionen pro Jahr zu entwickeln, dann sieht man überraschenderweise, daß bereits ein einziges Compilerprogramm vierhundert Mannjahre Programmierarbeit erfordern kann, die zweihunderttausend Instruktionen zu compilieren bzw. umzusetzen, die für ein solches spezielles Compilerprogramm erforderlich sein können.
Es ist ersichtlich, daß bei jeder der gegenwärtigen Computeranlagen praktisch bis zu 50% der Kosten und der nutzbaren Computerzeit zur Ausführung der Compilerfunktion erforderlich ist, d. h. also dazu, das von dem betreffenden Computer zu verarbeitende Ursprungsprogramm in einem maschinenlesbaren Objektcode zu "compilen" bzw. zu übersetzen.
In den 60ziger Jahren schien es, als ob sich die höheren Sprachen, wie beispielsweise Fortran und Cobol, nicht sehr stark entwickeln würden, teilweise infolge der Kompliziertheit und des durch Compiler bedingten Risikos. 1965 erschien PL/1. Dies ist im wesentlichen eine Kombination von Fortran und mit der zusätzlichen angenehmen Eigenschaft der Kommunukation mit dem Betriebssystem. Allgemein wurde für jede Sprache und für jede Generation von neuen Computern ein neuer Compiler geschrie ben.
io.io.72 309816/0869
Ein Versuch zur Verallgemeinerung des Compilers und dadurch auch zur Verringerung der Anzahl von Compilern, welche für jeden neuen Computer geschrieben werden muß, ist unter dem Namen Syntaxcompiling bekannt geworden. Diese Technik besteht in der Bereitstellung von Syntax- und Semantictabellen von der Ursprungssprache als Eingang entsprechend der Anwendung des Programms auf dem Compiler. Die Compilung nach dieser Methode ist naturbedingt langsamer als die häufiger verwendete Tabellen- getriebene Compilertechnik. Die grundsätzliche Schwäche liegt darin, daß der Compiler aus dem Wissen über eine bestimmte Ursprungssprache keinen Vorteil gewinnen kann, um die Prüf- und Forschungsmenge zu reduzieren, die bei der Analyse und dem Erkennungsteil (dem Sprachübersetzerteil) des Compilers erforderlich ist.
Bei einem anderen Versuch auf dem Gebiet des Entwurfs von Compilern hat man das Konzept der Automatisierung des Compilerschreibens durch Verwendung eines Compiler-Compilers entwickelt. Bei Verwendung dieses Konzepts wird ein Compiler als Eingangssignal entsprechend der Beschreibung einer neuen Targetmaschine verwendet. Dieses Eingangssignal wird von einem Compiler-Compiler unter Bildung eines neuen Compilers verarbeitet, um die Ursprungssprache für die neue Targetmaschine umzusetzen (compilen).
Eine naturbedingte Schwäche dieses Konzepts ist es, daß jede Transformation in einen neuen Compiler einen Verlust an Wirkungsgrad zur Folge hat und ein aufeinanderfolgend schlechter werdender Compiler unumgänglich ist.
Aufgrund der Ergebnisse dieser Entwicklungen und Testversuche von verschiedenen Annäherungen zur Sprachverarbeitung erscheint es unmöglich zu sein, die gesamte Ursprungssprache in einem einzigen Übersetzer übersetzen zu können. Das andere Extrem bezüglich der Akzeptierung des oben gesagten, daß für
10.10.72
30981 6/0869
jede Sprache für jeden Computer getrennte, in ihrer Art einzigartige Compiler erforderlich sind, und eine Automation des Aufschreibprozesses einzigartiger Compiler zu versuchen, scheint in ähnlicher Weise unrealistisch.
Die "Groß-Pa^kete" - Compilerprogramme sind weder zuverlässig noch vom wissenschaftlichen Standpunkt her gerechtfertigt, da sie nur in einer bestimmten Situation von Nutzen und so unfangreich, unhandlich und zeitraubend mit Bezug auf Checkouts und Fehlerprüfung sind, daß nur geringe bzw. keine Anstrengungen unternommen wurden, Compilerprogramme bereitzustellen, welche eine verallgemeinerte Übersetzung einer Ursprungsprogrammsprache umfassen, um dadurch eine Anpassuig an jedes spezielle oder eine Vielzahl von Computersystemen zu erzielen.
Ferner beruht zu einem großen Teil die allgemeine Einstellung zur Compiling (um ein in einer Ursprungssprache geschriebenes, Programm für ein gegebenes Computersystem verwendbar zu machen) auf der Theorie, daß eine Übersetzung von dem Ursprungssprachenprogramm derart gemacht werden muß, daß man ein Anweisungssymbol von der Ursprungssprache in einen verwendbaren Maschinenobjektcode umwandelt, um das betreffende Computersystem zu betreiben.
Es wurde erst kürzlich entdeckt, daß das hier vorgeschlagene Konzept der Klassifizierung von Ursprungssprachen-Programminformationen in sprachabhängige Informationsanweisungen des Problems und in sprachunabhängige Informationen (Problemübersetzungsalgorithmus) ein vollständig anderes Compilerfunktionskonzept ermöglicht, was eine beträchtliche Optinierung hinsichtlich der Zeit, des Aufwandes und der Wirtschaftlichkeit in der Anwendung einer verallgemeinerten Compilerfunktion zur Folge haben kann.
Durch die Erfindung soll die Aufgabe gelöst werden, bei einem Computer innerhalb eines Systems einen universellen Com-
10.10.72
3 0 9 8 1 6/0869
piler derart zu verwenden, daß die Compilerfunktion über einen großen Bereich von Ursprungsprogrammsprachen und einen großen Bereich von Computertypen optimiert wird.
Diese Aufgabe wird gemäß der Erfindung dadurch gelöst, daß bei einem Computersystem ein universeller Compiler verwendet wird, welcher sowohl von den Ursprungssprachen als auch von Maschinencod's spezieller Maschinen unabhängig ist.
Ferner soll durch die Erfindung ein optimiertes Software-Firmware-System geschaffen werden, bei welchem ein Ursprungsprogramm, das in irgendeiner beliebigen aus der Vielzahl der möglichen höheren Programmiersprachen geschrieben ist, in einen speziellen Objektmaschinencode compiled bzw. übersetzt werden kann, der für eine Vielzahl verschiedenartiger Computersysterne verwendbar ist.
Weiter soll durch die Erfindung ein Zwischensprachencompiler geschaffen werden, welcher sowohl von den höheren Ursprungssprachen und als auch von den niedrigeren speziellen Maschinencod's praktisch unabhängig ist.
Auch wird durch die Erfindung ein universeller Compiler geschaffen, welcher es entbehrlich macht, einen vollständig neu integrierten built-for-the-purpose-compiler jedesmal entwerfen und auf Fehler untersuchen zu müssen, wenn ein neues Computersystem oder neues Computermodell entwickelt wird. Es ist ersichtlich, daß der universelle Compiler gegebenenfalls in die Implementationssprache des neuen Computers (eine weit geringere Aufgabe) übersetzt werden muß.
Desweiteren soll der universelle Compiler gemäß der Erfindung von der Ursprungssprache unabhängig sein, in welcher das Ursprungsprogramm aufgestellt wurde.
Die Erfindung beinhaltet auch ein optimal verallgemeinertes Compilersystem, welches aus "kleinen Paketen" aufgebaut
10.10.72
30 9 8 16/0 869
ist, um eine Vielseitigkeit und leichte Anpaßungsmoglichkeit an Programme in einer großen Vielzahl von Ursprungssprachen und eine leichte Anpaßung an beliebige verschiedenartige Computersysteme zu erzielen.
Gemäß der Erfindung erhält man ein optimales System, durch welches die Compilerfunktion ganz allgemein für eine Vielzahl von Ursprungssprachen und eine Vielzahl von speziellen ComputersySternen auf einer vereinfachten wirksamen Basis angewendet werden kann.
Ferner soll die Programmierarbeit und Personenbelastung vereinfacht und reduziert werden, die bei der Erstellung der Compilerfunktion für die Verwendung eines bestimmten Computersystems erforderlich ist.
Im Rahmen der Erfindung ergibt sich die Erstellung eines ersten Zwischenprogramms, welches eine Stufe der Unabhängigkeit einer Ursprungssprache darstellt, und die Entwicklung einer zweiten Zwischensprache, welche eine Stufe der Unabhängigkeit von einem beliebigen vorgegebenen Objektmaschinencode ergibt, sowie die Erstellung einer Metasprache, mit der Ursprungssprachen analysiert und beschrieben werden können»
Ein wesentliches Merkmal der Erfindung ist auch die Reduzierung des sehr großen Zeitaufwandes, wie er normalerweise bei der Verwendung eines Computers zur Erstellung und Ausführung der Compilerfunktion erforderlich ist.
Das Wesen der Erfindung läßt sich wie folgt darstellen: die Erfindung bezieht sich auf einen Computer und einen universellen Compiler, die in einem System untergebracht sind, dessen Zweck und Funktion die Bereitstellung eines Software-Firmware-Systems ist, in welchem ein Ursprungsprogramm, das in irgendeiner aus der Vielzahl der (höheren) Programmiersprachen geschrieben ist, in irgendeinen aus der Vielzahl der Objektmaschinencod's compiled und übersetzt wird, der für ein
10.10.72
3098 16/0889
22498S2
bestimmtes Computersystem geeignet ist.
Das System enthält: (a) übersetzen des Ursprungsprogramms von seiner höheren Sprache in eine sprachunabhängige erste Zwischensprache (IL-I); (b) trennen der ausführbaren oder "Aktions"- Anweisungen von den nichtausführbaren Informationen (Substantive oder identifizierende Substantivanweisungen); ( c) Compilen dieser Anweisungen und Informationen(Verwendung eines Zwischensprachencompilers) in eine zweite Zwischensprache (IL-2); (d) übersetzen der zweiten Zwischensprache (IL-2) in einen bestimmten Objektmaschinencode, der für eine bestimmte Art von Computersystemen geeignet ist.
Das in einer höheren Sprache, z.B.Cobol, vorliegende Ursprungsprogramm wird einem "Kleinprogramm"-Paket zugeführt, das als Ursprungssprachenübersetzer (SLT) bezeichnet wird, der das z.B. in Cobol geschriebene Ursprungsprogramm in eine erste Zwischensprache modifiziert bzw. übersetzt, die nunmehr von der Cobol-Ursprungssprache unabhängig ist. Wenn das Ursprungsprogramm in der unter der Bezeichnung Fortran bekannten Ursprungssprache vorliegt, wird es einem anderen spezialisierten "Kleinprogramm-Paket"-Ursprungssprachenübersetzer zugeführt, welcher es in die erste Zwischensprache umwandelt, usw. Auf dieser Stufe wird eine auch als Universalcompiler bezeichenbare Funktion dazu verwendet, mittels eines Softwareoder Firmware-Programms diese eben in der ersten Zwischensprache entwickelten Anweisungen in einen in einer zweiten Zwischensprache geschriebenen Satz von Programmanweisungen umzuwandeln, welcher genau das gleiche Programm beinhaltet, jedoch in der zweiten Zwischensprache. Der nächste Schritt ist die Anwendung der in der zweiten Zwischensprache vorhandenen Programmanweisungen auf einen Maschinencodeübersetzer, welcher ebenfalls ein "Kleinprogramm"-Paket ist, das dazu entwickelt wurde, die zweite Zwischensprache in den Objektmaschinencode einer be-
10.10.72
30981 6/0869
stimmten Computerart umzuwandeln. Jede Erstellung eines Computers erfordert einen speziellen Maschinencodeübersetzer, der innerhalb des betreffenden Systems anwendbar ist.
10.10.72
30981 6/0869
TXI
Mehrere Ausführungsformen der Erfindung und Einzelteile davon sind in den Zeichnungen dargestellt und werden im folgenden mit Bezug auf diese als Beispiele beschrieben. Es zeigen:
Fig. 1 ein Blockschaltbild der verschiedenen Stufen eines Computersystems mit einem universellen Compiler nach der Erfindung,
Fig. 2 ein Blockschaltbild einer besonderen Ausführungsform nach der Erfindung, bei welcher eine Anzahl von üblicherweise verwendeten Ursprungssprachen und eine beliebige Klasse von Computern sowie SprachUbersetzer vorgesehen sind, welch letztere die Verwendung dieser Anlage mit dem universellen Compiler ermöglichen,
Fig. 3 eine schematische Darstellung der aufeinanderfolgenden Schritte, die verwendet werden, um ein Ursprungsprogramm an einen speziellen Hostcomputer anzupassen ,
Fig. 4 ein Schemabild, welches zeigt, wie durch Elemente des Computersystems auf die verschiedenen Darlegungen des Ursprungsprogrammes eingewirkt wird,um dieses für die endgültige Verwendung des Hostcomputers in fortgeschrittene Stufen oder Zustände umzuformen,
Fig. 5 ein Blockschaltbild, welches die Struktur einer "ausführbaren" Anweisung im Format einer ersten Zwischensprache zeigt,
Figuren 6 und 7 als Beispiele dienende Baumschemas, welche die Informationshierarchien in einer neuen Metasprache darstellen,
Fig. 8 einen Organisationsplan, der angibt, wie
der Satz von Hauptinformationsstrukturen, genannt "groups",
diein Haupt-Untersätze unterteilt wird,/aufeinanderfolgend
weiter in kleinere Untersätze aufgeteilt worden,
3Ü98 16/0869
Fig. 9 einen Organisationsplan zur Darstellung, wie der Satz aller Informationsefcmente, e, in zwei Haupt-Untersätze aufgeteilt ist und diese Untersätze aufeinanderfolgend in kleinere Untersätze getrennt werden, so daß sich eine Hierarchie von in Gruppen zusammengefaßten Informationselementen ergibt,
Fig, 10 eine Darstellung über die Art der Anwendung der neuen Metasprache zur Spezifizierung einer Art von WENN- bzwe IF-Anweisungen, wobei eine Informationseinheit Ein in expandierter Form von Informationen mit aufeinanderfolgend niedrigeren Komplexitätsniveaus dargestellt ist, und
Figuren 11 bis 14 Blockschaltbilder verschiedener Konfigurationen von Computersystemen, welche den universellen Compiler aufweisene
Allgemeine Beschreibung
Die integrierte Bauweise (large scale integration = LSI) in der Halbleitertechnik hat weitreichende Auswirkungen auf die gesamte, Informationen verarbeitende Industrie« Das Vorhandensein von verhältnismäßig billigen und zuverlässigen Hardware-Bausteinen, welche komplexe logische Schaltungen enthalten, eröffnet die reale Möglichkeit der Entwicklung von noch leistungsfähigeren Computersystemen. Dem stehen auf der anderen Seite die immer weiter ansteigenden Kosten und die ansteigende Komplexität der Computer-Software entgegen, was hinsichtlich der Computersystemarchitektur und der Zusammenwirkung von Hardware und Software neue Lösungen erfordert«
Die Programmumwandlung benötigt häufiger mehr Computerzeit als die Ausführung des eigentlichen Programmes. Ein bedeutender Anteil der Computerleistung muß für die übersetzung von höheren Programmiersprachen in eine Maschinensprache aufgebracht werden. Die Compiler wurden von 10 bis 40 K-Wörtern für FORTRAN oder COBOL bis hinauf zu und über 195 K-Wörtern für eine Version von FORTRAN vergrößert. Stunden der
309816/0869
teuren Computerzeit werden durch den Compiler verbraucht. Andere Unwirtschaftlichkeiten werden außerdem durch zeitraubende Vorgänge, wie beispielsweise Compiler- und Programmfehler-Beseitigung und -wartung verursacht. Bei MuItiprogramra- und Timesharing-Systemen verursacht das Compilen merkliche System-Wartungskosten durch verstärkten Programmaustausch. Ferner benötigen die Computer infolge der Kernbedürfnisse der Compiler größere Hauptspeicher.
Allgemein ist zu sagen, daß die Compilerkosten eine exponentielIe Funktion der Größe der Compileraufgabe sind, weiche in eine integrierte Einheit eingeschlossen ist. Das weitere Wachsen der Komplexität einer Ursprungssprache ist infolge der größer werdenden Abmessungen und Kosten des Compilers bei Verwendung üblicher Compilertechniken ernsthaft beschränkt. Durch Aufteilung der Compileraufgaben in unabhängige, voneinander getrennte Module, weiche die Benutzer-Problemtransformationaufgabe von der Sprachsyntax und der semantischen Aufgabe trennt, können diese Beschränkungen verringert und die Compileraufgabe vereinfacht werden.
Typischerweise versuchen Compiler nicht, Sprachübersetzungsaufgaben von der Problemtransformation zu trennen, so daß konsequenterweise jegliche Änderungen entweder der Ursprungssprache oder des Maschinencodes Änderungen durch die ganze Compilation hindurch hervorrufen kann. Ursprungssprachen und Computer-Hardware sind einem ständigen Zustandef1uß unterworfen und als Ergebnis hiervon muß jedes Mal, wenn ein neuer Computer entworfen wird, für jede Ursprungssprache ein neuer Compiler geschrieben werden. Viel von dieser Arbeit könnte vermieden werden, wenn die Tatsache erkannt und vorteilhaft ausgenützt würde, daß Compileraufgaben in zwei unabhängige Klassifikationen getrennt werden können; Sprachübersetzung und Problemübersetzung. Indem man diese Aufgabengruppen im Compiler getrennt hält, kann die sich durch eine Änderung der Ursprungssprache oder der Computer-Hardware ergebende
309816/0869 I 0. OKI. 1972
Auswirkung auf den Sprachübersetzungsteil des Compilers begrenzt werden; Der die Problemlibersetzung des Benutzers betreffende Teil des Compilers braucht nicht geändert zu werden, da eine Änderung der Sprache, die zur Bestimmung des Problems dient, das Problem selbst nicht ändert.
Der gemäß der Erfindung angesprochene universelle Compiler beruht auf der eindeutigen Trennung von "Sprachübersetzung" (language translation) und "Problemübersetzung" (problem transformation). Wenn ein Ursprungsprogramm als Kombination eines Problemalgorithmus und der Darstellung jenes Algorithmus in einer Ursprungssprache definiert ist, dann besteht die Problemübersetzung in der kartenmäßigen Aufzeichnung des Problemalgorithmus von einem komplexen funktionsorientierten Format in ein einfacheres Betriebsablaufformat. Die Sprachübersetzung besteht in der Änderung des Formats der Aufzeichnung des Algorithmus. Dies wird dadurch bewirkt, daß die Ursprungssprache zunächst in eine Zwischensprache (IL) umgewandelt wird, welche von der Ursprungssprache unabhängig ist.
Dann wird das in der Zwischensprache vorliegende Problem aus einem Satz von Prozeduren und algebraischen Ausdrücken in eine Folge von Computeroperationen umgewandelt. Abschließend wird durch eine zweite Sprachübersetzung die obengenannte maschinenunabhängige Ausgabe in Operationdscodes für einen bestimmten Computer umgewandelt. Durch Festlegung des Compilers als drei unabhängige Moduls werden diese sich normalerweise durch eine Änderung ergebenden Auswirkungen weitgehend eingeschränkt. So beeinflußt eine Änderung in der Ursprungssprache lediglich den ersten Modul, den übersetzer der Ursprungssprache. In gleicher Weise hat das Einführen eines neuen Computers mit einem neuen Maschinencode-Instruktionssatz lediglich die Änderung oder den Ersatz des zweiten Sprachübersetzers zur Folge. In jedem Falle bleibt der
309 8 16/086 1 0. OhT.
Problemübersetzungsteil des Compilers und ein Sprachübersetzer unverändert. Wenn ein neuer Computer eingeführt wird, der eine neue Implementationssprache aufweist, so kann es sein, daß der Compiler in die neue Implementationssprache Übersetzt werden muß. Jedoch ist selbst diese Aufgabe bedeutend kleiner als die Obersetzung eines konventionellen Compilers,
Ein großer Teil des Compilers Hegt in einer Zwischensprache vor, welche sowohl von der Ursprungssprache als auch von dem speziellen, für die Programmausführung verwendeten Computer unabhängig 1st. Demzufolge kann es möglich sein, diesen Teil des Compilers in Hardware oder Firmware zu Implementieren, da er auf Änderungen im wesentlichen unempfindlich ist.
Zwischensprache
Um die Compileraufgaben in unabhängige Bausteine zu unterteilen und dabei die Komplexität zu verringern, wird die Problemübersetzung von der Sprachübersetzung getrennt. Hierbei ist es erforderlich, daßman das Problem 1n einer Sprache definieren kann, welche von der Ursprungssprache unabhängig 1st. Dies ist der Zweck der Verwendung einer Zwischensprache (intermeiiate language * IL). Hiermit 1st auch die Natur der IL definiert. Die IL-Sprache kann In zwei unabhängige Teile unterteilt werden: einen nichtausführbaren und einen ausführbaren Teil. Der nichtausfUhrbare Teil bestimmt im wesentlichen die Charakteristiken der Daten, während der ausführbare Teil die bei den Daten auszuführenden Funktionen festlegt.
Alle nichtausführbaren Ursprungsprogramminformationen werden dem universellen Compiler mittels Tabellen zugeführt, weiche im folgenden kollektiv als eine Symboltabelle bezeichnet werden. Jeder Bezeichner im Ursprungsprogramm nimmt ein Symbol-Tabellenwort ein. Verschiedene Attribute dieses Bezeichners werden während der Sprachübersetzung der Ursprungssprache in die entsprechenden Bitpositionen in diesem Wort
30981 6/0869 1 (I. UKl. 1.I72
codiert. Die "Bezeichner" sind Großbuchstaben, wie beispielsweise A, B, C oder X, Y, Z, welche den Gegenstand in einem bestimmten Algorithmus identifizieren. Beispiel: Bezahlung = gearbeitete Stunden mal Stundensatz oder C=A mal B. Hierbei sind also A, B, C, Bezahlung, gearbeitete Stunden und Stundensatz "Bezeichner".
Der ausführbare Teil definiert die erforderlichen Funktionen oder Operationen und die Folge, in welcher diese auszuführen sind. Die gleiche Funktion kann in jeder Ursprungssprache auf eine andere Art definiert werden. Jedoch ergibt das Erfordernis der Zwischensprache IL nur einen Weg hinsichtlich der Definierung einer bestimmten Funktion. Die Gesamtanzahl von in IL vorliegenden Zwischensprachen ist größer als die bei irgendeiner Ursprungssprache vorhandene Anzahl, da die verschiedenen Ursprungssprachen nicht alle den gleichen Satz von Funktionen umfassen. Des weiteren erfordert die IL einen größeren Satz von Operatoren als eine einzelne Ursprungssprache Bei der im Rahmen der Erfindung vorgeschlagenen praktischen Implementation ist der-IL-Eingang zu dem universellen Compiler so entworfen, daß er für COBOL, FORTRAN und PL/1 sprachunabhängig ist, so daß praktisch alle gegenwärtig geschriebenen höheren Programmiersprachen erfaßt werden. Wenn einmal dieses Konzept einer IL aufgestellt ist, kann es ausgedehnt werden, indem später mehr Funktionen und mehr Operatoren hinzugefügt · werden, ohne daß sich Komplikationen einstellen, wie sie durch solche Änderungen bei den bekannten Compilern auftreten. Tatsächlich kann das "Denken" einer Ursprungssprache in Terms von neuen Problemfunktionen eine große Hilfe bei der mehr methodischen Entwicklung einer leistungsfähigeren, einfach zu verwendenden, verallgemeinerten Ursprungssprache sein. Hinzu kommt, daß die Trennung von Datenattributen mit den Konzepten einer gemeinsamen Datenbasis kompatibel ist.
309816/0869
■·*·"■
2249352
Ursprungs sprächen-übersetzer
Zur Trennung der Problemübersetzungsaufgabe von der Sprachübersetzung muß das Problem in einer solchen Weise festgelegt werden, daß es von Ursprungssprachen unabhängig ist. Dies ist die Aufgabe des Ursprungssprachenübersetzers. Der Ursprungssprachenübersetzer (source language translator = SLT) befreit die Ursprungssprache von dem allgemeinen Wortüberfluß, der Wortmacherei und persönlichen Eigenarten. Für jede Ursprungssprache ist nur ein SLT erforderlich. Der Ursprungssprachenübersetzer erkennt Ursprungssprachen-Operatorcodes und Schlüsselwörter und übersetzt diese ebenso wie ausführbare Prozeduren und algebraische Ausdrücke in eine Zwischensprache (Format IL-I). Er setzt alle Namen und deklarierten Attribute der Daten und der Umgebung in die Symboltabelle, wobei die Namen (Operanden) in dem ausführbaren Programm durch Symboltabellenadressen ersetzt werden. Das IL-1-Eingangsformat für den Ausdruck kann abwechselnd aus Operanden und Operatoren bestehen. Wenn in einem in der Ursprungssprache vorhandenen Ausdruck zwischen zwei Operatoren kein Operand vorhanden ist, so liefert der Ursprungssprachenübersetzer SLT einen besonderen "Kein-Operandll-Code. Dies ist also eine Methode zur Vermeidung einer doppelten Sprachübersetzung innerhalb des universellen Compilers.
Ursprungssprachen mit einem vorangehenden Algorithmus, der von dem vorangehenden IL-Algorithmus abweicht, werden durch von dem SLT hinzugefügte runde Klammern übersetzt.
Universeller Compiler
Ein Problem-Übersetzungsmodul (Generalized Compiler, GC) wird dazu verwendet, die ausführbaren Prozeduren und Ausdrücke (welche in einem von der Ursprungssprache unabhängigen Standard-IL-1-Format vorliegen) von einer Problemform oder funktionsorientierten Form in eine Computeroperationsform umzuwandlen, die aus einer Folge von Maschinenniveau-Instruktionen
1 0 OKi Γ" 309816/0869
besteht, welche aufgrund von elementaren Variablen ausgeführt werden. Der universelle Compiler GC zeichnet die Folge von Operationen eines Ausdruckes entsprechend einem allgemein verwendeten Vorrangalgorithmus. Zusätzlich zu dem Ausdruck Processor-Programm enthält der GC auch Programme für die übersetzung von allen anderen ausführbaren Anweisungen. Entsprechende Codefolgen werden dazu erzeugt, um Steuerinformationen in Funktionen und Unterprogramme sowie zurück zu übertragen und um DO-Schleifenzustände zu prüfen sowie DO-Schleifenvariable zu erhöhen.
Maschinencodeübersetzer
Der Maschinencodeübersetzer (MCT) ist ein einfacher Sprachübersetzer, der dazu dient, die Ausgangsoperationscodes des GC in die Maschinencodes eines bestimmten Computers, zu übertragen. Er kombiniert Symboltabellen-Informationen und Maschinencodegerüste mit den Ausgangsdreiklängen (Operand-Operator-Operand) des GC.
Systemorgani sati on
Fig. 1 zeigt die Systemorganisation, bei welcher das in einer höheren Sprache, zum Beispiel Fortran, Cobol u.s.w. vorliegende Ursprungsprogramm von einem Ursprungssprachübersetzer 10 (SLT) verarbeitet wird, der ausführbare Anweisungen von nicht ausführbaren Informationen trennt und sie in eine erste Zwischensprache (IL-I) umwandelt. Die Daten von dem SLT 10 (Source Language Translator) werden dann von einem universellen Compiler 11 (GC) behandelt, welcher die Informationen in eine zweite Zwischensprache (IL-2). umwandelt, welche ihrerseits dann von einem MCT 14 verarbeitet wird, um di« Programminformationen in einen speziellen Objektmaschinencode für den Host-Computer umzuwandeln.
Der universelle Compiler (GC) 11 versieht die Funktion "Problemübersetzung" mit einem Problemübersetzungsprogramm 12 und die Funktion von "Symbolübersetzung" mit einer Symbol-
tabel Ie 13. ****>»„
30961 6/0869
1 0. OKI. 1977
Fig. 2 zeigt ein spezielleres System, bei welchem jede einzelne höhere Ursprungssprache, zum Beispiel C, F oder A von einem besonderen Ursprungssprachlibersetzer 10c, 1Of, 10a u.s.w. verarbeitet wird, um Informationen in IL-I umzuwandeln. Dann liefert der GC 11 die Programminformationen in IL-2, wodruch die Maschinencodeübersetzer als 14 1t oder
ml'
14m2, oder 14m3 definiert werden, abhängig von der Art des Host-Computers.
Ursprungs sprachen-Übersetzeraufgaben
Die vier grundsätzlichen Aufgaben des Ursprungssprachenübersetzers sind:
1) Identifizierung aller Ursprungssprachen-Symbole,
2) Erstellen einer Symboltabelle mit allen Datenatributen,
3) übersetzen aller ausführbaren Ursprungssprachen-Anweisungen in eine Zwischensprache, und
4) Feststellen von Ursprungssprachen-Syntaxfehlern. Alle Ursprungssprachen-Symbole müssen erkannt werden.
Der Ursprungssprachen-Charaktersatz wird durch eine entsprechende übersetzung an das IL-Codeformat angepaßt. Jeder Begrenzer (Symbol, welches "Trennung" von Informationsposten für Steuerzwecke mitteilt) wird durch seinen äquivalenten IL-Code ersetzt. Jeder Bezeichner wird der Symboltabelle hinzugefügt, falls er nicht bereits aufgeführt ist. In jedem Falle wird jeder Bezeichner bei allen ausführbaren Anweisungen durch seine Symboltabellenadresse ersetzt.
Fig. 3 zeigt in Form der aufeinanderfolgenden Verfahrensschritte die Programmzustände (a),(b),(c) und (d), bei welchen das in einer höheren Sprache vorliegende Ursrpungsprogramm in eine erste Zwischensprache umgewandelt wird, dann in eine zweite Zwischensprache und schließlich dieses Ursprungsprogramm im Objektmaschinencode vorliegt, in welchem es auf dem Host-Computer verarbeitet werden kann.
Fig. 4 zeigt die Auftreffpunkte von: das SLT-IO-Programm auf das Ursprungsprogramm (a), um es in den Zustand (b) umzuwandeln ; das GC 11-Programm,welches das Ursprungsprogramm vom Zustand (b) der ersten Zwischensprache in den Zustand (c) der zweiten Zwischensprache umwandelt; das MCT 14-1 D. MT ?-?7? 309816/0869
Programm, welches das im Zustand (c) vorhandene Ursprungsprogramm von der im Zustand (d) vorhanden, zweiten Zwischenpsrache in den Objektmaschinencode umwandelt.
Symbole in einer Ursprungssprache können derart kategorisiert werden, daß sie die in der folgenden Tabelle aufgeführten Symbole enthalten.
(A) Begrenzer
1. Operator
a. Primitive (+, -, +, .GE., etc.)
b. Schlüsselwort ausführbarer Befehl (DO, GO TO, MOVE, etc.)
2. Punktuation (Trennung, Steuerung)
(B) Bezeichner
1. Schlüsselwort: Programm-Struktur-Name (Prozedur, Block, Division, Abschnitt, etc.)
2. Anweisungsnummer
3. Variable (enthaltent Constante, Literais)
4. Funktion
5. Index
6. Argument .
7. Ausdruck
(C) Bemerkung
(D) Ungültiges Symbol oder Schlüsselwort
Alle die Daten erklärenden und die Umgebung beschreibenden Informationen werden in Tabelle 13 aufgeführt. Bemerkungen werden gestrichen. Die Symboltabelle nimmt den Platz nicht ausführbarer Anweisungen ein, wenn das Ursprungsprogramm in der Zwischensprache vorliegt.
Jede ausführbare Ursprungssprachen-Anweisung wird in eine Zwischensprache umgewandelt. Wesetnlich ist, daß dieser Vorgang das Eliminieren von überflüssigen Worten und Bezeichnungen sowie persönlichen Eigenarten und das Neuordnen der Information in einem sprachenunabhängigen Format beinhaltet. .Schlüsselwörter werden durch den äquivalenten IL-Code ersetzt, welcher stets als das erste Wort einer Anweisung erscheint. Argumente und Parameter erscheinen in einer bestimmten Reihenfolge getrennt von Komas oder irgendwelchen anderen
H. 0KU972 309816/0869
Begrenzern, jedoch ohne die Speicher- und Lesehilfen, die man in Ursprungssprachen findet.
Ein "Ausdruck-Ende"-Code wird an das Ende eines jeden Anwedsungs-Funktionsausdruckes hinzugefügt und der Name des Ausdruckes wird in einem bestimmten Bereich in der Symboltabelle 13 gespeichert, so daß die Symboltabellenadresse, welche den im Ursprungsprogramm vorhandenen Namen ersetzt, als ein Ausdrucksname identifizierbar ist. Anweisungsfunktionen (FORTRAN) und ähnliche Ursprungsspracheninstrumente spezifizieren die Lösung einer Gleichung jedesmal dann, wenn der Name des Ausdruckes erscheint.
Der IL-Code "kein Operand" wird zwischen jedes Paar von Operatoren in dem Ursprungsprogramm eingesetzt, welche nicht durch einen Operanden voneinander getrennt sind, wie dies zur Vermeidung einerDuplizierung der Syntaxerkennung im universellen Compiler erforderlich ist.
Die in die Zwischensprache übersetzten Ursprungssprachenanweisungen werden fortlaufend numeriert. Ungültige Zeichen werden notiert und in Leerstellen umgewandelt. Fehlerprogramme werden für ungültige Schlüsselwörter und für andere Syntaxfehler aufgerufen. Runde Klammern werden jeweils dort hinzugefügt, wo sie zur Umwandlung von in der Ursprungssprache vorhandenen Vorrangigkeiten in die Vorrangigkeitsvereinbarungen der Zwischensprache erforderlich sind, falls eine Differenz besteht.
Ursprungssprachen-Syntaxfehler, wie beispielsweise illegale Zeichen, Begrenzer, Schlüsselwörter und Bezeichner (Identifizierung) werden ermittelt.
An dieses Computersystem können alle bekannten Techniken zur Erkennung und übertragung von Ursprungssprachen angepaßt werden. Syntax-ausgerichtete Compilung und tabellengetriebene Compilung sind die gegenwärtig am häufigsten verwendeten Techniken. Die Charakteristiken des erfindungsgemäßen Systems sind:
1. Die Obersetzung ist viel einfacher, da die übersetzung in eine andere höhere Sprache vorgenommen wird, anstatt in einen Maschinencode,
3 0 9816/0869
2. Das Auftreten einer Änderung in der Ursprungssprache ist auf einen kleinen Teil des Compilersystems begrenzt und beeinflußt nicht das gesamte Computersystem.·
Problemübersetzungsaufgaben
Die grundsätzlichen Aufgaben des Problemübersetzungsmodul 12 sind:
1) übersetzen von Problemfunktionen in Computeroperationsfolgen ,
2) Optimierung des erzeugten Objektcodes, und
3) Fehlerermittlung.
Die ausführbaren Anweisungen werden vom niveauhöheren, funktionsorientierten Format in einen Computer-Hardware operationsorientierten Code umgewandelt und/wird durch Neuordnung die Folge, in welcher die Operationen entsprechend den Operator-Vorrangigkeitsregeln einer Zwischensprache auftreten, als Teil des Systems aufgestellt. Die Zwischensprache verhalt sich derart, daß
(a) das Schlüsselwort in jeder Anweisung die Problemübersetzung-Steuerung auf das zur übersetzung dieser Anweisung erforderliche Programm richtet. Bei vielen Anweisungen kann eine Qirektüöepsetzung vorgenommen werden, indem ein Codegerüst und Ersatzargumente von der Anweisung für Scheinvariable verwendet werden.
(b) Zur übertragung von Ausdrücken innerhalb der Anweisung ein AusdruckUbersetzer (Expression Processor) verwendet wird. Dieser übersetzer verwendet einen oder mehrere Kellerungsstapel (Push-Down-Stack), um dadurch die Neuordnung der Ausdrücke entsprechend der aufgestellten Vorrangigkeitskri terien zu unterstützen. Jedesmal, wenn
ein Triad (zwei Operanden und ein Operator) mit einem Operator geringerer Vorrangigkeit zusammentrifft, wird dem Ausdruck ein Triad als IL-Ausgangscode entnommen. Das Triad ( Dreierausdruck)
wird in dem Ausdruck durch die -Symboltabellen-309816/0869
adresse ersetzt, welcher festlegt, wo die Triad-Ausgangscodeoperation gespeichert werden soll.
Der Objektcode wird dadurch optimiert, daß beispielsweise vermieden wird, daß die Lösung des gleichen Ausdruckes wiederholt ausgeführt wird, sofern die Werte sich in der Zwischenzeit nicht geändert haben. Die Anweisung der Indexregister, die Adressenberechnung zu beschleunigen, ist eine andere Optimierungstechnik. Falls die Anzahl der Register begrenzt ist, wird durch die Optimierung festgelegt, daß die innerste Schleife einer DO-Schleife Vorrang erhält vor den äußeren Schleifen. Konflikte können auch zwischen lokaler und globaler Optimierung auftreten.
Die Fehlerermittlung enthält das Feststellen von illegalen Folgen von Operanden und Operatoren, welche der Ausdrucksübersetzer ermittelt. Außerdem ermitteln die verschiedenen SchlüsselwortrAnweisungsprogramme fehlende Argumente, für welche keine Alternativen spezifiziert und ii keine Ergänzungswerte vorgesehen sind.
Aufgaben des zweiten Sprachübersetzers
Die grundsätzlichen Aufgaben des zweiten Sprachübersetzers sind:
1) übersetzen des Problemtransformations-Ausganges (Triads) in den Maschinencode für eine bestimmte Maschine unter Verwendung von Codegerüsten und Symboltabellen-Informationen. Dies wird in Fig. durch Maschinencodeübersetzer 14 ausgeführt.
2) Entscheiden der Datentypedominanz für Operationen bei Operanden von zwei verschiedenen Datentypen. Erzeugen eines zur Umwandlung der Datentype erforderlichen Codes.
3) Zuordnen der Speicherstellen an alle Objektcodebezeichner in der SymboltabelIe.Ersetzen der Symboltabellenadressen dieser Bezeichner durch die zugeordneten Speicherstellen.
Der Zweck des zweiten Sprachübersetzers ist es, die maschinenniveauaufweisenden ,maschinenunabhängigen Problemtransformations-Ausgangstriads und andere maschinenunabhängige
30981 6/0869
Instruktionen in Instruktionen (Primitiv-Code) für eine bestimmte Maschine umzuwandeln. Der wichtige zu beachtende Punkt ist, daß die einzige notwendige Einwirkung auf einen Compiler entsprechend einer Maschinencode-Änderung durch eine Sprachübersetzung gegeben ist. Demzufolge sollte der Compiler so ausgebildet sein, daß die jeweils nicht von der Erzeugung des Maschinencodes betroffenen Teile des Compilers von den besonderen Eigenschaften einer speziellen Maschine unabhängig sind. Dadurch wird sichergestellt, daß die sich bei einer Änderung auf eine neue Maschine auswirkenden Folgen strikt auf die den Code ergebenden Gerüste beschränkt sind. Es ist die Aufgabe des Codegenerators, den Objektcode bereitzustellen, der zur Ausführung der Prograjnminstruktionen auf einem bestimmten Computer erforderlich s4ml. Dazu verwendet der Codegenerator in Kombination die am Ausgang des Problemtransformationsmoduls, Ausdruckübersetzers und in den Symboltabellen vorhandenen Informationen und die Codegerüste.
Die Auswahl des betreffenden Codegerüstes hängt nicht nur von der betreffenden Maschineninstruktion 9 wie sie durch den Operator gegeben ist (Symbole zur Darstellung der "Aktion"-, die von den Bezeichnern oder Operanden auszuführen sind)8 sondern auch von den Attributen der betroffenen Daten ab. Die Attribute der Daten sind für jeden Operanden jeweils "in der Symboltabelle an der Adresse spezifiziert.bzw. enthalten» welche den Wert des Operanden darstellt« Jedes Symboltabellen-Attributfeid kann als Teil einer Mikroprogramm-Instruktion angesehen werden, welche die Folge der Maschineninstruktionen festlegt, die für eine bestimmte Kombination von Attributen erforderlich sind.
Jede Datentype hat bei den Operationen von zwei Operanden ein vorbestimmtes Dominazverhältniss. So müssen als Beispiel bei einem Multiplikationsvorgang, bei welchem eine Festpunkt-Zahl und eine Gleitkomazahl auftritt, Maschinencodeinstruktionen vorgesehen sein, um die Datentype einer der Zahlen entsprechend umzuwandeln, bevor die Multiplikations-
30ββ16/0869
Instruktion ausgeführt werden kann. In diesem Falle dominiert das Gleitkomma vor dem Festpunkt bzw. Festkomma und demzufolge wird die Festkomma-Zahl in eine Gleitkomma-Zahl umgewandelt. Nach der Multiplikation muß das Ergebnis wiederum in der Weise umgewandelt werden, daß es der Type entspricht, welche für die Antwort vorgesehen ist.
Die abschließende Aufgabe des zweiten Sprachübersetzers besteht darin, jede Symboltabellenadresse in dem Objektcode durch die Speicheradresse zu ersetzen, die ihr zugeordnet und in der Symboltabelle aufgeführt ist« Diese Aufgabe wird erledigt, nachdem das Programm in dem Maschinencode für einen bestimmten Ziel-Computer vorliegt, sofern es möglich ist, daß die Obersetzung in einen bestimmten Maschinencode nicht eins-zu-eins ausgeführt werden kann. Falls nach der Speicherzuordnung die Einfügung einer zusätzlichen Instruktion erforderlich wird, so muß jeder Bezug auf eine der Adressen, welche über den Punkt der Einfügung hinausgeht, lokalisiert und geändert werden. Eine solche Aufgabe wäre aber viel zu kompliziert, um noch als praktikabel angesehen werden zu können.
Beschreibung der Zwischensprachen (IL)
Funktionelle Organisation: die Funktion von IL 1st es, die Anschlußstellen des Benutzerprogramms mit dem universellen Compiler zu beschreiben. Es weist Formate auf, welche sowohl von der Ursprungssprache als auch vom Computer unabhängig sind, auf weichen das Benutzerprogramm ausgeführt wird. Die Anweisungen von Benutzerprogrammen fallen in zwei Kategorien:
1) nicht ausführbare Information und
2) ausführbare Anweisungen.
Nicht ausführbare Anweisungen werden verwendet fur sich nicht ändernde Informationen, wie beispielsweise Datenattribute, Dateiattribute, Speicherzuordnungen und Steuerinformationen. Bei der IL ist diese Information in Form einer Symboltabelle vorhanden«
Ausführbare Anweisungen beschreiben die aufgrund der Ursprungsdaten während des Progrimmabiaufes auszuführenden Aktionen, um dadurch die Lösung des Anwenderproblems zu erhalten.
309816/0869
Ausführbare Anweisungen werden in dem universellen Compiler vom Format einer höheren9 funktionsorientierten Sprache, IL-I, in ein Maschinenniveau aufweisendesB operationsorientiertes Format IL-2, umgewandelt.
Nichtausführbare Informationen:
Vor Beginn der Problemtransfemation muß die Information von nichtausführbaren Anweisungen in Symboleingaben durch den SLT 10 von Fig. 1 übersetzt werden«, Zusätzlich muß jeder bei einer ausführbaren Anweisung auftretende Bezeichner in die Symboltabelle eingetragen werden. Demzufolge enthält die Symboltabelle 13 die Namen aller Bezeichner in dem Ursprungsprogramm und die Attribute, die festgelegt wurden.
Die Attribute werden in der Symboltabelle in Felder gruppiert. Jedes Attribut innerhalb einer Gruppe kann dadurch spezifiziert werden, daß in dem betreffenden Feld der zugehörige Code plaziert wird. Falls in das Feld kein Code plaziert wurde, wird ein Ergänzungscode verwendet,, Die durch den Compiler zugeordneten Ergänzungscodes werden bereits vor Beginn der Sprachübersetzung in die Symboltabelle aufgenommen«, Der Pro·» grammierer kann in dem Programm seine eigene Wahl an Ergänzungsattributen treffen.
Zusätzlich zu Datenattributen enthalten nichtausführbare Informationen in dem Ursprungsprogramm auch Namen und Größen von Gruppen, relative Speicherstellen von Bezeichnern (COMMON und EQUIVALENCE), Formate von Daten in externen Karteien, Editionsspezifikationen, Informationen über die Hierarchiestruktur von Daten, externe Namen, Anweisungs-Funktionsnamen, Eingangsnamen, Funktions- und Bücherei programme und Kommunikationen mit dem operierenden System und Compiler«, Alle diese Informationen werden durch den (SLT) Ursprungssprachenübersetzer 10 in die Symboltabelle 13 gebracht.
309816/0869
Während der Problemtransformation werden zusätzliche Namen und Fakten der Symboltabelle hinzugefügt. Die der Speicherung von Zwischenergebnissen zugeordneten Namen werden ebenfalls beigefügt. Zusätzlich können Aufzeichnungen der gegenwärtigen Zeitperiode aufgenommen werden, bei welcher jedes Zwischenergebnis in dem Programm errechnet wurde, ohne eine sich anschließende Änderung einer der für die Berechnung verwendeten Variablen.
Die Symboltabelle wird von dem Maschinencode-Öbersetzermodul 14 (MCT) in Verbindung mit Codegerüsten zur Erzeugung von Maschineninstruktionen verwendet. Die jeweils gewählte Folge von Maschinenspracheninstruktionen hängt nicht nur von dem betreffenden Operator ab, sondern auch von den Attributen der Operanden. Während dieser Zeit sind alle in dem Benutzerprogramm vorhandenen Operanden Symboltabelleadressen, wodurch es einfach ist, die Attribute herauszufinden,
Der MCT 14 (Maschinencodeübersetzer) ordnet jedem Operanden in der Symboltabelle die Speicherstellen zu. Diese Adressen können entweder absolut oder relativ sein. Relativadressierung wird insbesondere bei Multiprogrammsystemen dazu verwendet, dem operierenden System zu gestatten, die tatsächlich zu verwendende Speicherstelle zuzuordnen.
Ausführbare Anweisungen
Zu Beginn der Problemtransformation bzw. Problem-Übersetzung befinden sich die ausführbaren Anweisungen im Format IL-I und bestehen aus einem Schlüsselwort, dem Argumente folgen, denen ein EOE-Code (end of expression) nachgeordnet ist. Argumente können Elemente oder Ausdrücke sein. Ausdrücke bestehen aus einer Folge von Operand-Operator-Paaren. Operanden sind Symboltabellenadressen entweder von Elementen oder Ausdrucken.
Ausdrücke können Ausdrücke enthalten, die für jedes Schachtelungsniveau innerhalb der Grenzen des
309816/0869
Ausdruckübersetzer-Kellerungsstapels Ausdrücke enthalten. Jeder Ausdruck wird mit einem EOE-Code (end of expression) abgeschlossen, welcher den Stapel um eine Stufe hochschnellen läßt. Der EOE-Code des Arguments befindet sich auf der ersten Stufe bzw. beim ersten Niveau und bewirkt eine Rückkehr der Steuerung von dem Ausdruckübersetzer zu dem Programms das durch das Schlüsselwort der gerade verarbeiteten Anweisung spezifiziert wird. Der Ausdrucksübersetzer bringt auch die Symboltabellenadresse des dem Ausdruck zugeordneten Namens wieder zurück. Der Name ist die Adresse9 bei welcher der Wert des Ausdruckes gespeichert ist» Die Namen von Ausdrücken werden in einem speziellen Feld der Symboltabelle gespeichert, so daß der Compiler innerhalb von Ausdrucken Ausdrücke erkennen kann, indem er die Werte der Operanden anschaut» weiche alle Symboltabellenadressen sind.
Während der Problemtransformatiofii wird jede ausführbare Anweisung in eine Folge von einfachen Instruktionen umgewandelt, welche entweder aus einem Infix-Operator und zwei Operanden oder einem Prefix-Operator und einem Operanden besteht*.
Das Schlüsselwort bestimmt das für die Transformation zu verwendende Programm. Die Position des Arguments in der Folge von Argumenten legt fest8 wie es vom Compiler umgewandelt bzw. verwendet wird. Allgemein ist zu sagen«, daß die Argumente von dem Ausdruck-Übersetzer bzw» Expression Processor verarbeitet werden, welcher die Folge von Maschineninstruktionen erzeugt, die zur Berechnung des Wertes des Arguments erforderlich sind. Die Adresse dieses Wertes wird mit dem Codegerüst für die zu verarbeitende Anweisung kombiniert. Das Codegerüst für eine ausführbare Anweisung ist eine Folge von Instruktionen auf Maschinenniveau (Triads entsprechend dem Ausgang des Ausdruckübersetzers), wobei bestimmte Stellen innerhalb dieser Folge dem Wert eines jeden Arguments zugeordnet sind. Der Problemtransformationsmodul enthält für jede ausführbare Anweisung ein Codegerüst. Diese Codegerüste sind maschinenunabhängig und können nicht mit Codegerüsten verwechselt werden,
309816/0869
die von dem Codegenerator zur Erzeugung eines Maschinencodes für eine bestimmte Maschine verwendet werden. Einige ausführbare Anweisungscompilerprogramme stellen für die Zuordnung von Indexregistern und Analyse einen größeren Teil des Programmes zur möglichen Optimierung bereit. Der Ausdrucksübersetzer optimiert auf dem niedrigen Niveau des Suchens nach Duplikattriads, welche eliminiert werden können. Die Symboltabelle wird zur Speicherung von Informationen verwendet, die zur Optimierung von beispielsweise der letzten Stelle in einem Programm benötigt werden, bei welcher sich der Wert einer Variablen ändert.
Konzeptmäßig ist der sich durch die Problemtransformation ergebende IL-2-Code maschinenunabhängig. Die Sprachtransformation auf eine bestimmte Maschine wird durch den der zweiten Sprache zugeordneten Sprachübersetzer ausgeführt, bei dem Beispiel in Fig. 1 also durch den MCT 14-Obersetzer. Der Zweck dieses Konzepts besteht in der Begrenzung der sich durch eine Änderung im Objektcomputer ergebenden Auswirkungen (des Computers, auf welchem das umgewandelte Programm ausgeführt werden wird). Dieses Konzept erfordert, daß der Problemtransformationsausgang zu dem Codegenerator definiert und festgelegt wird als ein Satz von Maschinenoperationen, welche von jeder beliebigen Klasse von Maschinen durch eine Folge von den Maschinen eigenen Maschineninstruktionen oder Mikroprogramm-Instruktionen ausgeführt werden können.
Implementation von IL-nichtausführbaren Informationen
Die Implementation dieses universellen Compilers (Generalized Compiler) kann gegenwärtige Compilerunterprogramme- und -techniken bis zu dem Ausmaß verwenden, das möglich ist» ohne daß man als Kompromiß die Sprachübersetzung von der Problemtransformation trennen muß. Das IL-Format für nichtausführbare Informationen ist eine Symboltabelle,
10.10.1972
309816/0869
wie sie als Beispiel in Fig. 13 dargestellt ist. Diese Symboltabelle kann eine übliche Symboltabelle sein. Jedoch sind mehr Felder als für die Symboltabelle irgendeiner Sprache erforderlich, da nicht alle Sprachen den gleichen Satz von nichtausführbaren Informationen haben. Beispielsweise verwendet COBOL und PL/1 Niveaunummern bzw. Stufennummern, nicht aber
Die im folgenden aufgeführte Tabelle 2 zeigt eine Liste der in die Symboltabelle aufzunehmenden Informationen. Die Liste kann während des Schreibens des Compilers überprüft und verfeinert werden. Es gibt etwas einen Einblick in die Größe und Grenzen der Aufgabe. Es wird geschätzt, daß ein durchschnittliches Programm fünf- bis sechshundert Anweisungen und ungefähr zweitausend Bezeichner (Identifizierer) aufweist.
Tabelle 2
Symbol-Tabellenfelder
Gruppe
1. Ausdruck
Feldinhalte
All gemein Type
Compiler-Anmerkung
Gruppe
Bezeichnername (Identifiziername) Startadresse des Ausdrucks Komponentenstrang Anweisungsfunktion Externe Funktion Argument Triad
Letzte Stelle im Programm, bei welcher der Wert des Ausdruckes berechnet wurde
2. Variable Feldinhalte
Al lgemein 10.10.1972
Bezeichnername
Stufen- bzw. Niveau-Nr.
309816/0869
Gruppe
Feldinhalte
Al!gemein Klasse
Type
Spei ehe rzuordnungs Information
Vorzeichen Complement (-Unary) Sicherung Lesen/Schreiben Verkettung mit zusätzlichen Informationen Definitionsumfang im Programm
Skaiar
Elementar
Kennsatz bzw. Marke Gruppenname
Argument
Temporary (Compiler-Verwendung) Zeiger (links oder rechts)
Matrix
Struktur
Vorwärts verkettete Liste Doppelt verkettete Liste
Baum
Verzwei gung Strang bzw. Kette Syηtax-Typenmarke Dezimal/Binär
Fest-/Gleitpunkt Real/Complex Ari thmetik
Logisch
Vergleichsweise Condi tion
Status
Subscriptionsname
Linksbündig/Rechtsbündig
Länge (Präzision) Länge-Bruchteil
Größe in jeder Dimension
Strukturgröße Synchronisiert
10.10.1972 309816/0869
Gruppe
FeIdinhalte
Spei cherzuordnungs· Information
Compiler-Bemerkungen
Gruppe
Abhängig von vorhergehendem Feld bzw,Posten
Offset von Beginn der Struktur Gepackt
Füllfeld
Gemeinsam Equivalenz Anfangswerte
Anfang adressenzugeordneter Speicher
Speicherraum erforderlich
Definiert an der Speicherstelle Verwendet an der Speicherstelle Verknüpft mit der nächsten gleichen Type oder Stufe Verknüpft mit der letzten gleichen Type oder Stufe Wert an der Speicherstelle geändert
3. Verknüpfung Feldinhalte
Allgemein
Type
Gruppe Bezeichnername Relative Adresse im Programm Verknüpfung mit zusätzlichen Argumenten Liste von Formalparametern Zurück
Eintritt
Extern -
Funktion
Unterprogramm
4, Inhalte, Literais, Zeichen/Bit Keinen bzw« KetfeW
Feldinhalte
Allgemein
(T. 1972
Beze.ichnerwert Zugeordnete Adresse 309816/0869
Gruppe FeIdinhalte
Al 1 gerne in Type
Gruppe Länge
Teil eines Längenabschnitts
Konstante (Numerisch Literal) Zeichenreihe Bitreihe
5. Programm-Strukturmerkroal FeIdinhalte
Al!gemein
Type
Gruppe
Bezeichnername oder -nummer ProgrammstelIe (Relativ) Anfang und Ende
Anweisungs-Folgenummer Definiert Verwendet
Schachtelungsstufe Nummer/Name
Anweisung Absatz Abschnitt Division
Do-Ende-Gruppe Beginn-Ende Gruppe
Prozedur
6. I/0-Format Feldinhalte
Allgemein Bezeichnername oder -nummer Zugeordnete Adresse Externes Format (Maske) Aufzeichnungsgröße Blockgröße Einheit zugeordnet
309816/0869
Einheit
Gruppe
35-
Format
Maske
Oberschrift I/O-Steuerung Datensteuerung Puffersteuerung Bandeinheit Kartenleser
Lochung
Drucker
Konsole
CRT
Disk
7. AITgemeinregister Feldinhalte
Allgemein Symbolname
Register zugeordnet Startadresse Befreit bei Adresse
Type Kellerungsstapel
Zeiger Index Basisregister
In der Symboltabelle sind die Bezeichner in Gruppen eingeteilt, entsprechend den Typen von Informationsfeldern, die für den Bezeichner benötigt werden. Die Gruppen sind:
1. Ausdrucksname (Anweisungsfunktion, Triad,Argument)
2. Variabler Name
3. Verknüpfung -
Eintritt, Extern, Funktion, Unterprogramm
4. Konstante, Literal, Zeichenreihe, Bitreihe
5. Programmstrukturmarke
6. I/0-Format
7. Registeranwendung
309816/0869
22A9852
!!■.-Implementation - Ausführbare Anweisungen
Basisstruktur: Der Ursprungssprachenübersetzer 10 übersetzt alle ausführbaren Anweisungen des zu übersetzenden Programmes in IL-I, welche das höherstufige Sprachformat des Einganges zu dem Problemtransformationsmodul ist. Der Ausgang des Problem-Transformationsmoduls ist eine Maschinenstufe-Zwischensprache, genannt IL-2.
In dem IL-tFormat bestehen die ausführbaren Anweisungen aus Schlüsselwörtern und Argumenten. Argumente können entweder einfache Posten oder Ausdrücke sein. Ausdrücke sind Folgen von Operand-Operator-Paaren. Operanden können entweder einfache Posten oder Ausdrücke sein. Fig. 5 zeigt die Struktur von ausführbaren Anweisungen in dem ersten Zwischensprachenformat, IL-I.
Das allgemeine Format ist: Schlüsselwort [Argument EDE) .,
Wo:
Argument = Element/Ausdruck Element = Symboltabellenadresse eines
einzelnen .Postens
Ausdruck = ioperand Operator} .... EOE Operand = Symboltabellenadresse eines
Elements oder eines Ausdrucks Operator = Code für die bei den bezogenen
Operanden auszuführende Aktion EOE - Code für "Ende des Ausdrucks"
Schlüsselwörter: Jede ausführbare Anweisung in IL-I weist als erstes Wort ein Schlüsselwort auf. Das Schlüsselwort bestimmt die Speicherstelle des Compilerprograrcimes, welches zur Verarbeitung der folgenden Argumente verwendet wird. In der IL-I befindet sich jeweils ein Schlüsselwort für jede Ursprungsprogramtnfunktion, für welche die Fähigkeit einer Compiling erforderlich ist. Es ist jeweils nur ein Programm (Routine) in der G.C. für irgendeine der Funktionen erforderlich, obwohl
3098 1 6/0869
jede Ursprungssprache die Funktion in anderer WeIse festlegen kann.
So wird beispielsweise durch die COBOL-Armeisung "add A to B giving C".und durch die FORTRAN-Anweisung tsC * -A + B" jeweils die gleiche Funktion definiert» nämlich die Zuweisungsfunktioh. Demzufolge kann ungeachtet der Art und Meise» wie die Funktion ursprünglich festgelegt wurde9 das gleiche Programm diese Aufgabe verarbeiten9 nachdem es einmal in das Standard G.C.-Eingangsformat, IL-I9 übersetzt wurde. Tabelle 3 zeigt eine Liste von Schlüsselwörtern in IL-I9 der ersten Zwischensprache.
Tabelle 3
IL-Schlüsselwörter (höhere Stufe IL)
IL-Schlüsselwort . Zusätzliche Ursprungssprachen1=
Schlüsselwörtern welche in das ' IL-Schlüsselwort und .seine Argumente übertragen sind
Speichersteuerung ooen
ALLOCATE REPLY8 EVENT
FREE
Operator-Instrukti SNAPD SYSTEM
DISPLAY
Zustände
ON
SIGNAL WAIT
REVERT END, RUN
Programmsteuerung
DELAY
STOP
EXIT '
1/0 ,-Befehle
OPEN FILE, DIRECT, SEQUENTIAL,
BUFFERED, UNBUFFERED, STREAM
303816/0 869
1/0 -Befehle (Fortsetzung)
OPEN (Fortsetzung)
CLOSE UNLOCK LOCATE
GET
UPDATE PUT
GENERATE RECORD, INPUT, OUTPUT, KEYED, EXLUSIVE, BACKWARDS, TITLE, PRINT, LINESIZE, PAGESIZE.
LOCK, REWIND
FILE, SET, KEYFROM, FIND, REWIND BACKSPACE.
READ, FILE, INTO, SET, IGNORE, KEY, KEYTO, COPY, SKIP, LIST, EVENT, NOLOCK, NAMELIST, ADVACING, REWIND, RECORD, INVALID, FILE, KEY, EVENT, DELETE, REWRITE FROM.
WRITE, FILE, PAGE, SKIP, LINE, DATA, EDIT, LIST, FROM, KEYFROM, EVENT, ADVANCING, PUNCH, PRINT.
INITIATE, TERMINATE, REPORT.
Problemausführung ASSIGMENT
DO
GO TO ALTER IF
MOVE EXAMINE (Element, Anordnung, Struktur) COMPUTE, ADD, SUBT., MULT., DIV., BY NAME, ROUNDED, ON SIZE ERROR, GIVING, INTO FROM, CORRESPONDING.
WHILE, TO, BY, PERFORM, UNTIL, TIMES, THRU, VARYNG, FROM, AFTER, FOR, DEPENDING ON
TO PROCEED TO, ASSIGN.
THEN, ELSE, IS NOT, NUMERINC, ALPHABETIC, POSITIVE, ZERO, NEGATIVE, NEXT SENTENCE GET, PUT, CORRESPONDING.
REPLACING, TALLYING, ALL, LEADING, UNTIL, FIRST.
309816/0869
Problemausführung (Fortsetzung)
TRANSFORM CHARACTERS, FROM0 TO,
CONCATENATE SEPARATE CONTINUE
CALL TASK, EVEMT, PRIORITY, ENTER9 LINKAGE
RETURN
Operatoren; Um die Spezifikation zu treffen, dag IL-I eine unabhängige Ursprungssprache sei, muß die IL alle Funktionen beschreiben, die mit irgend einer der Ursprungssprachen beschrieben werden können,, die vonpraktischem Interesse sind. Eine solche Aufgabe kann hoffnungslos Schwierig sein und einen übermäßig großen Compiler zur Folge haben, wenn jede Ursprungssprachen-Eigenschaft von jeder Sprache als getrennte Funktion behandelt wird. Es ist also wichtigs die Eigenschaften der Ursprungssprachen zu analysieren^ um festzustellen, welche Funktionen tatsächlich von Bedeutung sind.
Die meisten Elementarfunktionen beinhalten bei Operanden auszuführende Elementaroperationen«, Diese Aktionen werden durch Operatoren bestimmt. Für die IL9 die sprachunabhängig sein soll, muß der 6.C. -Satz von Operatoren die Operatorsätze der verschiedenen interessierenden Ursprungssprachen umfassen. Vom praktischen Standpunkt her gesehen sind bei der Entwicklung des G„C drei Ursprungssprachen zu berücksichtigen, nämlich COBOL, FORTRAN IV9 und PL/1. Verfeinerungen, beispielsweise der Zusatz eines besonderen Operators von irgend einer anderen Ursprungssprache9 können leicht vorgenommen werden.
Zusätzlich zu den konventionellen Operatoren von der obengenannten Ursprungssprache., weiche bei den Daten vorzunehmende Aktionen festlegen., sind noch in IL benötigte Begrenzer vorgesehen. Sie werden als Operatoren (Steueroperatoren) angesehen, da sie die auszuführende Aktion bestimmen.
Die Liste der Operatoren in dem GC enthalt drei neue Operatoren, die zur Implementation von It aufgestellt wurden. Hier handelt es sich um die Prefix-Operatoren: ,A., .1., und .0.« Alle diese Operatoren sind auf die Adressen der betreffenden Daten bezogen. Der erste Operator, .A., spezifiziert die Operation zur Bestimmung der Adresse des zugehörenden Operanden. Der Operator ,1. bestimmt die Verwendung des Operandenwertes als die Adresse der gewünschten Daten. Der dritte Operator, .0., bestimmt, daß die Operandenadresse eine Offsetadresse ist, zu welcher eine Basisadresse
hinzuzufügen ist. . _
d Mit diesen neuen Operatoren ist es möglich, "]Hie
Anzahl der Ursprungssprachen-Funktionen, welche ohne bestimmte Routinen einfach und deutlich geschrieben werden können, beträchtlich vergrößert wird. Beispielsweise hat PL/1 die "Zeiger"- und MOffset"-Eigenschaften, welche als spezielle Datentypen klassifiziert sind. Die IL-Adressenoperatoren können diese durch den Ausdruckübersetzer bzw. Expression Processor klar spezifizieren und verarbeiten, indem die Adresse als eine Funktion von regulären Daten behandelt wird. In gleicher Weise ergeben Listen von verarbeitenden Ursprungsprachen verknüpfte Liste, welche bei Verwendung Adressenoperatoren leicht in IL Übersetzt werden können. Tabelle 4 zeigt eine Liste von Operatoren in IL und die Vorrangigkeitsverhältnisse. In der gleichen Vorrangigkeitsgruppe bildet die Vorrangigkeitsordnung in einem Ausdruck die Vorrangigkeit in einer zuerst kommenden, zuerst ausgeführten (links nach rechts) Basis. Als Ausnahme von dieser Regel wird die Vorrangigkeits-Stufengruppe 2, die Prefix-Operatoren, in einer rechts nach links Ordnung verarbeitet.
30931 6/0869
Tabelle IL-Operatoren und Vοrrang
Vorrang Stufe
IL-Operatoren Beschreibung
ο go σ>
1 2
'3 4 5 6 7
10 11
EOE )
.0.
+ Prefix -Prefix .nicht, "j .A.
.und. .oder.
( FN (Funktionscode) SB (Subscrip-
tionscode) STEUERUNG & OFFSET EXPONENTAL PREFIX ARITHMETIK ARITHMETIK VERKETTUNG RELATIONAL BIT-FOLGE "UND" BIT-FOLGE "ODER" logisches "UND" logisches "ODER" STEUERUNG
EOE ( ) .0. ,FN SB} Sie sind nicht ein Teil des Ausgangscodes. werden alle'als Steueropratoren angesehen.
Operanden: sind die Symboltabellen-Adressen der Bezeichner in dem Anwenderprogramm. Bezeichner, welches die Namen von Ausdrücken sind, werden In der Symboltabelle in einem getrennten Bereich gehalten, so daß der Ausdruckübersetzer mit einem minimalsten Aufwand innerhalb der Ausdrücke spezielle Ausdrücke erkennen kann.
Ausdrücke: Ausdrücke in IL-1-Format, der Eingang zu dem Prablemtransformationsmodul, sind einfache, nahezu 1-zu-l Transformationen von Ursprungssprachenausdrücken. Operandennamen werden durch die Symboltabellenadressen der Namen ersetzt. Operatorcodes der Ursprungssprache werden durch äquivalente Operatorcodes in IL ersetzt. Um eine Duplizierung der Sprachübersetzungsaufgabe bei der Symbolerkennung in dem Problemtransformationsmodul 12 zu vermeiden, 1st die Ausdrucksstruktur so ausgebildet, daß jedes ungeradezahlige Wort in einem Ausdruck ein Operand und jedes geradzahlige Wort ein Operator ist. Zur Ausführung dieses Formats fügt der Ursprungssprachenübersetzer einen besonderen Code hinzu, welcher bedeutet "no Operand", wenn immer dies erforderlich ist (vorangehend dem ersten Operator oder zwischen zwei aufeinanderfolgenden Operatoren).
Für den Fall, daß die Vorrangigkeit der Operationen in einer Ursprungssprache von den an die IL angepaßten Vorrangigkeitskonventionen abweicht, muß der Ursprungssprachenübersetzer fur jene Sprache in der erforderlichen Weise runde Klammern in die Ursprungssprachenausdrücke einfügen, während in die IL übersetzt wird, es sei denn, in dem GC sind Maßnahmen vorhanden, um eine Anwenderdefinition bezüglich der Vorrangigkeitsregeln zu akzeptieren.
Argumente: die Argumente in IL-I repräsentieren den Informationsgehalt von ausführbaren Anweisungen in dem Anwenderprogramm. Insofern als IL dem Programmlerer außer während des Schreibens des Compilers nicht vorliegt, wurde die meiste der in Ursprungssprachen Üblichen Redundanz entfernt.
303816/0369
Ein Argument kann ein einziger Wert sein, beispielsweise ein DO-Schleifenparameter, oder ein Ausdruck, beispielsweise der Ausdruck rechts des Gleichheitszeichens in einer Zuordnungsanweisung oder ein Ausdruck, welcher den Wert eines Parameters repräsentiert.
EOE; EOE ist der Symbolname, der zur Darstellung des internen Codes verwendet wird, der in IL-I zum Deliminieren bzw. Trennen von Ausdrucken und Argumenten dient. Der verwendete Code ist einer der Codes, die nicht zur Zuordnung von Zeichenrepräsentationen entweder im ASCII-EBCDIC-Code verwendet werden. Dieser Code dient zum Hochspringen des Kellerungsstapels des Ausdruckübersetzers auf die nächste Stufe am Ende der Verarbeitung eines Ausdruckes und zum Vorrücken des Anweisungsverarbeitungs-Programms zum nächsten Argument am/der Compilung eines Arguments. __., ,_
Anweisungen: ausführbare Anweisungen in einer Ursprungssprache bestimmen das Aufzeichnen bzw. die Transformationen, welche an Daten während der Ausführung des Anwenderprogramms vorzunehmen sind. Diese Transformationen sind Funktionen, welche von der Ursprungssprache unabhängig sind, in welcher die Funktion spezifiziert ist. Der Ursprungssprachenübersetzer 10 transformiert die funktionellen Werte und Ausdrücke der Ursprungssprachenanweisung in· die betreffenden Argumente einer IL-1-Anweisung. Die Argumente in einer IL-1-Anweisung sind die Werte oder Ausdrücke, die von dem Problemtransformationsmodul 12 zu verarbeiten sind.
Beispielsweise spezifiziert die Ursprungssprachenanweisung "Go To 101" die unkonditionale Zweigfunktion in FORTRAN. Bei einigen anderen Ursprungssprachen kann das Schlüsselwort "Branch To" P. (oder irgend ein anderes Symbol) sein, ohne, daß dadurch die auszuführende Funktion beeinflußt wird. In gleicher Weise kann der Identifizierer bzw. Bezeichner ein alphanumerischer Name oder ein Ausdruck sein, ohne daß die Funktion verändert wird.
309816/0869
Einige komplizierte Funktionen* die durch einen Satz zum Ausdruck gebracht werden können, werden jeweils durch einen der Vielzahl von verschiedenen Sätzen von Argumenten in gleicher Weise sptzifiz4ert. Beispielsweise kann der Test zur Fortführung der Iteration in einer DO-Schleife spezifiziert werden als das obere Limit der Schleifenvariablen oder es kann spezifiziert werden als ein Test eines logischen Ausdruckes, in welchem Falle die Iteration bzw. Wiederholung so lange fortgeführt wird, wie der Wert des logischen Ausdruckes "wahr" ist. Es scheint praktischer zu sein, diese Situtationsart in IL-I dadurch zu handhaben, daß man flir jedes Argument einer jeden Alternative Argumentpositionen in der IL-I-Anweisung vorsieht, anstatt eine kompliziertere Sprachübersetzung von einer Ursprungssprache zu verwenden. Der Problemtransformationsmodul 12 erkennt jede Argumentposition durch den EOE-Code, welcher selbst für Argumentpositionen vorhanden ist, welche kein Argument haben. Fehlerermittlungslogik wird dazu verwendet, das Vorhandensein eines geeigneten Satzes von Argumenten sicherzustellen. Die Tabellen 5(a) und 5(b) sind Beispiele von in FORTRAN und COBOL geschriebenen Ursprungssprachen-Iterationsanweisunrgen, die 1n einer neu entwickelten Metasprache ausgedrückt sind, welche nachfolgend noch beschrieben wird. Fig. 6 zeigt die PL-1-Ursprungssprachen-Iterationsanweisung in der Metasprachenaufzeichnung, während Tabelle 7 ebenfalls in Metasprachenaufzeichnung die einzelne, verallgemeinerte, erste Zwischensprachen (IL-1)-Iterationsanweisung zeigt, in welche jede der FORTRAN-, COBOL- und PL/1-Anweisungen der Tabellen 5 und 6 gebracht wurde.
Tabellen 8(a) und 8(b) zeigen, wie die Iterationsanweisungen von FORTRAN und COBOL in diese einfache IL-I-Anweisung in Metasprachenaufzeichnung passen.
309816/0869
Tabelle 5(a)
FQRTRAN-1 terati* ons anwei sun gen , geschrieben in einer neuen Metasprache
lstmtl
DO astmt2
ilO
kipl/ (kip2 IpI V |1P2
, k i ρ 3
,1p3
lstmt3
DO a
stmt4
ill
kip5
Mip5
fkip6 ,ip6
lstmt5
lstmt4 lstmt2
DO a
stmt6
i 12
kip7) fkip8
1ρ7Λ·) ip8
,kip9 ,ip9
ausführbare Programmanweisungen
309816/0869
Tabelle 5(b)
C OB OL-1 te rat ions anweisung^ n, geschrieben in neuer Metasprache
PERFORM a
procl
THRU a
proc2 kiplOJ
iplO
TIMES
PERF0RM aprocl |THRU aproc2
UNTIL El.
PERFORM a
procl
iknl/ nv Un2( BY ;vn5
(kn4)
THRU a
proc2l
VARYING vnl FROM
UNTIL El
UNTIL E2,
I AFTER vn2 FROM^6 AFTER vn3 FROM ^kn5 L
UNTIL El.
Tabelle
PL-1-Iterationsanweisungen, geschrieben in einer neuen Metasprache
DO vnl ■ mnl TO mn2;
a2: END [al] ;
DO ;
a2: END (al] ;
30981 6/0869
Tabelle 6 (Fortsetzung)
al; DO WHILE NOT El1 ;
a2; END Tal] ;
al; DO vnl = mnl [TO mn2 [BY [WHILE NOT El
a2; END [al ] ;
Tabelle
IL-1-Iterationsanweisungen, geschrieben in einer neuen Metasprache
DO el al a2 vnl mnl mn2 mn3 [ a3 a4 vn2 tnn4 mn5 mn6 El2 Γ a5 a6 vn3 mn7 mn8 mn9 El3
Wo: el falls Null, Test vor Iteration (Wiederholung). Falls Eins, wiederholen vor dem Prüfen.
al, a2, a3,l sind Anweisungsfolgenummern, die durch den a4, a5, a6,\ Ursprungssprachenübersetzer oder die Symbol- . tabellenadressen von Anweisung, Paragraph oder Abschnittkennzeichen zugeordnet werden. Wenn al, a3, a5 Paragraphen oder Abschnitte spezifizieren, dann sind a2, a4 und a6 Leerstellen.
vnl, vn2, bezeichnen DO-Schleifenvariable vn3
mnl,mn4, Anfangswerte von DÖ-Schleifenvariablen
mn2,mn5, ßegrenzungswerte von DO-Schleifenvariablen mn8
309816/0863
mn 3,mn 6,mn 9
El1,El
Tabelle 7 (Fortsetzung)
der Wert, durch welchen die DO-Schleifenvariablen nach jeder Wiederholung erhöht (oder erniedrigt, falls negativ) werden.
logische Ausdrücke, welche vor jeder Wiederholung getestet werden. Wiederholung wird fortgesetzt, bis der Ausdruck "wahr" ist.
Ursprung MAPS Ursprung Tabelle 8 (a th ( Iteration)
FORTRAN Wiederhol ung th
MAPS astmt - i
kipl thru kip9 IL- 1
ipl thru ip9
ilO a-i 8 ( ru mn9
ill mnl ru mn9
il2 mnl λ
vnl
vn2
vn3 b) Wiederholung
Tabelle
IL-
dprocl
aproc2 kiplO
i PlO
vn4 vn5 vn6 vn7 vn8 vn9
al
a2
(mnl =
(mn2 =
1
kiplO
fmnl =
[mn2 =
1
iplO
mnl
mn 3
mn4
mn6
mn7
mn9
309816/0869
IL-2 Format
Der Ausgang des Problemtransformationsmodul 12 besteht aus ausführbaren Instruktionen in IL-2«, Ungleich IL-I, welches eine höhere Sprache ist, befindet sich IL-2 auf Maschinenoperationsstufe, was bedeutet, daß die übersetzung in einen besonderen Maschinencode von IL-2 her annähernd eine eins-zu-eins übersetzung ist. Der Problemtransformationsmodul 12 transformiert jede Anweisung vom IL-1-Format in eine Folge von Instruktionen,von welchen jede aus einem Makroruf oder einem Operationscodejund dem oder beiden in diesem Programm vorhandenen Operanden besteht. Tabelle 8 (c) ist ein Beispiel des IL-2 Gerüstes, von welchem die IL-2 Instruktionsfolge durch den universellen Compiler erzeugt wird, entsprechend der in Tabelle 8(d) angegebenen Aufgabenfolge nach der Aufzeichnung der IL-1-Anweisung von Tabelle 7. ..
Tabelle 8(c)
IL-2-Instruktionsfolgetabelle für Wiederhοlungs anweisung (Code-Gerust)
STMT STMT INSTRUKTION GO GO TO a2
NR ADRESSE vnl = mnl GO GO TO a2
1 vn2 = mn4 AND AND mn3^ 0 OR
2 vn3 = mn7 vnl<mn2 AND vn2<mn5 AND mn3^-0 GO TO a2
3 GO TO a7 CONTINUE
4 CONTINUE IF vn2 7mn5 TO a4
5 al IF vnl ;*mn2 IF vn2< mn5 TO a4
6 IF vnl <mn2 IF vn2>mn5 mn6/» 0 OR
7 IF vnl >mn2 mn6> 0 GO TO a4
8">
9 a3
10
11
12
303816/68-69
Tabelle 8(c) (Fortsetzung
STMT STMT
NR ADRESSE INSTRUKTION
13 a5 CONTINUE
14 IF vn3> mn8 GO TO a6
15 IF vn3> mn8 GO TO a6
16 TF vn3> ipn8 AND φπ9^ 0 OR
vn3<mn8 AND mn9 < O GO TO a6
17 IF El1 GO TO a2
18 IF El2 GO TO a4
19 IF El3 GO TO a6
20 a7 CONTINUE
21 <Anweisungen, die zu wiederholen
sind von a5 bis a6>
22 vn3 = vn3 + mn9
23 GO TO a5
24 a6 CONTINUE
25 <Anweisungen, die zu wiederholen
sind von a3 bis a4>
26 vn2 m vn2 + mn6
27 GO TO a3
28 a4 CONTINUE
29 ζ Anweisungen, die zu wiederholen
sind von al bis a2)
30 vnl a vnl + ran3
31 GO TO al
32 a2
Tabelle 8(d) zeigt die von dem universellen Compiler GC-Il ausgeführten Aufgaben mit Bezug auf die Aufzeichnung der IL-1-Wiederholungsanweisung von Tabelle 7.
309816/0869
Tabelle 8i
Aufgaben des universellen Compilers -
(Die Anweisungsnummern beziehen sich auf die Anweisungen in der IL-2-Instruktionsfolgetabelle)
Aufgabe
1. <Wenn al frei ist9 Gehen nach Aufgabe 30 (Fehleraysgang)>
2. <Wenn a2 frei ist, so ist al die Symboltabe!le'fiadresse
der zu wiederholenden Prozedur Beachten des a2~Feldes in dem Symboltabellemwort für diese Prozedur,, Setzen des Codes zum Rufen dieser Prozedur (nicht dargestellt in der IL-2-Instruktionsfo]ge)e>
3. <Wenn a2 vorhanden ist9 AufsycSien in der Symbol tabelle»
um festzustellen, ob a2 eine Prozedur isto Falls dies der Fall ist, so ist die als a2 spezifizierte Prozeduradresse durch das a2-Feld ie dem Syiaboltabellenwort für diese Prozedur zu ersetzen« Ayfsuchen des Codesβ um diese Prozeduren zu rufem (in der IL-2~Instruktions-folge nicht gezeigt),, >
4. ^FaIIs mnl frei und mnZ spezifiziert ISt59 Zuordnen eines
Wertes von 1 zu ranl.>
5» <Falls a3 frei ist, a3 gleich al setzen., a4 gleich a2s, und lösche Anweisungen 9, 259 2J9 28O>
6. <Falls a5 frei ist, a5 gleich a3 setzen0 a6 gleich a4
und Löschen der Anweisungen 13„ 2I9 239 24e?
7. ^FaIIs mn2 und mn3 beide frei sind9 Löschen der Anweisungen
1, 2, 3, 4, 5, 6, 7, S9 9, 1O8 H9 129 IS9 14, 15, 16, 17, 18, 19, 20, 22, 26, 30, 31 und Gehen nach Aufgabe Dies ist eine einfache Wiederholung,, ungeachtet, ob El1 spezifiziert ist,>
8. -iFalls el null ist, Löschen der Anweisungen 49 20o>
9. <Falls El1 frei ist, Löschen der Anweisungen 17, 18 und
und Gehen auf Aufgabe lle>
10. <Falls mnl frei ist, Löschen der Anweisungen 18, 19.>
11. CFalls mnl frei ist, Löschen der Anweisungen 1, 2, 3, 6,
7, 8, 10, 11, 12, 14, 15, 22, 26, 30 und Gehen nach Aufgabe 29„>
0KI. 1972 309816/0869
12. (Falls mn3 frei ist, Dazuordnen des Wertes 1.)
13. (Falls mn3 ein positives Literal ist, Löschen der
Anweisungen 7 und 8 und Gehen nach Aufgabe 16.}
14. (Falls mn3 ein negatives Literal ist, Löschen der
Anweisungen 6 und 8 und Gehen nach Aufgabe 16.)
15. (Löschen der Anweisungen 6 und 7. )
16. (Falls El2 frei ist, Löschen der Anweisungen 18, 19 und
Gehen nach Aufgabe 18.)
17. (Falls mn4 frei ist, Löschen der Anweisung 19.)
18. (Falls mn4 frei ist, Löschen der Anweisungen 2, 3, 10, 11,
12, 14, 15, 16, 22, 26 und Gehen nach Aufgabe 29.)
19. (Falls mn6 frei ist, Dazuordnen des Wertes 1.)
20. (Falls mn6 ein positives Literal ist, Löschen der Anweisungen 11 und 12 und Gehen nach Aufgabe 23.)
21. <Fal1s mn6 ein negatives Literal ist, Löschen der
Anweisungen 10 und 12 und Gehen nach Aufgabe 23.}
22. (Löschen der Anweisungen 11 und 12.}
23. (Falls El3 frei ist, Löschen der Anweisung 19.7
24. (Falls mn7 frei ist, Löschen der Anweisungen 3, 14, 15,
16, 22 und Gehen nach Aufgabe 29.}
25. (Falls mn9 frei ist, Hinzuordnen des Wertes 1.)
26. (Falls nn9 ein positives Literal ist, Löschen der
Anweisungen 15 und 16 und Gehen nach Aufgabe 29.V
27. (Falls mn9 ein negatives Literal ist, Löschen der Anweisungen 14 und 16 und Gehen nach Aufgabe 29.)
28. (Löschen der Anweisungen 14 und 15.)
29. (Erzeugen einer IL-2-Ausgangscodefolge für die nicht-
gelöschten Anweisungen.\
30. (Fehlerausgang.)
Allgemeine Charakteristiken der Zwischensprache
In Tabelle 9 sind die Charakteristiken der IL(Zwischenspräche) aufgeführt.
tin!. 19/2
3 09816/0869
Tabelle 9 Charakteristiken der Zwischensprache
1. Sie ist ursprungssprachenunabhängig» 2o Der Eingang, IL-I, ist funktionsorientiert«,
3. Ausführbare Eingangsanweisungena in IL-I9 liegen in einem höherstufigen Sprachformat vor«
4. Es sind keine Datendeklarationsanweisungeo vorhanden«, Alle Datennamen und Attribute sind in einer Symboltabelle«,
5„ Alle nichtexplizit definierten Datennamen nehmen automatisch Ergänzungsattribute ana
6« Alle Namen (Operanden) sind Symboltabel]enadressen0
7. Operatorcodes und Punktuationscodes reichen zur Beschreibung aller allgemein verwendeten Ursprungssprachenoperationen aus.
8« Jede ausführbare Eingangsanweisung bspnnt mit einem Standardschlüsselwort für die auszuführende Funktion,,
9. Sie ist vom Objektcomputer unabhängig»
10. Der Ausgang, IL-2, ist compiSsroperatioiisorientierto 11.- IL-2-Ausgangscode weist die Maschinenoperationsstufe bzw.· Machinenoperationsniveau auf.
Die Tabellen 59 69 7 und 8 stellen ein Beispiel der Trans« tSi^a 1WVwT^hdhWg von IL ·*ί*@Η4»»#®*«ϊ--^^ daro Die
Tabellen 5 und 6 zeigen verschiedene Ursprungssprachenanweisungen in FORTRAN, COBOL und PL-I zur Bestimmung der Wiederholungsfunktion. Tabelle 7 zeigt das IL-1-Format, welches irgendeine der verschiedenen Ursprungsanweisungen repräsentieren kann*· die in den Tabellen 5 und β gezeigt sind»
Mit anderen Worten, eine übliche Wiederholungsfunktion kann durch eine FQRTRAN-"DO"-Sch!eife oder eine CQBOL-"PERFQRM"-Anweisung oder eine "DO---END"-Gruppe von PL/1 spezifiziert werden. Demzufolge kann jede der obengenannten Ursprungssprachenformate für die Wiederholung leicht durch SLT 10 in ein einziges Format, IL-I, übersetzt und dann diese standardisierte Anweisung durch einen universellen Compiler GC-Ii verarbeitet werden« Dieser universelle Compiler GC-Il 'kann als ein Modul ausgeführt sein,
30981 6/0869
22A9852
beispielsweise als die ALU des Hostcomputers, oder er kann als ein Teil der peripheren Einrichtung oder als ein Satz von Unterprogrammen ausgeführt sein. Eine solche Konstruktion kann auf wirtschaftliche Weise in Hardware ausgeführt sein, da der gleiche Compiler ein sehr weites Anwendungsgebiet auf viele Computer und viele Ursprungssprachen aufweist. In diesem Beispiel für die Wiederholung ist das Zwischensprachen-Eingangsformat, IL-I, an dem Eingang zu dem GC-Il in Tabelle 7 dargestelIt.
Wobei: Die Buchstaben definieren Scheinvariable, die zu ersetzen sind durch den Definitionsumfang, Indexmerkmale, Indexberechgrenzen, Inkrements und Konditionen. Der Ausgang des GC-Il ist IL-2 und besteht aus Maschinenstufe-Instruktionen (z.B. Vergleich, Inkrement, Zweig und Test), die in der richtigen Folge und an den richtigen Stellen in den Text des Problemprogrammes eingefügt sind. Obwohl der Ausgang Maschinencodeniveau aufweist, ist er funktionsorientiert und maschinenunabhängig,, Die übersetzung dieses Ausganges in einen bestimmten Maschinencode ist in den meisten Fällen eine einfache Aufgabe des Tabellenaufsuchens. Tabelle 8 zeigt die IL-2-Ausgangsinstruktionen, in welche die IL-1-Anweisung von Tabelle 7 während der Problemtransformation umgewandelt wurden. Außerdem kann das Compilersystem in der benötigten Weise Instruktionen hinzufügen, um die Inhalte der Indexregister zwischenzuspeiehern und wiederherzustellen, sowi e andere unterstützende Vorgänge.
Vorteile des Computersystems, bei welchem das Konzept des universellen Compilers Anwendung findet
Die Vorteile dieses Computersystems bestehen hauptsächlich in dem Ergebnis, das sich durch die Organisation de; Arbeit in unabhängige, dezentralisierte Funktionen und in der Trennung dieser Funktionen ergibt. Als Folge hiervon resultieren' die zunächst kurz angesprochenen und dann im einzelnen erörterten VorteiIe,
309816/0869
«Γ
Vorteile:
i* Die Compiler-Entwicklungskosten sind geringer, da der Compiler einen größeren Anwendungsbereich aufweist, was ein wirtschaftlicheres Volumen zur Folge hat.
2. Die Compilerentwicklung kann optimiert und durch Wiederholungen des anfängliches Entwurfes verfeinert werden» da die breitere Verwendung und längere Lebenszeit selbst durch eine kleine Verbesserung einen ausreichenden Einkommensgewinn bewirkt.
3. Der Compiler ist einfach zu entwickeln und Fehler bzw» Störungen können leichter beseitigt werden, da er in unabhängige dezentralisierte Moduls aufgeteilt ist.
4. Die Compile-Zeit kann durch Implementierung des Entwurfs in Hardware-Firmware beträchtlich verkürzt werden»
5. Die Komplexheit des Betriebssystems kann verringert werden, da vom Compiler her an das System weniger Anforderungen gestellt werden.
ββ Die Entwicklung der Ursprungssprache ist vereinfacht.
7. Bessere Spracheigenschaften ermöglichen eine größere Programmoptimierung durch den Programmierer.
8. Kompatibel mit der Entwicklung von üblichen Datenbasis-Systemen und anderen beiannten Piekten, welche die Compilerentwicklungsspezifikationen radikal ändern können«,
Kosten: Die gegenwärtige Compiler-Entwicklungsmethode erfordert für jede Ursprungssprache-ZMaschinenkombination jeweils eine getrennte, für sich eigenartige Compilerentwicklung» Jeder Compiler hat eine nur verhältnismäßig kleine Änwendungsmöglichkeit und eine kurze Lebenszeit» Im Vergleich hierzu kann ein großer Teil eines universellen Compilers ohne Änderung in Verbindung mit einer Vielzahl von Ursprungssprachen und verschieden hergestellten und aufgebauten Computern verwendet werden. Demzufolge verteilen sich die Entwicklungskosten auf eine große Anzahl von Einheiten, so daß sie anteilmäßig nur gering sind.
Compilarverbesserungen: Infolge der Komplexität der bekannten Compiler und ihren begrenzten Anwendungsmöglichkeiten9 lassen
3 0 9816/0869
die Entwicklungsanstrengungen normalerweise nach, wenn die Compilerentwicklung getestet wurde. Änderungen steht man stark abweisend gegenüber, da man das Auftreten von unerwarteten neuen Problemen fürchtet. Außerdem ist eine Neuentwicklung zur Überwindung von während des Betriebes festgestellten Nachteilen nicht gerechtfertigt, da die potentielle Verbesserung nur einer verhältnismäßig kleinen Gruppe von Anwendern zum Vorteil gereicht Im Vergleich hierzu sind ausführliche Analysen des Problemtransformationsmoduls des universellen Computers während der Anwendung voll gerechtfertigt, da es Standardfunktionen ausführt, die allen Compilern gemeinsam sind und sich der daraus ergebende Gewinn sehr weitreichend auswirkt.
Einfachheit: Das Konzept der Trennung der -unabhängigen Parameter der Sprachübersetzung und der Problemtransformation in getrennte Module bewirkt tatsachlich eine Dezentralisierung dir Steuerung von einer komplizierten Steuerung und Flußfolgen 1n drei unabhängige einfache Aufgaben. Hierdurch ergibt sich, daß Konstruktionseinzelheiten nicht den gesamten Compiler beeinträchtigen, sondern eindeutig begrenzt sind. Hierdurch wird die Konstruktion bzw. Entwicklung und das Beseitigen von Störungen bzw. Fehlern einfacher und leichter.
Geschwindigkeit: Da der Problemtransformationsmodul sowohl von Ursprungssprachen'als auch vom Objektcomputer unabhängig 1st, kann er in Verbindung mit vielen Ursprungssprachen und vielen Computern verwendet werden. Er ändert sich nicht, auch wenn in der Ursprungssprache oder in den Computermaschinencodes Änderungen auftreten.
Demzufolge kann diese Einheit in Hardware-Firmware ausgeführt werden, wobei sich eine enorme Geschwindigkeitssteigerung um mehrere Größenordnungen ergibt. Dieser Teil der Compileraufgabe kann bei nahezu Maschinenzyklusgeschwindigkeiten ausgeführt werden.
Reduzierte überwachung: Die Kompliziertheit des Betriebssystems und die daraus resultierende Zeit, die vom Computer für die
30981 6/0869
Betriebssystemaufgaben (nichtproduktive Ausgaben) aufgewendet werden müssen, entwickeln sich zu dringenden Problemen. Da die Sprachen umfangreicher werden, werden die Compiler größer und erfordern einen größeren Betriebssystemaufwand für die Planung und das Umschalten auf und von aktiven Speichern, insbesondere bei Multiprogrammverarbeitung.
, Beim universellen Compiler sind die Sprachübersetzer (SLT 10 und MCT 14} viel kleiner und demzufolge leichter zu planen und zu schalten. Das Planen des ALU wird insbesondere dann weitgehend reduziert, wenn der Problemtransformationsmodul in die Hardware eingeschlossen ist. Ferner werden die Schaltungs- und aktiven Speichererfordernisse verringert. Es ist nunmehr leicht möglich, die gesamte Compileaufgabe in peripheren Geräten auszuführen, wodurch das Betriebssystem weiter vereinfacht wird,-
Ursprungssρrächeηverbesserungen: Durch den universellen Compiler ist der Ursprungssprachenübersetzer der einzige Modul, der bei einer Änderung der Ursprungssprache beeinflußt wird. Die Obersetzung in diesem Modul ist nahezu eine eins-zu-eins-öbersetzung in eine Zwischensprache. Demzufolge sind Ursprungssprachenänderungen, die zur besseren Anpassung der Sprache an den Benutzer verwendet werden, verhältnismäßig leicht auszuführen. In gleicher Weise ist die Einwirkung auf den Compiler streckenbegrenzt, was bedeutet, daß das Risiko, daß unerwartet zusätzliche Fehler auftreten, proportional verringert wird.
Bessere Optimierung: Kleine Sprachübersetzer, wie es der universelle Compiler ist, sind leichter in aktive Speicher zu übertragen und aus diesen herauszuübertragen, wodurch konsequenterweise die Ursprungsprogrammumschaltung von einer Sprache in eine andere innerhalb eines Programmes praktizierbar wird. Dies gibt dem Programmierer eine größere Freiheit bei der Optimierung entweder des Aufschreibens oder der Ausführung eines Programnes. Da der Programmierer mehr weiß als der Compilerentwerfer über den Kontext des zu programmierenden Problems, ist der Programmierer am besten
309816/0869
in der Lage, das Programm global zu optimieren, Lokaloptimierungen werden andererseits am zweckmäßigsten durch den Compiler vorgenommen.
Reduziertes Verhalten: Da der universelle Compiler in zwei unabhängige Module unterteilt ist, ist die sich bei einer Änderung ergebende Auswirkung strikt begrenzt. Trotzdem kann er auch an radikale Änderungen angepaßt werden. So kann beispielsweise die Arbeit, die jetzt durch ein Datenbasismanagement und eine allgemeine Basis für eine Gemeinschaft von Anwendern vorgenommen wird, zu der Trennung der Compileraufgaben in zwei spezialisierte Compiler führen, von welchen der eine die Datenattribute und Umgebungsinformationen umwandelt, während der andere die ausführbaren Prozeduren umwandelt. Der universelle Compiler ist nicht nur kompatibel und an dieses Konzept anpaßbar, sondern kann auch die Entwicklung beschleunigen.
Beschreibung der neuen Metasprache
Von allgemeinen Gesichtspunkten aus gesehen wurde folgendes als zweckmäßig erachtet:
(a) Trennung der Datenattributedekiaration von ausführbaren Anweisungen in eine getrennte Compilerfunktion, um eine Laufzeit-Symboltabelle oder eine Datenbasis zu erhalten, so daß Datenattribute während der Programmausführung in Betracht gezogen werden können. Mit anderen Worten, treffe Vorkehrungen in dem Compilevorgang, um die allgemeine Datenbasis handhaben zu können.
(b) Entwickeln des universellen Compilerkonzepts von IL-I, so daß für jede Ursprungssprache einfache Obersetzer entworfen werden können.
(c) Entwickeln einer Software-Schreiber-Zwischensprache IL-2, so daß Betriebssysteme und Compiler unter Verwendung einer Zwischensprache auf einfache Art und Weise geschrieben und auf Fehler überprüft werden können.
309816/0869
Um dies ausführen zu können, wurde eine neue
Metasprache entwickelt, mit der die Elemente der verschiedenen Ursprungssprachen genau definiert werden können. Da eine exakte Definition eines "Problems" die beste Basis für eine gute "Auflösung" ist, muß eine neue Metasprache da sein, die als Werkzeug zur Organisierung und Vereinfachung von in komplexen höheren Sprachen vorliegenden Informationen verwendet werden kann. Bekannte Metasprachen können entweder diese Informationen nicht genau genug spezifizieren oder sie sind nicht in der gewünschten Weise genügend kurz gefaßt. Wenn die Ursprungssprachenanweisungen nicht definiert und sowohl genau als auch kurz abgefaßt sind, so ist der Informationsinhalt und dadurch auch die Aufzeichnungsanforderungen nicht kurz und bündig genug. Deshalb wurde es, um aus einer Ursprungssprache eine erste Zwischenspreche (IL-I) zu entwickeln, die für den Betrieb mit einem universellen Compiler geeignet ist, und zur Entwicklung einer zweiten Zwischensprachen (IL-2), die für eine leichte Konversion in den Objektnaschinencode für einen bestimmten Computertyp geeignet ist, als erforderlich angesehen, eine exakte Methode zur Handhabung und Definierung des Informationsgehaltes aller wichtigen Ursprungssprachen zu entwickeln. Die neue Metasprache ist ein Werkzeug, welches die Erkennung identischer Informationen unter einer Vielzahl von Ursprungssprachen unterstützt, in dem der Informationsgehalt jeder Ursprungssprachenanweisung systematisch markiert wird, so daß identische Informationseinheiten von verschiedenen Ursprungssprachen in die gleiche IL-1-Funktion gebracht werden können.
Betrachtet man die Schwierigkeiten bei der Maschdnenkommunikation zwischen Ursprungssprachen (z.B. COBOL und FORTRAN) und Software-Schreibern, so ist ersichtlich, daß zwischen diesen beiden Elementen eine Art Kommunikationsverknüpfung erforderlich ist.
Die Metasprache, welche hier «+» die zur Definierung von Elementen in den Ursprungssprachen entwickelte Aufzeichnung darstellt, ist die Kommunikationsverknüpfung zwischen der
309816/0860
betreffenden Person (dem Software-Schreiber) und der Maschine (die Ursprungssprache). Möglicherweise besteht die Hauptursache des chronischen Mangels an Software, die jeweils rechtzeitig bereit gestellt werden sollte und nach Spezifikationen zu handhaben ist, in der Eile, mit der die Softwareleute an die Arbeit des endgültigen Produktes gehen, während die Wichtigkeit der Entwicklung von guten Werkzeugen für die betreffende Arbeit ignoriert wird. Solche gute Werkzeuge wären hauptsächlich eine gute Schreibweise (Metasprache) und gute Dokumentation. Viele schlechte Softwareentwicklungen sind das direkte ERgebnis des Fehlers, da0 zur Handhabung der Ursprungssprachen eine mangelhafte Schreibweise oder ungenügende Werkzeuge gebraucht werden.
Ungenaue oder schlechte Schreibweise hat nicht nur eine schlechte Klärung der Bedürfnisse zur Folge, sondern ruft auch Mißverständnisse über die Kompliziertheit und relativeBedeutung von verschiedenen Komponenten der zu erledigenden Aufgabe hervor. So sind also schlechte Arbeitsprogramme oft das Ergebnis einer schlechten Komunikation und schlechte Komunikation ist sehr häufig das Ergebnis einer schlechten Schreibweise (schlechte Metasprache). Demzufolge ist eine gute Schreibweise extrem wichtig für die Einsicht und das gute Verständniss des Softwareentwicklers.
Eine Metasprache sollte, um ein genaues und nützliches Werkzeug zu sein, derart entworfen werden, daß es eine Sprache bei jeder Hierarchiestufe in der jeweils nächst niedrigeren Hierarchiestufe genau beschreibt. Dies ist erforderlich, um in den Kontext des Problems Einsicht zu erhalten, indem man das Sätti gungs-"Geräusch" von niedrigeren Stufen in dtr Hierarchie eliminiert.
nur i7)
309816/0869
Die Erkennung des Informationsgehaltes der Anweisungen in den Ursprungssprachen ist von großer Bedeutung, damit die Zwischensprache (IL) den vollständigen Informationsgehalt wiedergibt und damit identische Informationsinhalte von verschiedenen Ursprungssprache als solche erkannt und ohne Überfluß an Worten in die gleiche Zwischenspracheanweisung gebracht werden kann.
Eine der gegenwärtig zur Beschreibung von Computersprachen allgemein verwendeten Metasprachen wird Backus Normal Form, BNF, genannt. Obwohl es den einfachen Ausdrücken wegen als nützlich erscheint, ist die Verwendung von BNF zur Beschreibung von komplexen höheren Sprachen nicht praktikabel. In BNF wird ein Paar von<_ >zur Begrenzung eines jeden Gattungsausdruckes verwendet, und außerdem wird normalerweise jeder dieser Ausdrücke durch ein vollständiges Wort wiedergegeben. Dies führt zu verworrenen Aufzeichnungsanhäufigen und übermäßiger Wortmacherei. Die Struktur des verwendeten Wortes gibt keinen Hinweis auf die Menge der betreffenden Information. Beispiel:
die Aufzeichnung -jnteger> ist "größer" als ^term^ obwohl "term" eine viel kleinere Informationseinheit betrifft.
Die Hierarchiestufen der Informationen können also weder leicht markiert noch identifiziert werden..
Eine genaue Schreibweise kann ein wirksames Werkzeug beim Analysieren von Sprachen zu sein, um tatsächliche Information zu definieren. Um nützlich zu sein, muß die Metasprache in der Lage sein, die zu analysierende Sprache genau und kurzgefaßt zu definieren und sie muß außerdem leicht lernbar und anwendbar sein. Die Metasprachensturktur selbst sollte bei der Übertragung eines Teiles der Information behilflich sein.
Als Spezifikation für eine Metasprache gelten also folgende Erfordernisse:
1. Die Meinung muß unzweideutig sein,
2. sie muß in der Lage sein, höhere Sprachen genau und kurzgefaßt zu beschreiben,
1 0. ÜKT. 1972 309816/086^
3. sie darf die Informationseinheiten nicht in einer Menge von Einzelheiten begraben, welche für den Benutzer "Geräusche" bilden,
4. sie muß in der Lage sein Informationen von jeder Hierarchiestufe in Informationseinheiten der jeweils nächst niedrigeren Hierarchiestufe zu definieren, und
5. sie ist ein nützliches Werkzeug, das Einsicht
in die wahre Natur des zu lösenden Problems gibt.
Neu entwickelte Metaprache(ML)
Die neu entwickelte Metasprache ist ein Satz von Symbolen und Regeln, die das Schreiben von Anweisungen und Spezifikationen der Syntax und der semantischen Regeln einer Vielzahl von höheren Sprachen, zum Beispiel COBOL, FORTRAN u.s.w., in genauer und kurzgefaßter Art gestatten. Ferner ist sie so abgefaßt, daß jegliche Aufzeichnungsanhäufungen und Verwirrungen auf ein Mindestmaß herbgesetzt werden, so daß sie als Werkzeug bei der Analysierung des Informationsgehaltes von verschiedenen Sprachen verwendet werden kann. Die Struktur der Aufzeichnung selbst gibt Auskunft über (a) die Größe und (b) die Wichtigkeit der dargestellten Information. Die Schreibweise ist so gewählt, daß sie leicht zu lernen ist und man sich leicht an sie erinnert. Die Fig. 8 und 9 der Zeichnungen zeigen Sprachkonzepte, die in Form einer Hierarchie nach Größe und Wichtigkeit aufgestellt sind, wobei eine besondere Schreibweise zur Differenzierung der Hierarchie und der Bedeutung der Konzepte verwendet wurde.
So dient beispielsweise ein einfacher Kleinbuchstabe (Eig.9) zur Darstellung einer primitiven Informationseinheit oder eines Elementes (irgend eines aus einem Satz von gleichen bzw. ähnlichen Elementen). Der einfache Kleinbuchstabe mit einem unterschriebenen oder nachgesetzten Zeichen bzw. Buchstaben stellt einen Untersatz des durch den Buchstaben dargestellten Satzes dar. Zwei Haupt-Untersätze aller Infor-
1 0. OKI. 197? 3 0 9 8 16/0869
mationselemente sind "Bezeichner" (Identifizierer) und "Operatoren"*
Es wird ausdrücklich darauf hingewiesen, daß diese Metasprachenschreibart mit Bezug auf die Definitionen der Symbole und mit Bezug auf den Definitionsumfang nur ein Beispiel ist«, Andere Symbole und Definitionsumfange können zur Beschreibung der gleichen genauen Methode zur Aufstellung einer Hierarchie von Konzepten verwendet werden«
Kombinationen oder Reihen von Elementen werden durch einen einzigen Großbuchstaben definiert. Demzufolge ist entsprechend den Fig. 6 und 8 durch den Großbuchstaben "E" ein Element (irgendeines der Elemente) des Satzes aller Ausdrücke definiert. Untersätze sind durch das Unterschreiben bzw. Tiefsetzen von Kleinbuchstaben oder Zahlen zu den einfachen Großbuchstaben definiert, wie dies durch M, oder E. ersichtlich ist,
Untersätze sind auch durch den Großbuchstaben nachgesetzte Kleinbuchstaben definiert«. So ist beispielsweise "Ein" (Fig. 8) ein Element des Untersatzes, der alle logischen numerischen Ausdrücke enthält.
Zusätzlich zu den durch die Struktur (je nach dem, ob es sich um einen Klein- oder Großbuchstaben handelt) übertragenen Informationen sind die den verschiedenen Sätzen zugeordneten Buchstaben so ausgewählt, daß sie leicht zu lernen sind und leicht den betreffenden Sätzen zugeordnet werden können«, So ist beispielsweise "E" für Ausdrücke, "e" für primitive Elemente, 1V für Operatoren usw. vorgesehen.
Die ganze obengenannte Schreibweise dient zur Definierung "generischer" Sätze von Informationen. Zur Definierung eines "bestimmten" Elementes eines beliebigen Satzes werden folgende Regeln angewendet: wenn ein bestimmtes Element definiert ist, wird es als Literal der Metasprache angesehen und vollständig in Großbuchstaben geschrieben, falls es ein Bezeichner mit zwei oder mehr Buchstaben ist, wie beispielsweise ein Reservewort. Digits und besondere Ursprungssprachensymbole werden ohne Veränderung oder besondere Schreibweise geschrieben. Alle in einem Literal erscheinenden Ursprungssprachenbuchstaben werden als Großbuchstaben geschrieben.
H. 0KL1972 509016/0868
Da die Metasrpachensymbole nicht gleich sind wie die bei den Ursprungssprachen verwendeten Symbole, gibt es bei der Unterscheidung der Ursprungssprachensymbole von den Metasprachensymbole keine Schwierigkeiten. Die einzige Ausnahme bildet das Dreipunkt (...)-Wiederholungssymbol, welches ein Metasprachensymbol ist. das auch als ein JOVIAL-Sprachsymbol verwendet wird. Da dieses Symbol so zweckmäßig ist und aber JOVIAL keine allgemein verwendete Sprache darstellt, dürfte es zweckmäßig sein, es durch den tiefgesetzten Ausdruck h(h ) zu ersetzen, wenn die JOVIAL-Repetitions·
aufzeichnung erforderlich ist.
Da die wesentlichen interessierenden Ursprungssprachen keine Kleinbuchstaben aufweisen, .können die Metasprache-Kleinbuchstaben und Kombinationen eines Großbuchstabens mit einem oder mehreren Kleinbuchstaben leicht als Metasprache erkannt werden. Ursprungssprachenwörter eines Buchstabens oder Zeichens, weiche mit der Großbuchstaben-Metasprachenaufzeichnung (oder dem Repetitionssymbol in JOVIAL) verwechselt werden können, werden durch den Kleinbuchstaben "h" mit einer Unterzeichnung definiert, welche aus dem Zeichen besteht, das definiert ist (entweder ein Großbuchstabe oder Digit oder Wiederholungssymbol oder ein anderes Symbol). Demnach 1st der Ursprungssprachenbuchstabe 11A" (Metasprache-Literal) als "hA" definiert.
Ein Merkmal von BNF, welches in die neue Metasprache aufgenommen wurde,ist die Verwendung der englischen Sprache, welche in <c_ ^gesetzt ist, um die Sprachanforderungen zu beschreiben. Dies gestattet einen Aufschub bei der Aufstellung des tatsachlichen Codes für eine Sprache so lange,bis das alle Spezifikationen bestimmt sind.
Die folgenden Tabellen 10 bis 13 zeigen eine vorläufige Teilzuordnung von Buchstaben des Alphabets zu den Sätzen und Untersätzen und den Symbolen der Metasprache.
Die nachfolgende Tabelle 10 zeigt die Aufzeichnung in der Metasprache mit deren Definitionen.
Tabelle 11 liefert die Definition von Kleinbuchstaben Alphabets und Beispiele über die Anwendung in der Metasprache.
1 H ηκτ. WI 309816/0869
Tabelle 12 (a) definiert Informationselementensätze, während Tabelle 12 (b) die Untersätze verschiedener Bezeichner zeigt.
Tabelle 13 definiert die Untersätze für verschiedene Operatoren.
Tabelle 10: Metasprachen-Schreibweise
' Rechteckige Klammern werden zum Einschließen eines Optionsteiles des Formats verwendet.
Geschweifte Klammern bestimmen eine Auswahl unter den vertikal aufgelisteten Alternativen. Eine der Alternativen muß jeweils gewählt werden, außer das Ausgewählte ist unterstrichen, was bedeutet, daß es eine Auswahl durch Ergänzung ist.
Unterstreichungen bestimmen Ergänzungsalternativen.
Vertikale Striche trennen Alternativen. Verwendet in einfachen Definitionen.
Spitze Klammern enthalten englischsprachige Aus-. drücke, die zur Beschreibung oder Benennung eines Elements, einer Struktur oder Spezifikation der Ursprungssprache oder der Zwischensprache dienen.
Die Nummer, i, in den spitzen Klammern definiert die laufende Elementnummer der Einheit, u.
Wiederholsymbol, welches festliegt, daß die unmittelbar vorangehende Einheit (Element, Struktur oder Klammergruppe) aufeinanderfolgend mehrmals auftreten kann.
Metasprachenliteral: Ursprungssprachenwort von zwei oder mehr Zeichen, wobei alle Buchstaben groß geschrieben werden, oder ein sonstiges besonderes Ursprungsprogrammsymbol (Zeichen, abweichend von einem Buchstaben oder Digit).
u<O>
ΛΛ · · ·
1 0. OHT. 1972
§0981 β/0869
hx Metasprachenliteral, welches ein Ursprungssprachenzeichen definiert. Es ist durch einen Kleinbuchstaben, h, definiert, welchem das zu definierende Zeichen tiefgesetzt ist. Falls das Zeichen ein Buchstabe ist, muß es als Großbuchstaben dargestellt werden. Fall sich nicht die Möglichkeit einer Verwechslung oder Zweideutigkeit ergibt, können die Ursprungssprachensymbole so geschrieben werden, wie sie auftreten, ohne unterschreiben eines "h". Die einzige gegenwärtige bekannte Ausnahme ist das Wiederholungssymbol (...), welches ein legales Symbol in der JOVIAL-Sprache ist. Die Spezifikation dieses Symbols für JOVIAL ergibt sich durch die Verwendung des unterschriebenaVh" entsprechend (h ).
X Einfache Großbuchstaben: Metasprachenaufzeichnung für einen Gattungsbegriff, der ein Glied (irgend ein Glied) eines Satzes von MuIti-Element-Informationseinheiten definiert, beispielsweise Anweisungen (definiert durch den Großbuchstaben^) und Ausdrücke (definiert durch Buchstaben, E).
Xx... Ein Großbuchstabe der von einem oder mehreren
Kleinbuchstaben gefolgt wird, definiert ein MultiElement-Glied eines Untersatzes des Satzes, der durch den Großbuchstaben spezifiziert ist. Beispielsweise ist Ein der Gattungsname für ein Glied des Untersatzes, logischer numerischer Ausdruck.
1 0. UM. 19/2
309816/0869
x Einzelner Kleinbuchstabe: Metasprachenaufzeichnungsart für einen Gattungsbegriff, der ein Glied eines Satzes von primitiven einzelnen Elementinformationseinheiten definiert, beispielsweise Operateuren (definiert * durch den Kleinbuchstaben, o) und variable (definiert durch den Kleinbuchstaben, v).
X1. Unterschriebene tiefgesetzte Kleinbuchstaben:
Metasprachen-Gattungsbegriff für ein primitives einzelnes Element, welches ein Glied des Untersatzes X11 des primitiven Elementsatzes ist,
U . φ . fjj
der durch χ definiert ist. Beispielsweisevo. der Gattungsbegriff für einen logischen Operator. Der Satz von logischen Operatoren ist ein Untersatz des Satzes aus allen Operatoren, ο. Da es viele Untersätze von Bezeichnern gibt, sind den Haupt-Untersätzen Buchstaben ohne Unterschreibung bzw. Tiefsetzung hinzugefügt,um dadurch eine weitere Verringerung der Unordnung zu erhalten/Beispiele sind i für ganze Zahlen, w für reservierte Wörter und ν für Variable. Diese Buchstaben sind wie oben tiefgesetzt, um Untersätze zu bilden.
1 0. OKi. 1972
309816/0869
Tabelle 11: Definitionen
Verwendet als Element Verwendet als
Subscript
a Adressen-Merkmal nicht-numerisch
(alphanumerisch)
arithmetisch
adressieren
b Leerstelle binar
C Steuerungs-Bezeichner Bedingung
komplex
d Datenattribut dimension
dezimal (Festpunkt)
e Element extern ungepackt
f Dateiname Anzeige
Prefix
Gleitpunkt
Funktion
g Gruppe(Alternativ)
h Hollerith (literal) Hollerith
hexadezimal
Indexvariable invers(indirekte
(Ganzzahl) Adresse)
Festpunkt
Instruktion
k Konstante Bedingungsvariable
1 logisch
Datenelement
Bezeichner, Merkmalsmarke, Name
Operator
Parameter
numerisch
wahlweise
Offset
Zeiger
Maske
Vergleich
Anweisung
Vorzeichen
Beispiele
na ο
"1
nf
kj, °fn
ch' °h vh' kh
wo
rel ls 'fs
1 O. (IKi. 1972
309816/0869
63
Definitionen (Fortsetzung)
U W V X
Verwendet als Element
nächste Instruktionsadresse
Variable unbekanntes Element Verwendet als Subscript
Beispiele
Type -ungezeichnet reserviertes Wort
1 0. OKi.
309816/0869
Tabelle 12
(a) Informationselementensatze
e = ^Element \
= η j ο
η = ^Bezeichneiy (oder: Identifizier er) ο = ^OperatorS
(b) Bezeichner - Untersätze
^Bezeichner-Name, Marke, Operand\ a j c I d I m
a = ^ Adressenbezeichner - Anweisungsmarke, Dateiy c = ^Steuerungsbezeichner\ d =. ^DatenattributN m = /DatenbezeichnerS
aj a I a IfItIa
f ■ ο I s I I 'Pk
af = /Anzeigemarke}
a = ^Offsetadresse}
a = ^Speicheradresse (Zeiger)^
a = /'Anweisungsmarke, Unterprogrammname\
f = ^Dateiname^
t = ^nächste Instruktionsadresse\
b I c
b = ^Leerstelle^
c = /'reserviertes Wort für die Steuerung\
ddl dpld,
d, = ^DimensionV d ^)
dp ^Maske)
d = ^Attribut definierendes reserviertes Wort>
m = ma| mni v. |v
m = /'nicht-numerische Dateni a Λ. r
m = ^real numerische DatenX ν = ^komplexe Variable^ V-. - ^logische Variable^
J β. OKI 1972
309816/0869
a * w
k = Oiicht numerische figurative Konstante/
m - \Bedingungsname/
m, = vHollerithwortV
v, = ^Bedingungsvariable/
-1IiKK'
i = ^Ganzzahl-Variable, Index/
j = ^Ganzzahl-Variable, Index\ real numerische KonstanteS - f
ν = <real numerische VariableS η ι ι '
k, = \ binäre Konstante/
b > ' v
k, = ^Dezimale (Festpunkt) Konstante/
kf = ^Gleitpunkt-Konstante^
k, = \ hexadezimale Konstantej
k = ^numerisch figurative Konstantey
vn - vb I vd I VeJ, vf j vh I vi
v, = ^binäre Variable \
b \ ■ f
v, = ^dezimale Variable/
ν = \externe ungepackte numerische Variable /
vf = ^Gleitpunkt-Variable/
v, = ^hexadezimale Variable/ ·
v. = \ Festpunkt-Variable V
0. OKT. 1972
309816/Q86 9
Tabelle 13: Operator-Untersätze ^Operator^
°n|°w
ll n|w
^Adressenoperator/
ο = ^Steueroperator\
ο, = \Boolescher Operator/
ο = ^numerischer Operator)
ο = \reserviertes Wort Operator/
°a - °i I °o I °p
i I o I p
o. = (inverse Adresse»
ο = \ Offset )
ο = ^Zeiger S
°c = b I °ca I °cn I °
n I °t
b = yLeerstelle/ ο = ^nichtnumerische Steuerung^
ο = /'numerische Steuerfunktionen/ cn V f
o, = fgehen zur nächsten Instruktion/
1 = ^Logischer Prefix (NICHT)^ lr = \ logische Relation (UND, Oder)
°n = °na| °nf| °rel
ο = /A.rithmetisch\ ο f = /numerische Prefixy
°rel = Relation)
°nf = °fn| °fs
O4. = C numerische Funktion)
fn s \ *
of = ^Vorzeichen»
ο = ο . l ο w WiI wo
I • V
°wi = ^reserviertes Wort Instruktion^
ο = /'wahlweises reserviertes Wort Instruktion/ wo X f
Alternative Gruppierung
<\
Prefix-Operator/
°fn| °fs
O. OKi. W2
309816/0869
Operat or-Untersätze
°a Z °i| °ol °p I
i| p
ο = b I ο I ο I o. c I ca cn I t
oca = ^Verkettung) | EOE ,
ρ = ^Punictionscode^ j ^Subscriptionscode^ I C I / I
°f = °fnl °fs! °1P|>
ofn = SIN I COS I SQRT | (andere Funktionen/
°fs =
o± = .1.
1 = nicht) .nicht. I
lr = UND I 0DER I ·υΝΙ)· °n = °na | °fη I °fs I °rel °na
°nf = °fn| °fs
ο = .0.
ο
ο = .A.
■ = ο . I o
wo
ο " = ο . I o
w wi I
WENN I GEHEN NACH | FÜHRE AUS I ^irgend ein anderes reserviertes Wort Instrul tion>
ο .
W1 ■ · 1 serviertes Wort Instruk-
ο = MIT j DANN j BEI j VORSCHUB Nirgend ein anderes wahlweises wo reserviertes Wort ^
ot = {'gehen zur nächsten InstruktionV
Ö. OKT. 1972
309Ö16/0869
Tabelle 14; Informationsstruktursätze
Die Marke auf der linken Seite stellt jeweils ein Glied (irgend ein Glied) des Satzes dar, dessen Glieder den auf der rechten Seite defini erten. Anforderungen entsprechen,
A = <Speicher Strukturen> C = <Betriebssystemprogramm ">· D = <Satz von Datenattributen ^
E = <Ausdruck - in IL-I, welcher aus einer alternatierenden Folge von Bezeichnung und Operatoren besteht.^
F = <Kanäle, Hardwareunterbrechungen, Hardwareindikatoren wie beispielsweise Kondition und überlaufen ze igen. >·
G = <Gruppe von passend zusammengesetzten Strukturen verschiedener Untersätze, wie beispielsweise ausführbare Programmanweisungen, Steuerinstruktionen, Ausdrücke, Elemente.>
H = <Bibliothek> M = <:Datenstruktur ;> N = <rBezeichner Dictionary (Symbol-Tabelle)^
0 = <TSatz von Operatoren;^
P ■ <Prozedur, Programm, Unterprogramm ^ W * ^Reserviertes Wort Dictionary :>· S = <;Anweisung, enthaltend Begrenzer^ T * <Entscheidungs-Tabelle>·
V - <Vector - η - Dimensionsvariable ;>
309816/0869
Tabelle 15: Inf ormationsstrukturuntersä1^2 A 9 8 5
Ausdrücke
E =
El
Ein
Ern =
En
EIa =
Era =
Ea =
Efn =
Ec =
{Ausdruck (runde Klammern müssen gepaart sein)^
Cof ..J £(...J ηΓο £V..J [of...J £(. η L ) · · *J I · · · I
EIaI Ein[Era | Ern| Ea | En| EfnI Ec | El
EIa I Ein {logischer numerischer (dezimaler) AusdruckS
{g (
ivl ) ~ol (vl !Π Ern^ /Ern J
{numerischer VergleichsausdruckS En ^or EnJ
{numerischer (arithmetischer) Ausdruck
ConfJJ [(u· J mn j ona £(... j[ j^onf...^ £(. mn £)... "Jj .·.-·—'
{logischer Ausdruck von AlphanumerenN
^Vergleichsausdruck von AlphanumerenS Ea £or Ea"j
{alphanumerischer Ausdruck^
oa
ma
ofj ofn En
η öl ncl 1vk öl kn
(oca J
f ol
imc J
1 O. OKI. 1972
3 09 8,1 6,/086S
ORIGINAL INSPECTED
Tabelle 16;Informationsstruktur-Untersätze
Gruppen
G * <Gruppe von passend zusammengesetzten Strukturen verschiedener Untersätze, wie beispielsweise ausführbare Programmanweisungen, Steuerinstruktionen, Ausdrücke, Elemente) Gt I Gf
Gt1 * (auszuführend» Instruktion, falls Konditionalausdruck, Ec1, wahr ist. Wenn Gt1 ausgeführt ist, wird Gf1
übersprungen )
Sb
Isx ...1
S Si
1+ 1 ot
auszuführende Instruktion, wenn Konditionalausdruck, Ec1, falsch ist.
fsx .. J 1 Si1 + ll I ot J
die Subskription, i, bezeichnet die ith-Stufe der geschachtelten IF-Anweisungen)
ot ■ (definiert, daß die als nächstes während der Programmausführung auszuführende Instruktion die Anweisung 1st, welche der gesamten "IF"-Anweisung folgt, welche alle geschachtelten "^"-Anweisungen enthält. Eine Instruktion an den Compiler besteht darin, im Bedarfsfall zu kodieren, um diese Instruktions-Ausführungsfolge zu erzeugen)
Tabelle 17: Informationsstrukturuntersätze Datenstrukturen
M ■ ( Datenstruktur)
m ■ (einzelner Bezeichner von Daten (Speicher))
Ma « {Feld von Daten) Mf ■ (Daten in einer Datei) Mg ■ ^eine Generation von Hierarchiedaten)
309816/0869
Tabelle 17 (Fortsetzung) Datenstrukturen
Mh = {Hierarchie von Daten Ms = ( eine Reihe von Daten^ Mt = ( Tabelle von Daten
Tabelle 18: Informationsstruktur-Untersätze Anweisungen S = (Anweisung (einschließlich Begrenzer)^
Sc I Sd|Se
Sc = <.Steuerinstruktion ) Sd = ζ Datendeklarationsanweisung7 Se = (ausführbare Anweisung)
Sb| Sx j Si
Sb = (unbedingte Verzweigung bzw. unbedingter Sprung) Si = < IF-Anweisung>
IF Ec Gt owi Gf Sx = (irgendwelche ausführbare Anweisung, außer einer
unbedingten Verzweigung bzw. einem unbedingten
Sprung oder einer IF-Anweisung
Tabelle 14 zeigt die Zuordnung von alphabetischen Großbuchstaben zu den Haupt-Untersätzen in der Metasprache. Tabelle 15 definiert die Haupt-Untersatz-"Ausdrücke" in Termen der nextniedrigeren Stufe in der Metasprachenaufzeichnung.
Tabelle 16 definiert den Haupt-Informationsuntersatz "G" (Gruppen) und wie er in der Metasprache dargestellt ist.
Tabelle 17 zeigt die Zuordnung von Großbuchstaben mit nachgestellten Zeichen zur Bestimmung der verschiedenen Haupt-Untersätze von Datenstrukturen in der Metasprachenaufzeichnung.
Tabelle 18 zeigt die Zuordnung von Marken zu den Haupttypen von Anweisungen, welche dem Satz "S" (Anweisungen)
10. OKI. 1972 309816/0869
-w-
angehören, einem weiteren Haupt-Informationsstruktur-Untersatz.
Die hier entwickelte Metasprache ist so aufgebaut, daß sie eine Hierarchie von Konzepten bildet (die sowohl bei der Programmierung als auch bei den Computern nützlich sind), weiche entsprechend den Stufen an Komplexität un-d Sophisterei organisiert sind, so daß die ungefähre Hierarchiestufe eines jeden Konzepts jeweils leicht erkannt werden kann·
Fig. 6 zeigt als Beispiel bestimmte nützliche Informationseinheiten von verschiedener Komplexität in hierarchischer Zuordnung zueinander entsprechend dem in Fig. 6 dargestellten "Linienbaum". 11P" stellt ein Programm, eine Prozedur oder einen Satz von Programmen dar. Da jede Anweisung ein Glied des Satzes, S, aller Anweisungen ist und da S ein Untersatz von P ist, ist S mit P verknüpft. Weitere Untersätze von P sind nicht dargestellt.Da nun die Anweisungen Ausdrücke enthalten, besteht eine weitere Verknüpfung zu E, welches Ausdrücke darstellt, was zeigt, daß E ein Untersatz von S ist. Da Ausdrücke aus Elementen zusammengesetzt sind, besteht eine weitere Verknüpfung zu e, welches Elemente darstellt. Der Satz aller Elemente bricht in den Untersatz zusammen: Bezeichner, n, und Operatoren, o.
Der Bezeichnersatz, n, kann in verschiedene Untersätze unterteilt werden, wie dies durch Kleinbuchstaben a, b, c* f. g» h, i, d, m dargestellt ist und in die Variable v, welche alle ebenfalls wieder unterteilt werden können, beispielsweise die Variable ν in vb, νς, v^, v^, v^, νρ.
Andere weitere Unterteilungen des Elementensatzes,
e, kann durch n_, n_ usw. dargestellt werden.
a π
Der Operatorsatz, o,, kann entsprechend Fig. 6, unterteilt werden in O3, oQ ... usw.
α c
Fig. 7 zeigt einen weiteren Aufbau von Informations-Hierarchien in der Metasprache. In Fig. 7 kann der Satz, C, den Gattungsbegriff für irgend ein Element des Satzes "Steuerungs· oder Operationssystem11 darstellen; der Buchstabe M kann den Gattungsbegriff für irgend ein Element des Satzes "Datenstruktur"
1 O. OKT. 1972 309316/0869
darstellen; der Buchstabe A kann ein Speicherfeld darstellen; der Buchstabe P kann ein Programm darstellen; die Buchstaben S, G und T, welche mit P verknüpft sind, können Elemente verschiedener Abschnitte oder Teile (Untersätze) des Programmes P darstellen. Jedes dieser Symbole wird weiter unterbrochen in Organisationen, welche eine geringere Komplexheit und weniger komplizierte Informationsbit enthaltene
Tabelle 19 zeigt eine in COBOL geschriebene "IF"-Anweisungsspezifikation, welche in IBM-Schreibweise geschrieben ist. Hier sei bemerkt, daß einige der Spezifikationen für einige Ausdrücke in COBOL nie explizit spezifiziert und in den betreffenden Manuals definiert werden, wie beispielsweise der Ausdruck "NEXT SENTENCE".
Tabelle 20 zeigt die in COBOL geschriebene 11IF"-Anweisungsspezifikation, wie sie sich in der Backus Normalform (BNF) schreibt.
Tabelle 19
COBOL "WENN" Anweisungsspezifikation - in IBM-Schreibweise geschrieben " " "
.. -. (GROSSER ALS} WENN Arithmetik-Ausdruck-1 IST |NICHTHGLEICH WIE /
L (WENIGER ALSJ
Arithmethik-Ausdruck - 2 fDANNJ /Anweisung-1 ...|
[NÄCHSTER SATZ J
ISONST 1 fAnweisung-2... 1 andernfalls] ^nächster satz J .
Beachte: Spezifikation für einige der Ausdrücke sind:im Text des Handbuches verborgen. Andee Ausdrücke, wie NÄCHSTER SATZ, sind überhaupt nirgends explizit definiert.
1 0. OKT. 1972
303816/0869
Tabelle 20 COBOL WWENN"-Anwe1sungsspezif1kation in BNF geschrieben
<Symbol? :: ■ WENN (arithmetischer Ausdruck) IST (Symbol 1/ :: ■ ( Symbol >l (Symbol > NICHT (Symbol z):: " (Symbol 1> GROSSER ALS ((Symbol 1>
GLEICH WIE|(Symbol 1> WENIGER ALS
(Symbol 3> :: « (Symbol 2) (arithmetischer Ausdruckt (Symbol 4> :: « <Symbol 3>| (Symbol 3> DANN (Symbol 5):: * (Symbol 4) (ausführbare Anweisung}!
(Symbol 4> NÄCHSTER SATZ
(^Symbol 6>:: * (Symbol 5) SONST | (Symbol 5 > ANDERNFALLS (COBOL WENiJ:: « (Symbol 6) fa^ifÜhrbare-Äfiweisunci)/
(Symbol β) NÄCHSTER SATZ
Tabelle 21 zeigt die C0B0L-"WENN"-Anwe1sungsspezifikation, geschrieben in der neu entwickelten Metasprache.
Tabelle 21 COBOL "WENN"-Anweisung in der neuen Metasprache
LANDERNFAL LSj
KENN Em, IST Γο/Ι o„ol En9 ΓοΑΝνΙ Gt fsONST L
1 rJ rel d I J IANDERNFALLSI
wobei:
Gt * [Sx ...]
ot s (Gehen zur nächsten Anweisung, folgend
Gf m [SX ...] (§*!
ο. » (Gehen zur nächsten Anweisung, folgend
Fig. 10 zeigt allgemein, wie die "WENNM-Anweisung in der Metasprache dargestellt 1st. Die rechteckigen Kästchen stellen "Ketten von Informationseinheiten" dar. S^ ist eine Gattungsanweisung von "WENN" und entspricht ■.■;; der Anweisung von Tabelle 21.
309816/0869
In Fig. 10 ist eine Informationseinheit, beispielsweise Ein in Termen von Informationshierarchien niedrigerer Ordnung verbunden, wie dies in der Metasprachenschreibweise dargestellt ist»
Anwendung des Metasprachenformats
Die neue Metasprache stellt ein Mittel dar zur Definierung des Informationsgehaltes verschiedener Ursprungssprachen ebenso wie der ersten Zwischensprache, IL-I, und der zweiten Zwischensprache, IL-2, in einer systematisch markierten allgemeinen Schreibweise, welche Informationseinheiten in genauer, kurzgefaßter Weise definiert. Dadurch können identische Informationseinheiten leicht festgestellt werden. Ferner kann die jeweilige Hierarchiestufe der Informationseinheiten (Grad der Komplexität oder Quantität von informationen) erkannt werden, ohne daß man alle elementaren Details der betreffenden Informationseinheit zu wissen braucht.
Infolge dieses Werkzeuges, nämlich der neuen Metasprache, können in verschiedenen Sprachen gegebene Ursprungssprachenanweisungen in der neuen Metasprache für Studier- und Vergleichszwecke aufgeschrieben werden, um Gleich- bzw. Ähnlichkeiten und Unterschiede in den durch die verschieden Ursprungssprachen gegebenen Funktionen festzustellen, so daß die Zwischensprache-Funktionen in wirtschaftlicher Weise entworfen werden können. Ohne diese Metasprache müßte man sich sehr stark auf das Erinnerungsvermögen verlassen, und zwar bezüglich all der Komplikationen, Beschränkungen und Spezifikationen der Informationseinheiten in jeder der Ursprungssprachen, wenn man eine betreffende Anweisung studiert. Außerdem muß man, wenn diese Anweisung zu einem späteren Zeltpunkt nochmals in Betracht gezogen werden muß, sein Gedächtnis in bezug auf jede der Ursprungssprachen wieder auffrischen.
§09816/0869
Als Arbeitsergebnis bei der Entwicklung von Zwischensprachen wurden Parameter identifiziert und in verschiedenen Stufen zu einer Informationshierarchie wie folgt zusammengestellt:
(a) Für umfangreiche Multielementinformationseinheiten, wie beispielsweise Anweisungen (S) und Ausdrücke (E) wurden mindestens 15 Hauptinformationsklassen gebildet.
(b) Mindestens 35 Haupt-Untersätze der obengenannten Gruppen wurden gebildet -- als Multielementeinheiten,- wie beispielsweise logische Ausdrücke (El).
(c) 18 prinzipielle primitive Typen wurden gebildet -- als Sätze von einzelnen Informationselementen, beispielsweise Operatoren (o), Variable (v), usw.
(d) 44 Untersätze von einzelnen Elementgruppen wurden aufgestellt — welche beispielsweise Typen von Operatoren enthalten, wie arithmetische Operatoren, logische Operatoren und Steueroperatoren. Diesbezüglich kann
auf die Figuren 6 und 7 zurückgewiesen werden.
Eine der Entdeckungen, die bei der Aufstellung der Informationshierarchie und der neuen Metasprachen-Schreibweise gemacht wurden, gibt einen guten Einblick in diese Entdeckungen. Während des Beginns dieser Arbelt wurden alle "reservierten Wörter" (einschließlich Instruktionen) als "Bezeichner" bzw. "Identifizieren klassifiziert. Auch "Instruktionen" wurden als Bezeichner von Rufprogrammen angesehen. Nachdem mit diesen ursprünglichen Klassifikationen Erfahrung gesammelt und damit gearbeitet wurde, hat sich gezeigt, daß jene "reservierten Wörter", die als Instruktionen oder Befehle und "Instruktionen" verwendet wurden, nicht als Bezeichner, sondern als "Operatoren" aufgestellt und definiert werden sollten.
Nachfolgend ist eine Gruppe von Tabellen angegeben, weiche zeigen, wie verschiedene Anweisungen von Haupt-Ursprungssprachen in der neuen Metasprachen-Schreibweise geschrieben
1 β. ΟΚΤ. 1972
309816/0869
werden können und wie sie in Anweisungen in der ersten und zweiten Zwischensprache transformiert und wie sie belegt werden können.
Die folgenden Tabellen 15 bis 24 zeigen die Darstellung von verschiedenen COBOL- und FORTRAN-Funktionen in der Metasprachen-Schreibweise:
Tabelle 15 zeigt repräsentative Funktionen, weiche sich in den höheren Sprachen in der linken Spalte befinden, während die equivalente Funktion im IL-1-Format in der rechten Spalte aufgeführt ist.
Tabelle 15
Im Programm gefundene Funktionen
Logisches WENN (IF)
Vergleich Vorzeichen (COBOL) Vorzeichen (FORTRAN) Klasse Bedingung Zähler
Darstellung im IL-1-Format bei Metasprachen-Schreibweise IF El Gt Gf IF El Gt Gf IF El Gt Gf IFS En S1 S2 S3 IFCL η ncl Gt Gf IFC BEI
f vk g Gt Gf
Gt Gf
Unbedingte Verzweigung (Sprung) BR as Ändern (zugeordnete ÄNDERN as-i Verzweigung)
Berechnete Verzweigung (Sprung)
Wiederholung
as
GEHE NACH i, asl, as2, ... asj FOHRE AUS el al a2 vnl mnl
mn2 mn3 El, £a3 a4 vn2 mn 4 mn 5 mn El2 C.a5 a<5 vn 3 mn? mn8 mn9 El
Zuordnung
ASGNMT ow crd M E Se mn4
U 0X1.1972
309816/0869
Tabelle 16 zeigt die Bedingungsverzweigung bzw. den Bedingungssprung (IF) der Ursprungssprache FORTRAN und der Ursprungssprache COBOL in Metasprachen-Schreibwelse. Tabelle 16B für COBOL zeigt Sub-Teile (a), (b), (c), welche in Metasprachen-Schreibweise drei Formen von Bedingungssprungtests (IF) darstellen.
Tabelle 16 zeigt im Unterabschnitt (d) die einfache IL-1-Anweisung, in welche jede dieser Fortran- lind Cobol-Anweisungen kartographiert werden.
Im Unterabschnitt (e) sind die Aufgaben des universellen Compilers für diese Bedingungsverzweigung (IF)-Anweisungen aufgeführt.
Unterabschnitt (f) von Tabelle 16 zeigt einen typischen Teil der Bedingungsverzweigung IF-Anwe1sung in IL-2.
Unterabschnitt (g) veranschaulicht, wie die Bedigungsverzweigung-IF-Anweisung belegt 1st.
Tabelle 16: Bedingungsverzweigung bzw. -sprung (IF bzw. WENN)
(Vergleichen nach Ausrichtung von Dezimalpunkten, falls alle Elemente numerisch sind)
(A) FORTRAN
WENN (Ein) St
(B) COBOL
(a) LOGISCHER TEST WENN El [DANN} Q1
(b) VERGLEICHSTEST
(SONST I- r, (ANDERNFALLS) Gf
GROSSER ALS WENN E1 IST^NICHtJJgLEICH WIE
WENIGER ALS
SONST
§09816/0869
(c) VORZEICHENPRÜFUNG
/positiv]
WENN En IST (NI CHTJ X NULL 4 Q)ANNj Gt
J (^NEGATIV Ρ
22438
[SONST ANDERNFALLS
Gf während
(d) IL-I
WENN" El Gt Gf i i ι ι
während
(e) G. C.-AUFGABEN
^Symboltabelle, aufschlagen von Attributen aller
Elemente/
de zum Ausrichten der Dezimalpunkte, falls die Attribute aller Elemente numerisch sind/
/Ausdrucks-Neuordnung entsprechend den Operatoren zugeordnetem VorrangS
de erzeugen, um den Wert des Ausdruckes zu berechnen^
de zum Testen des logischen Wertes/
(Code zum Ausführen von GT und ÜBERSPRINGEN VON^Gf, falls Testergebnis wah
^Code zum Ausführen von ^
^Wiederholen obiger Schritte für jede WENN - Anweisung^
-^Wiederholen ♦—\
^Nächste Anweisung, die auszuführen istAot/ist die Anweisung, welche der zuletzt geschachtelten "WENN" Anweisung folgt» Im IL-1-Format ist es
während. /'Geschachtelte "WENN"-Anweisungen können
in Gt oder Gf erscheinen
\ O; OKI.1972
309816/0869
IL-2
a o η (g) Bedingungsverzweigung IF bzw. WENN
BELEG
URSPRUNG
St Gt.
Gf.
NÄCHSTER SATZ
^Ausführbare Anweisung... folgend DANN oder
El und begrenzt durch SONST oder ANDERENFALLS oder
ein Schlüsselwort, das eine neue Instruktion bestimmt S
//ausführbare Anweisung... folgend SONST oder
ANDERNFALLS begrenzt durch den Beginn einer neuen Instruktion \
E- orel E0
En orel 0.0
BELEGEN IN
GEHEN NACH
= Gt
= Gf
El El
0. (IK Ϊ. 1972
309816/0869
URSPRUNG
BELEGEN IN (IN IL-I)
GROSSER ALS| GLEICH WIE I WENIGER ALS NICHT GROSSER ALS NICHT GLEICH WIE | NICHT WENIGER ALS
POSITIV ! NULL I
NEGATIV NICHT POSITIV NICHT NULL I NICHT NEGATIV
ι ■><
= orel - orel 0.0
309816/0869
Tabelle 17 zeigt den FORTRAN-Vorzeichentest in der Metasprache (a) und die äquivalenten Anweisungen in IL-I (b) und in IL-2 (c). Unterabschnitt (d) von Tabelle 18 zeigt das Belegen bzw. Kartographieren.
Tabelle 17: Vorzeichentest
(a) FORTRAN
WENN (En) S1, S9, S-
L C <j
(b) IL-I
IFS En, S1, S2, S3
(C) IL-2
<Prüfe Symboltabelle alle Elemente von E
müssen numerisch sein> < Code zum Berechnen des Wertes von En^.
COMP En
BRL S1
BRE S2
BRG S3
(d) BELEG bzw. PLAN
51 = <nächste auszuführende Anweisung,falls der Wert
des Vergleichsausdruckes negativ ist.>
52 = <nächste auszuführenden Anweisung, falls der Wert
des Vergleichsausdruckes Null 1st.*>
Sn = <nächste auszuführende Anweisung, falls der Wert des Vergleichsausdruckes positiv ist.>
309816/0869
Ähnlich wie Tabelle 17 zeigt Tabelle 18 den COBOL-Klassentest; Tabelle 19 zeigt den Bedingungstest für COBOL; Tabelle 20 ze-igt. die COBOL-Funktion der Bedingungsabzweigung bzw. des Bedingungssprungs beim Zählew; Tabelle 21 zeigt, die unbedingten Verzweigungsfunktionen von COBOL und FORTRAN; Tabelle 22 enthält die COBOL- und FORTRAN-Änderungs- bzw. Schaltfunktionen.
Tabelle 18: Klassentest COBOL
ΪIUMERISCH ) (SONST ]
lphabet,sch|Edann] ^(andernfalls) Gf
IFCL n, ncl, Gt, Gf
<Code für Zeichen durch Nachschlagen in der Zeichentabelle der
durch ncl spezifizierten Klasse,^
BRE Gt
EXEC Gf
3 0 9 8 16/086
Tabelle 19: Bed ing ungs test 22 A 98
rrrnni (SONST )
WENN vk IST [NICHT] kn !DANN] Gt \ ( Gf.
(ANDERNFALLSj (SONST )
WENNIN.CHHJ /0ANNlGt [ANDERNFALLSj Gf.
(nicht) J /|dann]
i^- IFC f, vk, g/ Gt,Gf
(Nachschlagen in der Symboltabelle zur Bestimmung ob mc oder af oder
4jCode zum Auffinden von mc korrespondierend mit kn, wenn vk spezifiziert^
^Code zum Adressieren und Holen des Bedingungsvariablenfeldes vk, in dem gegenwärtig in der Dateistelle, f, vorhandenen SatzP
<Vergleiche^ vk g BRE Gt EXEC Gf
BELEGE bzw. PLÄNE
wobei: g = mc | af f kn
kn = ^Programmgelieferter Testwert, der einen der Bedingungsnamen festlegt, welcher die Bedingungsvariable darstellen
vk = ^Bedingungsvariable (Ursprungsprogrammübersetzer
erzeugt Name und ordnet im Falle eines FormenUber-I auf tests einen Wert von 1 hinzu)}*
^Übersetzer liefert den Dateinamen, f, der momentan offenen
309316/0869
Tabelle 20: Bedingungsverzweigung beim Zählen
COBOL
BEI kil [UND JEDE ki2J (Bis ki3j
[SONST 1
Gt I [ANDERNFALLS J GfJ
l-±-±- BEI kil ki2 ki3 Gt Gf
COMPILERAUFGABEN
<CZuordnen eines Namens zur Zählervariablen, i.addiert Name zur Symboltabelle und setzt ihren Wert auf NuII^
^Ergänze ki3 - unbegrenzt. Für beide ki2 und ki3 Leerstellen (einmal Gt ausführen)
Ergänzung ki2 = kil, ki3 = kil +
1L-2 j = i+1
WENN i* k!3 GEHEN NACH a4
al WENN (kil - i) a2r a3, a4
a2 kil = kil + ki2
WENN (kil - ki3) al, a4 , a4
a3 Gt
a4 Gf
CUM. 1972 309816/086
Tabelle 21: Unbedingte Verzweigung
FORTRAN
GEHEN NACH a
COBOL
GEHEN NACH
stmt
para
see
BR as
BR as
Beleganforderungen
URSPRUNG
stmt para
sec I
IL-I
as
0. OKI. 1972
3 0 9 8 1 6/0869
Tabelle 22: Ändern
(α) FORTRAN
ZUORDNEN a4 4 . TO a
stmt -ι stmt
GEHENNACH (a ^4 .ι a4 4 o »....) stmt I stmt ζ
(b) COBOL
ANDERN <a . UM FORTZUFAHREN NACHf
para-1
para
sec
GEHEN NACH a T para
(ÄNDERN as-i, as] ...
JGEHEN as asl as2J ...
1L-2
^Prüfen, daß as-i in der ÄNDERN-Anweisung ein legales Glied des Satzes
in der GO-Anweisung ist/
^In der Symboltabelle Nachschlagen der Adresse (Ioc2) der Verzweigung
nach as^
<Code, um die Instruktion an der Stelle 1 zur Stelle 2 zu bewegen^ , zur Verzweigung nach Stelle 1/
1 O. OKT. 1972
loc 1: ^Code zur Verzweigung nach as - i
loc 2: <Code zur Verzweigung nach
BEISPIEL:
BELEG
MVAR $1, $2, 4
BR $1+4
BR as-i
BR as
URSPRUNG stmr-i srmr para-i see para
IL-I as-i
as as-i as as
Falls α in der CoboI-Anweisung weggelassen wird, muß die para ° *
GEHEN NACH-Anweisung einen Pragraphennamen haben, die einzige Anweisung in dem Paragraphen sein und vor der ersten Ausführung durch eine Ändern—Anweisung modifiziert sein.
0 UKT. 1972
30931 6/0869
- A3- -
Tabelle 23 zeigt die berechneten Verzweigungsfunktionen für FORTRAN und COBOL, welche wie oben Beleganforderungen enthält. Tabelle 24 zeigt einige der Ergibtanweisungsvarianten in FORTRAN (A) und COBOL (B), ferner nacheinander die Anweisungen in IL-1-Format (c), die Aufgaben des universellen Compilers (d), das IL-2-Format (e) und die Belegung bzw. Kartographierung (g).
Der Unterabschnitt (h) von Tabelle 24 zeigt Belegeinzelheiten, welche auf bestimmte COBQL-Ursp'rungsanweisungen anwendbar sind, die dem Unterabschnitt (B) entsprechen, bezogen auf das IL-1-Format.
309816/0869
Tabelle 23: Berechnete Verzweigung
FORTRAN GEHENNACH ( astatl( aB ...), i
COBOL
GEHEN NACH fa
paral lsecl
'apara2
'asec2
ABHÄNGIG
IL-I GEHEN NACH i, asl, as2, ... asj
- 2>
BR i + BR asl BR as2
BR asj
Beleganforderungen
In COBOL wird, falls i> j, die GEHEN NACH Anweisung ignoriert und die Steuerung geht zur nächst folgenden Anweisung. W bezeichnet laufende Instruktionsadresse.
Ursprung
11-1
stmt-i
i»*ra-i lsec-i
as-i as-i
as-i
0. IiKT. 1972
309816/0869
Tabelle 24: Ergibtanweisung 2249852
(A) FORTRAN
(1) vl = El
(2) vn = En
(B) COBOL_
(3) RECHNE (] [GERUNDETJ
knll ; £BEI-7 GRÖSSENFEHLER Se... ' ' L r »ι J
(4) ADD mn2 ... ZU mnl /.GERUNDET/
; IßElJ GRÖSSENFEHLER Se... I
(5) ADD mn2 mn2 ... GIBT mnl
(gERUNDETJ Γ; ζβΈΊ] GRÖSSENFEHLER Se ...T
(6) ADD CORRESPONDIEREND Mn2 ZU Mnl ßjERUNDETj Γ; JBElJ GRÖSSENFEHLER Se... J
(7) SUBTRAHIERE CORRESPONDIEREND Mn2 VON Mnl £geRUNDETJ
Γ; £bEiJGRÖSSENFEHLER Se
(8) SUBTRAHIERE mn2 ...
VON
(vnl /GIBT vni]) ^kn GIBT vn J
£gERUNDEtJ Γ; fBElJ GRÖSSENFEHLER Se o ..
(9) SUBTRAHIERE mn2 VON mnl [GERUNDETJ Γ; &ElJ GRÖSSENFEHLER Se
(10) MULTIPLIZIERE mn2 BY k LMXÖA
fkn GIBT
[GERUNDETJT ; XbE^ GRÖSSENFEHLER Se,
(11) DIVIDIERE mn2 IN ζνη1 L.GIBT vn^
fkn. GIBT vn
TgERUNDEtI fREST mn4l Γ; ^BEiJgrÖSSENFEHLER Se ...J
(12) DIVIDIERE mn3 DURCH mn2 GIBT v.n (GERUNDETJ [REST mn4j
Γ; £bEiJGRÖSSENFEHLER Se ...1
ti-1
ZUORDNUNG ow crd M I Se mn4
1 O. OKi. 1972 309816/0869
^Verarbeitungsausdruck, E, zur Übertragung von algebraischer Schreibweise in eine Operationsfolge, die auf Standard-Vorrangigkeitsregeln beruht^
ylie Symboltabelle wird bereitgestellt mit der fortgeschriebenen Länge von allen Ausdrücken, E, und den ausführbaren Anweisungsgruppen, Se)
^falls die Ursprungssprachen-Vorrangigkeitsregeln nicht Standardregeln sind, muß der Ursprungssprachenübersetzer in der erforderlichen Weise runde Klammern hinzufügen, damit die Information mit der richtigen Vorrangigkeit übertragen wird
11-2
£njf ο η
BELEGEN ALLGEMEIN URSPRUNGSSPRACHE IL-I
Vl M
vn M
mr M
vnl /mit vn
Leerstelle^
mnl
M
M
=E1 E
=En E
=kn E
GERUNDET setze crd=l
BEI GRÖSSENFEHLER
uG · · #
Se
Element-Ausdruck ow=0
ADD CORRES ow=l
SUBT. CORRES ow=2
VTOKETTE ow=3
TRENNE ow=4
30981 6/0869
93
Mn2 <'=mn2-i...\ E E± £o EiJ ... \
URSPRUNGSANWEISUNG
(4) mn2 Γ+ mn2 J *.. +mnl E
(5) mn2 4+ mn2v ... E
(B) I U- mn2L ... E
(Sf.) mnl - mn2 E
(10) mn2 ψ|vnl) E
|vnl)
Tkn J
vnl/
kn)
i
vnl// mn2 E
kn)
(12) mn3 / mn2 E
309816/0880
4*0
Betrieb
In den vorangehenden Beschreibungsabschnitten wurde ein Computersystem dargestellt, welches sich durch die optimale Anwendung eines universellen Compilers auszeichnet. Fig. 1 zeigt ein Flußdiagram, bei welchem dai in einer höheren Sprache vorliegende Ursprungsprogramm einem Ursprungssprachenübersetzer SLT 10- zugeführt wird, in welchem es in nicht ausführbare Informationen und ausführbare Anweisungen (in dem IL-1-Sprachformat) aufgeteilt wird. Dann werden die nichtausführbaren Informationen- in der Symboltabelle 13 des universellen Compilers 11 (DC) belegt, d.h. in diese eingetragen, während die ausführbaren Anweisungen dem Problemtransformationsmodul zugeführt werden. Daraufhin werden diese Informationen von dem universellen Compiler zu dem Maschinencodeübersetzer MCT 14 übertragen, welcher das Ursprungsprogramm dann in Form eines primitiven Operationsfolgecodes ausgibt.
Fig. 2 zeigt eine speziel lere Ausführungsform, aus welcher ersichtlich ist, wie jede höhere Sprache (beispielsweise COBOL, FORTRAN u.s.w.) mit ihrem eigenen bestimmten Ursprungssprachenübersetzer (SLT) versehen wird, beispielsweise 10 . 10, und 10a. Ferner ist aus Fig. 2 ersichtlich, c τ . a
daß jeder Hostcomputer, zum Beispiel Nr. 1, Nr.2 und Nr. 3 ein eigenes individuelles Programmpaket (MCT) aufweist, welche jeweils als 14mj, 14 2 und I4 m3 bezeichnet sind.
Die Fig. 11 bis 14 zeigen verschiedene Systemvarianten, die zur Befriedigung bestimmter Anforderungen verwendet werden können.
Das in Fig. 11 gezeigte Computersystem weist einen GC für diekonventionelle, laufende Verarbeitungsfolge der Compilung eines Ursprungsprogramms in ein Objektprogramm im Maschinencode für eine bestimmte Maschinenart»« Das Objektprogramm wird in dem Maße verarbeitet, daß der Computer das Programm verknüpfen,
309816/0869
laden und ausführen kann9 um die während ^er Laufzeit eingegebenen Daten zu verarbeiten.. Wenn das genannte Objektprogramm nicht zur Steuerung der Datenverarbeitung dients wird es auf Kartens Bändern9 Plattendateien oder anderen sekundären Speichermedien gespeicherte In Fig„ 11 ist ein sequentielles System von Programmoperationen dargestellt3 bei welchem das Ursprungsprogramm 30 durch den Ursprungs» sprachenlibersetzer 10 bearbeitet wirdo Das im IL-I= Format vorliegende Programm wird dann von dem universellen Compiler 11 behandelt, der an seinem Ausgang ein Programm im 1L=2° Format liefert» Dieses Programm wird von MCT 14 zu einem Objektprogramm 42 verarbeitet9 welches in einem Maschinencode für einen bestimmten Hostcomputer beschrieben ist„ Daten,, wie sie in Block 35 dargestellt sind9 werden für den Betrieb mit dem Objektprogramm 42 kombiniert-, welch letzteres das Ursprungsprograrnm ist9 welches in den 'zwischen den"..Ausführungen des Objektprogramms auftretenden Zwischenzeiten auf Karten,, Band Oder Platten gespeichert ist» Hierauf folgen die Lauf= zeit-Maschinencode-Ausführungsprogramme» die durch einen Block 44 dargestellt sind und einen als Block 45 dargestellten Ausgang liefern«.
Diese Konfiguration ersetzt die Standartmäßigen oder konventionellen Compilerfunktionen0 bei welchem große Mengen an Speicher= und Computerzeit für die Ausführung der Compilation erforderlich sindB die bei diesen bekannten Funktionen für jede Ursprungssprache mittels eines getrennten Compilers ausgeführt werden«.
In FIg0 11 ist der als Objektprogramm bezeichnete Block 42 der Ausgang des Compilers D der auf I(artenD Band oder Platten gespeichert word, ohne daß das Programm tatsächlich ausgeführt zu werden brauchte Mit anderen Worteno der Ausgang kann wie bei konventionellen bekannten Computersystemen für eine spätere Ausführung aufbewahrt und gespeichert werden» Eine gestrichelte Linie 39 zeigte daß zu einem beliebigen,, zweck= mäßigen späteren Zeitpunkt das Objektprogramm 42 dazu verwendet werden k&nnD um iß Kombination mit dem Datenblosk
3 0 9 816/0869 I 0. OKL 1972
gleichzeitig ausgeführt zu werden»
Fig. 12 zeigt ein Computersystem mit einem universellen Compiler, bei welchem das Ursprungsprogramm in ein Objektprogramm und eine Symboltabelle mit IL-2-Nieveau (Stufe der IL-2) verarbeitet werden kann. Diese werden in einem Sekundärspeicher so lange gespeichert, bis das Programm ausgeführt werden soll. Bei dieser Ausführungsform ist die IL-2 die Implementationssprache des Target- oder Hostcomputers, was bedeutet, daß der Computer Laufzeit-Interpretationsprogramme aufweist» welche das Objektprogramm unmittelbar ausführen können. Laufzeit-Interpretationsprogramme bewirken in der erforderlichen Weise die abschließende übersetzung von IL-2 in primitive Maschinencodes und ergeben erforderlichenfalls die Typ-Konversion (beispielsweise von Ganzzahl auf Gleitpunkt),
basierend auf Datenattributen, die durch eine Symboltabelle bereitgestellt werden» oder als Teil der Eingangsdaten oder in einer Datenbasis,
In IL-2-Sprache geschriebene Objektprogramme sind weniger anfällig für ein Veralten oder andere Änderungen als bekannte Objektprogramme, die in einem Maschinencode für eine besondere Maschine geschrieben sind. In IL-2 geschriebene Programme können von jeder beliebigen Maschine einer Maschinenklasse verwendet werden» ohne daß die Ursprungsprogramme neu compiled bzw. umgewandelt werden müssen. Eine Neucompi1ung würde in dem Falle erforderlich, wenn die neue Maschine eine andere Im ρ 1e me ηtat ί ο ηs s ρ ra c he ν e ι wenden würde. Jedoch verändert sich die implementationssprache nicht so häufig wie Maschinencodes» da die in IL-2 vorliegende Implementationssprache jeweils für eine Maschinenklasse maschinenunabhängig i st.
In Fig. 12 wird das Ursprungsprogramm 30 durch SLT und GC 11 iii ein in IL-2 geschriebenes Objektprogramm umgewandelt» welches durch den Block 42 dargestellt ist. Dieses Objektprogramm in IL-2 kann also zu einem beliebigen späteren Zeitpunkt auf einem beliebigen Computer der betreffenden üomputerkiesse ausgeführt werden. Unter Verwendung von Laufzeit-
10.ÜKI.I972 509816/0869
Interpretationsprogrammen 43 zur Verarbeitung des Blockes 35 entsprechend der Objektprogramm-Instruktionsfolge und der Symboltabelle 13' (welche in einer Datenbasis sein kann), kann ein Ausgang 45 von verarbeiteten Daten wirksam und zweckmäßig realisiert werden.
Die Fig. 13 und 14 zeigen verschiedene Computersysteme, welche jeweils dadurch voneinander abweichen, daß in Fig. 14 eine Datenbasis 36 verwendet wird, während in Fig. eine Symboltabelle Anwendung findet. Diese besonderen Computersysteme von Fig. 13 und 14 stellen eine Annäherung an den Computerbaustiel dar, was ohne das Konzept des universellen Compilers nicht möglich währe. Diese Annäherung veranschaulicht die allgemeine Verwendung von großen üblichen Datenbasen und die Eleminierung von Daten-Deklarationen von einer großen Klasse von Computerprogrammen, wodurch das Schreiben von Ursprungsprogrammen beträchtlich vereinfacht wird. In Verbindung mit der Datenbasis kann ein getrennter Compiler zum Aufzeichnen der Datendeklarationsinformation verwendet werden, wenn dies erforderlich oder zweckmäßig ist.
Da der universelle Compiler für die Verwendung mit den verschiedensten Ursprungssprachen konzipiert ist, stellt er ein häufig verwendetes Teil von Compütersystemen dar. Da ferner auch die Hardware-Firmware-Kosten reduzierende LSI-Technologie immer mehr Anwendung findet, besteht außerdem die Möglichkeit, die verschiedenen Unterprogramme des universellen Compilers auf LSI-Chips zu bringen. Diese Verwendung von Hochgeschwindigkeits-Schaltungen kann außerdem die Compile-Geschwindigkeit um eine Größenordnung erhöhen, wodurch sich der Gesamtdurchsatz eines Computersystems verdoppeln würde.
Bei der Konfiguration von Fig. 13 und 14 wird das Ursprungsprogramm durch LST 10 (welches auch in Hardware-Firmware implementiert sein kann) in ein Objektprogramm 41 in IL-I und eine Symboltabelle 13 (außer es wird eine Datenbasis 36 verwendet) übersetzt. Das Objektprogramm 41 und die Symboltabelle 13 werden so lange in einem Sekundärspeicher aufbewahrt, bis die Ausführung des Programms gewünscht wird.
SQ9816/0 869 10.0KU972
Während der Programmlaufzeit belegt der universelle Compiler 11 die Ursprungsprogrammanweisungen von IL-I nach IL-2, Belegen so viel wie ein Block oder eine Prozedur während einer bestimmten Zeit. Die Laufzeit-Interpretierprogramme 44y§Fbeiten diese IL-2-Befehle bzw, führen diese Befehle aus in Verbindung mit den Eingangsdaten 35 und der Datenattributinformation von der Datenbasis 36 oder der Symboltabelle 13, wobei ein Programmausgang 44* erzeugt wird,, Im Falle von Programmen, die mehrmals ausgeführt werden, kann der Ausgang des universellen Compilers in IL-2, Mikrocode oder anderen Primitiven in einem Sekundärspeicher als neues Objektprogramm 451 gespeichert werden, welches während der folgenden Programmverwendungen unter Umgehung des universellen Compilers verwendet wird·
Der universelle Compiler - Zusammenfassung
Als Folge der Sprachentwicklung und der Verwendung zum Rechnen ist es nun möglich, mit annehmbarer Sicherheit einen Basisuniversalsatz von Funktionen zu definieren, mit welchem der erste Teil der Anwenderprogramme geschrieben werden kann, unabhängig von der geschriebenen Ursprungssprache,, Dies ermöglicht eine neuerliche Vereinfachung beim Entwerfen des Compilers«
Anstelle die Compileaufgabe in ein elegantes Gesamtkonzept zu bringen, beispielsweise einensyntax-gerichteten Compiler oder einen Compiler-Compiler, wird gemäß dem hier beschriebenen System die Aufgabe entsprechend unabhängigen Parametern aufgeteilt. Demgemäß wird die Sprachübersetzung von der Problemtransformation getrennt. Mit anderen Worten, die Art, wie das Problem festgelegt ist, wird von dem eigentlichen Problem getrennt* Ferner wird die Beschreibung der Datenattribute und der Einrichtung (Datendeklaration) von den aufgrund der Daten (die ausführbaren Anweisungen) auszuführenden Aktionen getrennt.
1 0. OKT. 1972 ä 0 9 8 1 6/0869
2749852
Hierdurch ergibt sich eine geringere Kompliziertheit des Compilers, ohne daß dem Benutzer neue Beschränkungen auferlegt werden. Anstelle für jede Sprache für jeden neuen Computer einen vollständig neuen Compiler zu entwerfen8 ist lediglich ein neuer Ursprungssprachenübersetzer erforderlich, der von einer höheren Sprache in eine andere übersetzte wenn in der Ursprungssprache eine Änderung vorhanden ist«, Dazu ist noch ein neuer übersetzer erforderiich, der von einem auf Maschinenniveau geschriebenen Code auf einen anderen übersetzte wenn ein neuer Computer Anwendung fin-deto
Für die Anwendung dieses Konzepts der Trennung der Problemtransformation von der Sprachübersetzung wurden zwei Zwischensprachen entwickelt., nämlich IL-I und IL=2O Nichtausführbare Informationen in IL liegen in einer ■ Symboltabelle vor« Die ausführbaren Eingangssignal® zu ' dem Problemtransformationsmodul befinden sich in einer höherstufigen Sprache9 IL-Ia weiche yrsprungssprachen=· unabhängig ist«, Die ausführbaren Ausgangssignale von dem Problemtrans formationsmodul weisen Maschinenstufen=Operationscode format auf9 nämlich IL=E0 welches jeweils für ein© Klasse von Maschinen maschinan unabhängig ist*
Der Vorteil istfl daß der Problemtransformations= modul weder bei einer Hinderung'der Ursprungssprache noch bei einer Änderung eines Computers neu konzipiert zu werden braucht· Aufgrund dieser Stabilität seines Äufbauss kann der Problemtr@nsform©tionsmodul als eine Hardware-Firmware= Einheit ausgeführt iierd&n0 wodurch die Arbeitsbelastung des CPU und des Betriebssystems verringert und. andererseits" die Compilegesehwindigkeit vergrößert wird*
Als weiteres, äußerst interessant® Möglichkeit kann der Fluß der Aufgaben durch einen Computer radikal geändert werden, so daß Datenattribute als Teil einer allgemeinen Datenbasis gespeichert und durch einen speziali· sierten Compiler unabhängig von ausführbaren Programmen compilet und fortgeschrieben werdens wobei der Compiler
10.0KI.1972
/Oh
lediglich Datenattribute und Einrichtungsinformationen compiled, den Datenspeicheradressen zuordnet und ansonsten an die allgemeine Datenbasis anschließt. Anwender, welche bereits in der allgemeinen Datenbasis befindliche allgemeine Daten verwenden» brauchen die Attribute nicht zu deklarieren. Gemischte Datentypen werden in der erforderlichen Weise umgewandelt, wenn sie während der Laufzeit von der allgemeinen bzw. gemeinsamen Datenbasis abgerufen werden.
Als weitere Möglichkeit kann die Ursprungssprache eine etwas mehr umgangssprachliche Sprache sein, die on-line-compiled werden kann, angenommen die umgangssprachliche Sprache ist eine einfache eins-zu-eins-Obersetzung in die IL-!-Sprache und angenommen der Problemtransformationsmodul ist eine Hardware-Firmware-Einheit» insbesondere, wenn der Ursprungs-Syntaxerkenner ebenfalls als Firmware ausgeführt ist«,
Zusammenfassend ist festzustellen, daß das hier beschriebene Compilersystem die Computerfunktion handlicher gestaltet und dabei mehr Freiheit und Flexibilität für die Entwicklung besserer Computersysteme und Benutzersprachen bietete
Ü. OM. 1372 309816/0869

Claims (1)

PATENTANSPRÜCHE - 1. Computersystem, gekennzeichnet durch einen universellen Compiler, welcher sowohl von den Ursprungssprachen als auch von Maschinen cod's spezieller Maschinen unabhängig ist. 2. ,Computersystem, nach Anspruch 1, dadurch gekennzeichnet, daß die Compilation in zwei unabhängige Unterphasen aufgeteilt wird, von welchen jede individuell verarbeitet werden kann, ohne daß die jeweils andere Phase beeinflußt wird, wobei die beiden Unterphasen eine A) Sprachübersetzungsphase bilden, welche der sprachabhängige Teil der Compilation ist, und B) eine Problemalgorithmusumwandlungsphase, welches der sprachunabhängige Teil der Compilation ist. 3. Computersystem nach Anspruch 2, dadurch gekennzeichnet, daß die Sprachtransformationsphase derart von der Problemalgonthmusumwandlungsphase unabhängig gehalten wird, daß die Sprachübersetzungsphase in zwei Schritten ausgeführt werden kann, nämlich a) Übersetzung des Ursprungsprogramms von der Ursprungssprache in eine erste Zwischensprache und b) übersetzen des Ursprungsprogramms von einer zweiten Zwischensprache in einenspeziellen Computermaschinencode. 4. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß die Compilation in Unterphasen aufgeteilt ist, nämlich in a) übersetzen der Ursprungssprache-Information in eine erste Zwischensprache (IL-I), 10.10.1972 2749852 ti) Urnwandlung der Problemalgorithrnusinforrnation durch einen universellen Compiler, der die sprachunabhängigen Teile der Compilation verarbeitet, einschließlich der Umwandlung des funktionsorientierten Algorithmus in der genannten ersten Zwischensprache in eine Operationsfolge, die eine zweite Zwischensprache darstellt, und c) übersetzen des Ursprungsprogramms vom Format seiner zweiten Zwischensprache in das primitive Maschinenformat für einen speziellen Computer. 5. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß der universelle Compiler in zwei Arbeitsfunktionen unterteilt ist, nämlich in einen Problemumwandlungsmodul und eine Symboltabelle, wobei der Problemumwandlungsmodul die Umwandlung von ausführbaren Anweisungen aus einem komplexen funktionsorientierten Format in einfache Operationsfolgen vornimmt, während die genannte Symboltabelle zusätzliche Informationen über das Programm an den Problemumwandlungsmodul liefert, und zwar in Abhängigkeit von der vom Ursprungsprogramm her eingegebenen Information, und wobei die Symboltabelle außerdem Informationen über das Ursprungsprogramm von dem Problemumwandiungsmodul während der Compilation erhält. 6. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß a) ein Ursprungsprogramm in einer höheren Sprache vorliegt, b) ein Ursprungssprachübersetzer vorgesehen ist, der das Ursprungsprogramm in eine erste Zwischensprache (IL-I) übersetzt und außerdem das Ursprungsprogramm in ausführbare Anweisungen und nichtausführbare Informationen (Vereinbarungsanweisungen) unterteiIt, 10.10.1972 309 8 16/0869 t. c) der universelle Compiler einen Problemumwandlungsmodul und eine Symboltabelle enthält, weich letztere die nichtausführbaren Informationen speichert, während der Problemumwandlungsmodul die genannten ausführbaren Anweisungen in der genannten ersten Zwisehenspraehe empfängt, wobei die Symboltabelle und der Problemumwandlungsmodul derart zu= sammenarbeiten, daß das Ursprungsprogramm in ein in einer zweiten Zwisehenspraehe (IL-2) geschriebenes Programm umgewandelt wird, und d) ein Maschinencodeübersefzer vorgesehen ist, welcher Informationen in der zweiten ZwSschensprache erhält und von dem Prob I em umwandlungsmodul und der Symboltabelle des universeifen Compilers stammende Informationen in ein-Ursprungsprogramm mit primitivem Operationsfolgecode umwandelt, der für einen weiteren Computer ■ (Hostcomputer) geeignet ist» - 7. Compufersysi'em nach Anspruch 6, dadurch gekennzeichnet, daß die genannte erste Zwisehenspraehe unabhängig von höheren Ursprungssprachen ist, während sie hinsichtlich ihrer Komplexität nahe an die Ursprungssprachen herankommt, jedoch trotzdem die Ursprungssprachinformafion bewahrt« 8c Computersystem nach Anspruch 6, dadurch gekennzeichnet,, daß die genannte zweite Zwisehensprache operationsorientiert und so aufgebaut ist, daß sie von Compufermasehineneod's unabhängig ist, während gleichzeitig die in der ersten Zwisehenspraehe zugeführte Information aufrechterhalten wird und die zweite Zwisehenspraehe auch für Interpretationsverarbeitung verv/endbar ist» 9. Computersystem nach Anspruch 6/ dadurch gekennzeichnet, daß eine die genannte Symboltabelle ersetzende Datenbasis vorgesehen ist. 10.10.1972 3U9816/0863 μο 10. Computersystem nach Anspruch ό, dadurch gekennzeichnet, daß das Ursprungsprogramm zwischen den einzelnen Ausführungen des Programms in der genannten ersten Zwischensprache in Sekundärspeichermitteln gespeichert ist. 11 . Computersystem nach Anspruch 6, dadurch gekennzeichnet, daß das Ursprungsprogramm in der zweiten Zwischensprache auf Platten, Bändern oder durch andere Speichermittel gespeichert ist und dann mit Laufzeit-Interpretationsprogrammen eines weiteren Computers (Hostcomputer) kombiniert wird, wobei die Interpretationsprogramme zum Übersetzen des Programms von der zweiten Zwischensprache (I L-2) in primitive AAaschinencod's dienen, wie dieses für den weiteren Computer erforderlich ist, und wobei die Interpretationsprogramme «ine fertig ausgeführte Ausgabe liefern, wenn ein entsprechender Dateneingatig vorhanden ist. 12. Computersystem nach Anspruch 1,. daclurch gekennzeichnet, daß a) die in höhr.rer Ursprungssprache vorliegende Programminforrnation in, sprachenunabhängige Informationen und sprachenabhängige i η i ο r m ei ti οι ι c η g e t r en η t ist, und b) die genannte Information in eine erste Zwischensprache umgewandelt wird, deren Komplexität zwar kleiner ist als diejenige der genannten höheren Ursprungssprache, jedoch größer als die Computerobjektrnaschinencod'"s, 13. Computer-system nach Anspruch 12, dadurch gekennzeichnet, daß die Ursprungssprachen programm information in eine zweite Zwischensprache umgewandelt wird, deren Komplexität geringer ist als diejenige der genannten ersten Zwischensprache, jedoch größer als die Komplexität der Objektmaschinencodesprache eines bestimmten Computers. 14. Verfahren zur Optimierung der Compilerfunktion in einem Computersystem nach einem der Ansprüche 1 bis 13, gekennzeichnet durch folgende Verfahrensschritte: 309816/0869 10.10.1972 4985. α) Bereitsteilen eines Ursprungsprogramms in einer höheren Sprache, b) Umwandeln des genannten Ursprungsprogramms in eine erste Zwischensprache mit einer Struktur, die zur allgemeinen Informations= transmission bei allen Informationen einer Vielzahl von Ursprungssprachen geeignet ist, c) Umwandein des genannten Ursprungsprogramms in der genannten ersten Zwischensprache in eine zweite Zwischensprache, deren Struktur auf einer niedrigeren, primitiveren Stufe liegt als die erste Zwischensprache, und d) auf ungefähr gleicher Stufe Siegt,wie die Korrplexität von Masehinencod^s und Macros» 15. Verfahren zur Optimierung der Compiierfunktion eines Computersystems mit einem universellen Compiler nach einem der Ansprüche 1 bis 13, gekennzeichnet durch folgende Schritte; a) Bereitstellen eines Ursprungsprogramms in einer höheren Sprache, b) Verwenden eines Ursprungssprachenübersetzers zur Umwandlung der höheren Sprache in eine erste Zwischensprache, und c) Speichern des Ursprungsprogramms als ein Objektprogramm in der genannten ersten Zwischensprache, und d) Verwenden des universellen Compilers, um die Ursprungsprcgrammanweisungen von der ersten Zwischensprache während der Programmlaufzeit in einer zweiten Zwischensprache aufzuzeichnen = 16. Verfahren nach Anspruch 15, gekennzeichnet durch folgenden weiteren Schritt: e) Ausgeben und Speichern des Ursprungsprgramms im Format der zweiten Zwischensprache, derart, daß es als neues Objektprogramm für jede folgende Programmausführung bei Bedarf zur Verfügung steht, ohne daß es durch den universellen Compiler verarbeitet zu werden braucht. 17. Verfahren nach Anspruch 15, gekennzeichnet durch folgenden zusätzlichen 309816/0869 10.10.1972 Verfahrensschritt: e* ) Ausgeben und Speichern des Ursprungsprogramms im Mikrocode, derart, daß es als ein neues Objektprogramm für jede folgende Programmausführung zur Verfügung steht. 18. Verfahren nach Anspruch 15, gekennzeichnet durch folgenden weiteren Verfahrensschritt: e" ) Ausgeben und Speichern des Ursprungsprogramms in einem primitiven Code, derart, daß es als ein neues Objektprogramm für jede weitere Programmausführung zur Verfügung steht. 19. Verfahren zur Optimierung der Compilerfunktion eines Computersystems nach einem der Ansprüche 1 bis 13, gekennzeichnet durch die Benennung von Informationseinheiten in Computersprachen zwecks Bestimmung]des Spracheninformationsgehaltes in einer kurzen, genauen und eindeutigen Weise,unter Entwicklung einer Metasprachenaufzeichnung durch folgende Schritte: a) Zuordnen von Großbuchstaben des englischen Alphabets zur Darstellung verschiedener Sätze von Informationselementen, oder zur Darstellung von Gliedern von Sätzen von Informationselementen, b) Zuordnen von Kleinbuchstaben des englischen Alphabets, um Glieder von Sätzen von Informationselementen einer niedrigeren Informationshierarchie darzustellen, indem sie kleinere Mengen von Informationseinheiten darstellen. 20. Verfahren nach Anspruch 19, gekennzeichnet durch folgende Schritte: c) Aufstellen von Informationshauptgruppen zu einer Hierarchie mit Metasprachenschreibweise, entsprechend: c-1) einer Hierarchie von einzelnen Großbuchstaben, die jeweils einen Gattungsbegriff für ein Glied eines Hauptsatzes darstellen, von welchem jedes Glied eine Kette von einfachen Informationseinheiten für jeden einzelnen Großbuchstaben ist, c-2) einer Hierarchie vprLMerkmalen, die aus einem Großbuchstaben 10.10.1972 498 und einem oder mehreren diesem folgenden Kleinbuchstaben oder aus Zahlen bestehen, die aufeinanderfolgende kleinere Untersätze der obengenannten Hauptsätze darstellen, wobei die Glieder dieser Untersätze aus Ketten einfacher Informationseinheiten bestehen^ c-3) einer Hierarchie von Kleinbuchstaben, die jeweils Hauptsätze von einfachen Informationseinheiten darstel fen; /vorgesehen e-4) für feden Kleinbuchstaben ist eine Hierarchie von Merkmalen^ die aus Kleinbuchstaben bestehen, denen jeweils ein oder mehrere. nach= oder tiefgesetzte Buchstaben oder.Zahlen folgen, die aufeinanderfolgend kleinere Untersätze von einfachen Informations= einheften darstellen^ wobei die genannte Äufsteilungshierarchie eine abfallende Ordnung von Informationsquantität pro Symbol bildete ο Verfahren nach Anspruch 20, dadurch, gekennzeichnet, daB der unter (4) genannte Posten ©inen Gattungsbegriff für einen Sate mit einem einzelnen- Glied oder eine kleine Anzahl von Gliedern darstellt, von-welchen fedes einfache Informations= elemente sind» 22, Verfohren nach Anspruch 19, dadurch gekennzeichnet, daß bei der Verwendung einer Metasprache zur Bestimmung des Informationsgehaltes von höheren Ursprungssprachen und einer Anzahl von Zwischen·= und Maschineneodesprachen folgende Schritte durchgeführt v/erden; c) Anordnen der Syntax der Metasprachenschreibweise zur Informationsübertragung über die Komplexität oder Quantität von Informationen pro Symbol, und d) jedem speziellen Buchstabensymbol-übertrag eine eigene Bedeutung zuordnen, und zwar durch Vorsehen einer systematischen Methode zur Markierung des gesamten Informationsspektrums, welches alle üblicherweise verwendeten Ursprungssprachen umfaßt. 10.10.1972 309816/0 8 69 23. Verfahren nach Anspruch 19, dadurch gekennzeichnet,daß zur Entwicklung einer Zv ischensprache für die Optimierung der Compilerfunktion bei Verwendung eines universe 11 en Compilers folgende Schritte durchgeführt werden: a) Schreiben einer Ursprungssprache-Programminformation in einer Metasprache, deren Aufbau eine systematische Zuordnung von Symbolen zu den Informationen entsprechend des Komlexitärsgrades und des genauen Informationsgehaltes einer jeden Informationseinheit oder Informationgruppe gestattet, b) Analysieren der Ursprungssprachen Anweisungen in der Meta- sprachenaufzeichnung, um Sprachenformate von niedriger Komplexität für die genannte Zwischensprache aufzustellen.
1. Metasprache, die esne besondere Schreibweise zum Aufstellen von Informations-
einhei rei ι von Computersprachen aufweist, gekennzeichnet durch
υ) eine i iieirarchie von einzeli ien Großbuchstaben, von welchen jeder
ein·::η Gattungsbegriff für ein Glied eines Hauptsatzes bildet, von wt;Iehern jedes Glied eine Reihe von einfachen Informationseinheiten ist,
b) eiii (C für jeden einzelnen Großbuchstaben vorgesehene Hierarchie von
Merkmalen, die jeweils aus einem Großbuchstaben und einem oder mehreren diesen1! nachfolgenden Kleinbuchstaben oder Zahlen bestehen, welche aufeinanderfolgend kleinere Untersätze obiger Hauptsätze darstellen, wobei die Glieder dieser Untersätze aus Reihen einfacher
i η form α ti on sei nhei ten bestehen,
c) eine Hierarchie von einzelnen Kleinbuchstaben, die jeweils Hauptsätze von einfachen Informationseinheiten darstellen, und
d) eine für jeden Kleinbuchstaben vorgesehene Hierarchie von Merkmalen aus Kleinbuchstaben mit einem oder mehreren daruntergeschriebenen , bzw. tiefgesetzten oder nachfolgenden Kleinbuchstaben oder Zahlen, die aufeinanderfolgend kleinere Untersätze von einfachen Informationseinheiten darstellen.
10.10.1972
30981 6/0869
249852
25. Metasprache nach Anspruch 24 y dadurch gekennzeichnet, daß die genannte Metasprachenschreibweise die Erkennung von identischen Informationsuntersätzen anhand von Merkmale in den verschiedenen Ursprungssprachen ermöglicht, und daß durch diese Schreibweise Informationen entsprechend der Hierarchiestufe der Informationseinheiten weitergeleitet werden.
26. Metasprache nach Anspruch 24, dadurch gekennzeichnet, daß die genannte Metasprachenschreibweise einen Hierarchiebaum zur Informationsorganlsation entsprechend dem Grad der Komplexheit, bzw. der Einfachheit bildet, wodurch feststellbare Merkmale zur Klassifizierung von Ursprungsspracheninformatiionen entsprechend der in einer Informationseinheit vorhandenen Informationsmenge gebildet werden.
27. Metasprache, dadurch gekennzeichnet, daß sie entsprechend der in den vorstehend genannten Tabellen 10 bis 18 gegebenen Definitionen aufgezeichnet ist.
28. Computersystem, dadurch gekennzeichnet, daß Programme verwendet werden, die aus einer Vielzahl von Ursprungssprachen bestehen können, eine Zwischensprache, die als eine erste Zwischensprache bezeichnet werden kann und die von Ursprungssprachen unabhängig ist, jedoch alle wichtigen Ursprungssprachen-Informationen aufrecht erhalten werden und die ungefähr den gleichen Grad an Komplexität hat wie die Ursprungssprache, so daß die Anforderungen an einen Ursprungssprachenübersetzer so gering wie möglich sind, der zur Umwandlung von Ursprungssprachemnformationen in eine Zwischensprache geeignet ist.
29. Computersystem nach Anspruch 28, dadurch gekennzeichnet, daß die Instruktionen von einem Ursprungsprogramm in einer höheren Sprache verwendet werden, ferner eine Zwischensprache, die als eine zweite Zwischensprache bezeichnet werden kann, wobei diese zweite Zwischensprache alle wichtigen Informationen des Ursprungsprogramms aufrecht erhält,
10.10.1972
309816/0869
ferner unabhängig von der Objektmaschinensprache des betreffenden Computers ist, jedoch trotzdem operationsorientiert und von einer höheren Komplexität ist als der Objektmaschinencode, welcher jedoch schnell für Interpretationsverarbeitung anpaßbar und verwendbar ist.
30. Computersystem nach einem der Ansprüche 1 bis 13, bzw. 28 oder 19, gekennzeichnet durch eine Datenbasis zur Speicherung von Datenattributen und anderen nichtausführbaren Informationen, ferner durch einen Sprachen übersetzer zur Übersetzung von ausführbaren Anweisungen von einer Ursprungssprache in einer ersten Zwischensprache (IL-I), und durch einen im universellen Compiler vorhandenen Problemtransformationsmodul, welcher mit der genannten Datenbasis zusammenwirken und die genannten ausführbaren Anweisungen in die genannte erste Zwischensprache umwandeln kann.
31. System nach Anspruch 30, dadurch gekennzeichnet, daß eine Vielzahl "M" von Computermaschinen vorgesehen ist, welche von Ursprungsprogrammen in "N" Typen von höheren Ursprungssprachen betrieben wird, daß eine Vielzahl "N" von individualisierten Ursprungssprachen Übersetzern vorgesehen ist, von welchen jeder zur Konvertierung einer bestimmten der genannten Ursprungssprachen in eine allgemeine erste Zwischensprache vorgesehen ist, der universelle Compiler zum Empfang von Ursprungsprogrammen in der genannten ersten Zwischensprache ausgebildet ist, um die Compilation und dieUmwandlung des Ursprungsprogrammformats in eine allgemeine zweite Zwischensprache auszuführen, und daß eine Vielzahl "M" von individualisierten Maschinencodeübersetzern vorgesehen ist, von welchen jeder zur Konvertierung von Ursprungsprogrammen von der genannten zweiten Zwischensprache in den betreffenden Objektmaschinencode für jeden besonderen Computer geeignet ist.
32. Computersystem nach einem der Ansprüche 28 bis 31, dadurch gekennzeichnet, daß zur Optimierung der Compilerfunktion von Ursprungsprogrammen in höhere
10.10.1972
309816/0 8 69
Sprachen in spezielle Objekfmaschmencod^s folgendes vorgesehen lsi: ein Ursprungssprachenübersetzer, welcher das Ursprungsprogramm In eine erste Zwischensprache derart umwandelt, daß man ein Objektprogramm in dieser ersten Zwischenspraehe erhält, eine Vielzahl "AA" von Computermaschinen zur Compilung oder Ausführung des genannten Objektprogramms für jede einzelne Computermasehine, derart^, daß alle Bedürfnisse für jede einzelne der M-Computerrnaschinen vermieden werden,, von Irgendeiner der Ursprungssprachen her umzusetzen.
33. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß zur Optimierung der Compilerfunktion von Ursprungsprogrammen in höherer Sprache in spezielle Objektmaschinencod^s folgendes vorgesehen ist: ein Ursprungssprachenübersetzer zur Konvertierung des Ursprungsprgramms in eine erste Zwischenspraehe, der universelle Compiler das Ursprungsprogramm von der genannten ersten Zwischensprache in ein in einer aligemeinen zweiten Zwischensprache geschriebenes Objektprogramm umwandelt, und eine Vielzahl "M" von Computemnasehineh das Objektprogramm ausführen können, ohne daß hierzu eine RecompiSung des Ursprungsprogramms für fede einzelne Computermaschine erforderlich Ist,
10.10.1972
309816/0869
. 41# .
Leerseite
DE19722249852 1971-10-12 1972-10-11 Computersystem Pending DE2249852A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US18840271A 1971-10-12 1971-10-12

Publications (1)

Publication Number Publication Date
DE2249852A1 true DE2249852A1 (de) 1973-04-19

Family

ID=22692993

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19722249852 Pending DE2249852A1 (de) 1971-10-12 1972-10-11 Computersystem

Country Status (3)

Country Link
JP (1) JPS4847737A (de)
DE (1) DE2249852A1 (de)
GB (1) GB1367741A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3321131A1 (de) * 1982-06-14 1984-08-16 Tektronix, Inc., Beaverton, Oreg. Selbstlernende rechenmaschine

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6325733A (ja) * 1986-07-18 1988-02-03 Hitachi Ltd コンパイラ処理方式
EP1729216A3 (de) * 1993-07-22 2007-04-04 Koninklijke Philips Electronics N.V. Multimedia-System zur interaktiven Darstellung von Benutzerinformation und Massenspeicher zum Gebrauch mit einem solchen System
JP3246438B2 (ja) * 1998-04-01 2002-01-15 日本電気株式会社 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
US6836883B1 (en) * 2000-06-21 2004-12-28 Microsoft Corporation Method and system for compiling multiple languages
EP1174791B1 (de) 2000-07-10 2017-09-27 Microsoft Technology Licensing, LLC Vereinheitlichtes Datentypsystem und Verfahren
US7293261B1 (en) * 2001-04-25 2007-11-06 Microsoft Corporation Language-neutral representation of software code elements
US7890604B2 (en) 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3321131A1 (de) * 1982-06-14 1984-08-16 Tektronix, Inc., Beaverton, Oreg. Selbstlernende rechenmaschine

Also Published As

Publication number Publication date
GB1367741A (en) 1974-09-25
JPS4847737A (de) 1973-07-06

Similar Documents

Publication Publication Date Title
DE69516891T2 (de) Verfahren zum übersetzen von quellkode aus einer computer-hochsprache in eine andere
DE69807699T2 (de) Vorrichtung und verfahren zur syntaxanalyse und transformation von befehlen
DE69400869T2 (de) System zum transkribieren von texteingaben
DE60220662T2 (de) Methode und system zum ausgeben von xml daten basierend auf vorberechneten kontexten und einem dokument objekt modell
DE69726339T2 (de) Verfahren und Apparat zur Sprachübersetzung
DE68929038T2 (de) Verfahren zur Verarbeitung von digitalen Textdaten
DE69033203T2 (de) Programmierbarer Rechner mit automatischer Übersetzung zwischen Quell - und Zielkode mit Versionüberwachung
DE69230707T2 (de) An das Ziel anpassbares Informationsverarbeitungssystem
DE69032712T2 (de) Hierarchischer vorsuch-typ dokument suchverfahren, vorrichtung dazu, sowie eine magnetische plattenanordnung für diese vorrichtung
DE69710458T2 (de) Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen
DE69030815T2 (de) Apparat und verfahren zur erzeugung von dokumenten
DE68925523T2 (de) Erzeugung eines wirksamen Kodes für einen unähnliche Registrierräume enthaltenden Computer
DE69226404T2 (de) Verfahren und Gerät zum Umwandlen von abstrakten Syntaxen auf hohem Niveau in eine Zwischenform
DE2249852A1 (de) Computersystem
DE10158419A1 (de) Verfahren zum digitalen Drucken von zusammengesetzten Dokumenten
EP1920357A1 (de) Migration und transformation von datenstrukturen
DE3853806T2 (de) Dynamische Umgebungsanpassung von Rechnerprogrammen.
DE69329672T2 (de) Ergänzung eines lexikalen Umwandlers durch Analogie
DE2312193A1 (de) Uebersetzer und quellencode-erzeuger fuer eine problemorientierte sprache fuer rechenanlagen
DE10054001A1 (de) Automatisierte Schnittstellengenerierung für Computerprogramme in unterschiedlichen Umgebungen
Yamamoto An approach to the generation of software life cycle support systems
DE69219420T2 (de) Verfahren und gerät zur rechnercode-verarbeitung in einem codeübersetzer
DE69322800T2 (de) Verfahren zur Leistungsverbesserung in einem automatischen Testsystem
EP3411803A1 (de) Gerät und verfahren zur bearbeitung eines binärkodierten strukturdokuments
DE69023576T2 (de) Verbesserte Adressierung in &#34;Prolog&#34;.