Bartels :: Bartels AutoEngineer :: BAE Dokumentation :: User Language Programmierhandbuch :: Einleitung

Bartels User Language - Programmierhandbuch

Kapitel 1
Einleitung

Bartels AutoEngineer® Dokumentation

Dieses Kapitel enthält einleitende Anmerkungen zur Bartels User Language. Hierbei werden der Verwendungszweck der Bartels User Language erläutert sowie deren Bestandteile vorgestellt. Außerdem wird auf die grundlegenden Eigenschaften dieser Programmiersprache eingegangen.


Inhalt

1.1Was ist Bartels User Language?
1.1.1Verwendungszweck
1.1.2Bestandteile
1.2Charakteristische Eigenschaften der User Language
1.2.1Bartels User Language im Vergleich zu C
1.2.2Datentypen, Konstanten, Variablen
1.2.3Operatoren, Zuweisungen
1.2.4Kontrollstrukturen
1.2.5Programmfluss, Funktionen
1.2.6Integrierte Spezialfunktionen


1.1 Was ist Bartels User Language?

1.1.1 Verwendungszweck

Durch den Einsatz der Bartels User Language ergeben sich praktisch unbegrenzte Möglichkeiten für den Zugriff auf die Datenbankinhalte sowie die Nutzung von Funktionen des Bartels AutoEngineer. Mit Hilfe der Bartels User Language lassen sich im Bartels AutoEngineer unter anderem

User Language-Programme können transparent in das BAE-Menüsystem eingebunden werden, und die Konfiguration der BAE-Software zum Aufruf häufig benötigter User Language-Programme über Tastendruck (Hotkey) ist ebenfalls möglich.

Da nicht jeder BAE-Anwender notgedrungen ein erfahrener Softwareentwickler sein muss, erwarten wir von unseren Kunden auch nicht, dass sie selbst extensive User Language-Programmierung betreiben (wenngleich sie dies natürlich tun können). Vielmehr versetzt uns das Konzept der User Language in die Lage, in kürzester Zeit und mit einem Höchstmaß an Flexibilität praktisch beliebige Anpassungen der BAE-Software an kundenspezifische Bedürfnisse vorzunehmen, ohne dass dadurch Änderungen im BAE-Software-Kernel und damit ein organisatorisch aufwändiger Software-Update notwendig wären. Damit können wir unseren Kunden die bestmögliche Unterstützung im Hinblick auf die Implementierung gewünschter Spezial- bzw. Zusatzfunktionen bieten. Sichtbares Resultat dieses einzigartigen Konzepts sind die zahlreichen, nach Kundenwünschen implementierten User Language-Programme, die integraler Bestandteil der BAE-Software sind. Da die User Language-Programme der BAE-Software im Quellcode ausgeliefert werden, kann der BAE-Anwender Anpassungen an firmenspezifische Bedürfnisse leicht selbst vornehmen. In diesem Zusammenhang sei auf das Kapitel 4 dieses Handbuchs verwiesen, welches Kurzbeschreibungen zu den mit der BAE-Software ausgelieferten User Language-Programmen sowie Informationen zur Installation bzw. Bereitstellung dieser Programme im Bartels AutoEngineer enthält.

1.1.2 Bestandteile

Die Bartels User Language besteht aus der Definition der Programmiersprache selbst, dem User Language Compiler, sowie dem User Language Interpreter.

Definition der User Language Programmiersprache

Bartels User Language ist eine auf dem Sprachumfang von C basierende Programmiersprache mit internen, aus der objektorientierte Programmierung (OOP) bekannten Erweiterungen (automatische Speicherverwaltung bei der Bearbeitung von Listen, spezieller Datentyp für Zeichenketten). Über spezielle Variablentypen ermöglicht Bartels User Language den Zugriff auf die Design-Datenbank (DDB) des Bartels AutoEngineer. Eine eingebundene Funktionsbibliothek erlaubt den Aufruf von Standard- und BAE-Systemfunktionen. Die User Language Programmiersprache ist in Kapitel 2 ausführlich beschrieben. Die Definition aller Variablentypen für den DDB-Zugriff ist in Anhang B dokumentiert. Anhang C enthält die vollständige Beschreibung der in die User Language eingebundenen Systemfunktionsbibliothek.

Bartels User Language Compiler

Der Bartels User Language Compiler (ULC) erlaubt die Übersetzung von Bartels User Language-Quelldateien in den für den Bartels User Language Interpreter ausführbaren Code. Der Compiler führt bei der Übersetzung eine ganze Reihe von Prüfungen hinsichtlich Datentypkompatibilität und Ausführbarkeit von Programmen durch und arbeitet wahlweise optimierend. Spezielle Compiler-Optionen erlauben die wahlweise Generierung von User Language-Libraries. Der integrierte Linker des User Language Compilers ermöglicht sowohl das statische Linken von User Language-Libraries (zur Compile-Zeit) als auch die Programmvorbereitung zum dynamischen Linken (während der Laufzeit). Eine ausführliche Beschreibung des User Language Compilers ist in Kapitel 3.2 enthalten.

Bartels User Language Interpreter

Der Bartels User Language Interpreter erlaubt (das dynamische Linken und) die Ausführung von kompilierten, d.h. durch den Bartels User Language Compiler generierten User Language-Programmen. Der Bartels User Language Interpreter ist derzeit in den Schaltplaneditor, den Layouteditor, den Autorouter, den CAM-Prozessor, das CAM-View-Modul und den Chipeditor des Bartels AutoEngineer eingebunden. D.h., aus diesen Programmteilen des Bartels AutoEngineer heraus ist der Start von User Language-Programmen möglich. Der Programmaufruf kann dabei wahlweise über eine spezielle Menüfunktion durch explizite Angabe des Programmnamens oder automatisiert über Tastendruck bzw. Programm-Modul-Startup erfolgen. Eine ausführlichere Beschreibung des User Language Interpreter finden Sie im Kapitel 3.3 dieses Handbuchs.


1.2 Charakteristische Eigenschaften der User Language

1.2.1 Bartels User Language im Vergleich zu C

Wie bereits einleitend erwähnt, ist Bartels User Language eine Programmiersprache, die auf dem Sprachumfang von C basiert. Kommentare sind wie in C üblich durch /* und */ zu begrenzen bzw. werden wie in C++ üblich mit // eingeleitet und durch das Zeilenende begrenzt.

Als elementare Datentypen sind char, int und double in Bartels User Language enthalten. Im Unterschied zu C fehlt hier der Datentyp float ebenso wie die Möglichkeit der Qualifizierung elementarer Datentypen (short, unsigned, long). Zeiger sind in der Bartels User Language nicht implementiert. An Stelle von char-Vektoren zur Darstellung von Zeichenketten kann in Bartels User Language der als elementar zu betrachtende Datentyp string verwendet werden. In Erweiterung zu C enthält Bartels User Language den ebenfalls als elementar zu betrachtenden speziellen Datentyp index. Über diesen Datentyp werden die Möglichkeiten des Zugriffs auf die Design-Datenbank (DDB) des Bartels AutoEngineer definiert. index kann dabei als Index in einen Vektor von DDB-Strukturen verstanden werden. Über einen speziellen Operator ist der Zugriff auf die Elemente der darüber adressierten Struktur möglich. Die index-Typen sowie die zugehörigen Strukturelemente sind vordefiniert (siehe Anhang B).

Vektoren werden im Gegensatz zu C dynamisch verwaltet, d.h. die Definition fester Vektorfeldgrenzen entfällt in der User Language. Ebenso besteht in der User Language die Möglichkeit, zusammengesetzte, komplexe Datentypen (Strukturen, Arrays) einander direkt zuzuweisen, sofern diese typkompatibel sind und dieselbe Dimensionierung aufweisen.

Die Vereinbarung der aus C bekannten Speicherklassen auto, extern und register ist in der Bartels User Language nicht explizit möglich. Grundsätzlich werden in der User Language alle innerhalb von Funktionen definierten Variablen der Speicherklasse auto zugeordnet, alle außerhalb von Funktionen definierten Variablen gelten als globale Variablen, sofern sie nicht explizit der Speicherklasse static zugeordnet sind. Ebenso gelten alle im Programmtext definierten Funktionen als global vereinbart, sofern sie nicht explizit der Speicherklasse static zugeordnet sind. Der Geltungsbereich globaler Variablen und Funktionen erstreckt sich auf das gesamte Programm, während als static deklarierte Variablen und Funktionen nur Gültigkeit im aktuellen Programmtext (nicht jedoch in einem noch zu linkenden Programmtext) besitzen.

Mechanismen zur Spracherweiterung mit Hilfe eines Makro-Preprozessors werden in Bartels User Language ebenfalls unterstützt; so stehen die aus C bekannten Preprozessor-Anweisungen #include, #define, #undef, #if, #ifdef, #ifndef, #else und #endif auch in der User Language zur Verfügung.

1.2.2 Datentypen, Konstanten, Variablen

Bartels User Language enthält die elementaren Datentypen char (Zeichen), int (ganzzahliger Wert), double (rationale Zahl doppelter Genauigkeit), string (Zeichenkette), sowie index (vordefinierter Index auf DDB-Struktur; siehe Anhang B). Daneben lassen sich aus den elementaren Datentypen abgeleitete Datentypen (Vektoren bzw. Arrays sowie Strukturen) definieren.

Bartels User Language erlaubt die Verwendung von Konstanten für die elementaren Datentypen. char-Konstanten sind dabei durch einfache, string-Konstanten durch doppelte Anführungszeichen zu begrenzen. Die in C übliche Verwendung des Backslashs (\) als Fluchtsymbol zur Angabe grafisch nicht darstellbarer Zeichen ist zulässig. Ganzzahlige Konstanten können wahlweise in Dezimal-, Oktal- oder Hexadezimalschreibweise dargestellt werden. Festkommakonstanten müssen einen Dezimalpunkt enthalten. Daneben ist auch die wissenschaftliche Gleitkommadarstellung mit Exponent erlaubt.

Konstante Ausdrücke bestehen aus Konstanten und Operatoren und werden bereits während der Übersetzung durch den Bartels User Language Compiler bewertet (Constant Expression Evaluation).

Alle Variablen müssen vereinbart werden, wodurch jeweils der Datentyp der Variablen, sowie deren Name festgelegt wird. Variablennamen müssen mit einem Buchstaben oder einem Unterstrich (_) beginnen und können nachfolgend beliebig viele Buchstaben, Ziffern oder Unterstriche aufweisen. Der Compiler unterscheidet bei der Verwendung von Buchstaben in Variablennamen zwischen Groß- und Kleinschreibung. Variablen können bereits bei deren Vereinbarung initialisiert werden. Wird eine nicht initialisierte Variable verwendet, dann gibt der Compiler ggf. eine entsprechende Warnmeldung aus. Der Interpreter hingegen wird in solchen Fällen die entsprechende Variable mit einem Nullwert initialisieren.

1.2.3 Operatoren, Zuweisungen

Bartels User Language verfügt über die aus C bekannten Operatoren (?:, +, -, *, /, %, >, >=, <, <=, ==, !=, &&, ||, !, ++, --, &, |, ^, <<, >>, ~). Die Reihenfolge des Vorrangs für die Bewertung von Operatoren entspricht ebenfalls der Programmiersprache C. Erscheinen Operanden mit verschiedenen Datentypen zusammen in Ausdrücken, dann werden deren Werte in einen gemeinsamen Datentyp umgewandelt. Derartige Umwandlungen finden allerdings nur dann statt, wenn sie möglich und auch sinnvoll sind (ansonsten Fehlermeldung durch den Compiler). Eine Erweiterung gegenüber C ergibt sich aus der Möglichkeit, den Additionsoperator + sowie die Vergleichsoperatoren (>, >=, <, <=, ==, !=) direkt auf den Datentyp string anzuwenden.

Eine Zuweisung erfolgt üblicherweise durch den =-Operator, wobei der Ausdruck auf der rechten Seite des Gleichheitszeichens der Variablen auf der linken zugewiesen wird. Die in C üblichen zusammengesetzten Zuweisungsoperatoren (+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=) sind auch in Bartels User Language zulässig.

1.2.4 Kontrollstrukturen

Durch Kontrollstrukturen wird die Reihenfolge der auszuführenden Aktionen definiert. Bartels User Language erlaubt alle aus C bekannten Kontrollstrukturen außer der goto-Anweisung sowie der Definition von Marken. Die verfügbaren Kontrollstrukturen sind somit if bzw. if-else, switch, while, for, do-while, break und continue. Eine Erweiterung gegenüber C bildet die forall-Kontrollstruktur, mit der ein repetitives Abarbeiten von index-Datentyp-Variablen möglich ist.

1.2.5 Programmfluss, Funktionen

Wie C ermöglicht auch Bartels User Language die Zerlegung großer Problemstellungen in kleinere mit Hilfe von Funktionen. Zu unterscheiden ist dabei zwischen den in Bartels User Language eingebundenen Systemfunktionen (siehe Anhang C) und den Funktionen, die der Programmierer innerhalb eines Programms selbst definiert (Anwenderfunktionen). Die Definition und Deklaration der Anwenderfunktionen mit ihren Funktionsparametern entspricht der Vorgehensweise in C. Ebenso ist die Anwenderfunktion mit dem Namen main immer die erste Funktion, die bei einem Programmlauf aufgerufen wird (d.h. die Funktion main muss i.d.R. definiert sein, damit ein User Language-Programm überhaupt "etwas tut"). Im Gegensatz zu C unterscheidet Bartels User Language bei der Bewertung von an Funktionen übergebenen Parametern nicht zwischen "Call-By-Value" und "Call-By-Reference"; alle Parameter werden jeweils durch das "Call-By-Reference"-Verfahren bewertet, wodurch selbstverständlich nicht (wie sonst in C üblich) mit Zeigern gearbeitet werden muss, um geänderte Parameterwerte an einen Funktionsaufrufer zurückzumelden.

1.2.6 Integrierte Spezialfunktionen

Bartels User Language stellt dem Anwender einige spezielle Werkzeuge zur Verfügung, die es aufgrund ihres umfangreichen Funktionsspektrums und ihrer außerordentlichen Mächtigkeit verdienen, an dieser Stelle gesondert erwähnt zu werden.

So ist in die Bartels User Language ein BNF-Precompiler zur Realisierung von Interfaceprogrammen für die Bearbeitung von Fremddatenformaten integriert. Unter Verwendung der zugehörigen Scanner- und Parserfunktionen lassen sich in einfacher und eleganter Weise Programme zur Verarbeitung praktisch beliebiger ASCII-Datenformate implementieren (siehe hierzu auch Kapitel 2.6.4 dieses Handbuchs).

Bartels User Language enthält des Weiteren SQL (Structured Query Language)-Funktionen zur Verwaltung Relationaler Datenbanken. Damit stehen dem Anwender Softwaretools zur Programmierung von Datenbankmanagementsystemen zur Verfügung. Die entsprechenden SQL-Zugriffsfunktionen erlauben es, z.B. eine Datenbank für Bauteildaten zur Variantenverwaltung in den Bartels AutoEngineer integrieren. Damit lassen sich in einfacher Weise "was wäre wenn"-Analysen (Kosten, Lagerbestand, usw.) für verschiedene Varianten eines Layouts durchführen, sowie komfortable Datenbankfunktionen zur schnellen Auswahl geeigneter Bauteile mit einer kontrollierten Zuordnung von Gehäusebauform und Bauteilwert implementieren. Dies ist jedoch nur ein Beispiel aus dem breiten Anwendungsspektrum; selbstverständlich lassen sich auch Datenbanksysteme zur Projektverwaltung, zum Projektmanagement, zur Versionsverwaltung, zur Produktionsplanung und -steuerung (PPS), zur Adressverwaltung, zur Verwaltung von Lieferantenverzeichnissen und Kundendateien, usw. realisieren. Anhang C dieses Handbuchs enthält die Beschreibungen der SQL-Systemfunktionen.


Bartels :: Bartels AutoEngineer :: BAE Dokumentation :: User Language Programmierhandbuch :: Einleitung

Einleitung
© 1985-2024 Oliver Bartels F+E