Bartels :: Bartels AutoEngineer :: BAE Dokumentation :: User Language Programmierhandbuch :: Einleitung |
Bartels User Language - ProgrammierhandbuchKapitel 1
|
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.
1.1 | Was ist Bartels User Language? |
1.1.1 | Verwendungszweck |
1.1.2 | Bestandteile |
1.2 | Charakteristische Eigenschaften der User Language |
1.2.1 | Bartels User Language im Vergleich zu C |
1.2.2 | Datentypen, Konstanten, Variablen |
1.2.3 | Operatoren, Zuweisungen |
1.2.4 | Kontrollstrukturen |
1.2.5 | Programmfluss, Funktionen |
1.2.6 | Integrierte Spezialfunktionen |
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.
Die Bartels User Language besteht aus der Definition der Programmiersprache selbst, dem User Language Compiler, sowie dem User Language Interpreter.
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.
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.
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.
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.
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.
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.
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.
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.
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