-
  • EUKLID-Design
  • EUKLID-Design Classic
  • Dokumentation
  • Download
  • +49-991-2806945-0
  • info@eucad-software.de
AQL Einführung Programmiersprache
Ausgabeformatierung Symbole
Begriffsdefinitionen Namensaufbau Geltungsbereich Deklaration Initialisierung Symboltypen
Ausdrücke Kontrollanweisungen Funktionen Dateibearbeitung Fehler
Kommandosprache Vordefinierte
Funktionen
Datenstruktur Beispielprogramme Syntaxdiagramme

Symbole – die Variablen in AQL

Begriffsdefinition

Ein Symbol ist die Bezeichnung für ein von AQL behandeltes Sprachobjekt. Ein Symbol kann beliebige Typen repräsentieren, während der Begriff der Variablen immer mit einem Typ verbunden ist.

Ein Symbol kann innerhalb seines Geltungsbereiches Sprachobjekte verschiedener Typen repräsentieren.Typkonflikte werden immer bei der Verwendung eines Symbols innerhalb eines Ausdrucks oder durch eine Funktion geprüft.

Namensaufbau

Ein Symbolname kann aus maximal 32 Zeichen bestehen. Zulässig sind alle Buchstaben in Groß- oder Kleinschreibung, die Zahlen und der Unterstrich _. Ein Name darf nicht mit einer Zahl beginnen.

Wie das UNIX-System ist auch AQL "case-sensitive". Das bedeutet, daß dieselbe Buchstabenfolge in Großbuchstaben und in Kleinbuchstaben verschiedene Symbole bezeichnet (symbol != SYMBOL).

Geltungsbereich

Ein Symbol gilt immer innerhalb der Funktion, in der es vereinbart wird. Dabei gilt die Datei, in der sich das AQL-Programm befindet, als eine Funktion (main).

Bei geschachtelten Funktionen gelten für alle inneren Funktionen die Symbole der umgebenden Schalen. Das bedeutet, daß alle Symbole des Hauptprogramms (main) globalen Charakter haben. Die neue Vereinbarung eines Symbols in einer inneren Schale ist möglich. Sie gilt dann nur für die Funktion, in der sie getroffen ist, und für die in dieser Funktion eingeschlossenen Funktionen.

Symbole gelten nur innerhalb einer Source Datei, also nicht für AQL-Programme, die mit aql("...") aufgerufen wurden.

Deklaration von Symbolen – var

Es muß nicht jedes Symbol vereinbart werden, da standardmäßig eine Vereinbarung bei der ersten Verwendung eines Symbols für den Bereich der aktuellen Funktion vorgenommen wird (implizite Deklaration). Die explizite Deklaration ist nur dann zwingend, wenn der Geltungsbereich des Symbols außerhalb derjenigen Funktion liegt, in der es zum ersten Mal verwendet wird. var <name>

Initialisierung von Symbolen

Nach einer Deklaration hat ein Symbol keinen Wert. Es besitzt den Typ "invalid". Der Wert kann mit der AQL-Funktion "valid" abgefragt werden.

Die Initialisierung mit einem Wert erfolgt mit einer Zuweisung (assignment), die dem Symbol auch den aktuellen Typ zuordnet. Dieser Typ ist der Typ des Ergebnisses des zugewiesenen Ausdrucks.

my_symbol_name = expr

Namen von Objekten, die interaktiv vergeben wurden, sind konvertibel zu AQL-Symbolen. Hat eine Linie z. B. den Namen L1 erhalten, so kann über diesen Namen in AQL wie auf ein Symbol zurückgegriffen werden.

Deklaration und Initialisierung können in einer Anweisung zusammengefaßt werden.

VAR a = 10;

Beispiel: Lösche Linie mit Namen L1

delete (L1)

Symboltypen

Folgende Symboltypen (Datentypen) sind bekannt:
string zur Aufnahme von Zeichenfolgen
boolean zur Aufnahme von "logisch wahr" (true) und "logisch falsch" (false)
integer zur Aufnahme ganzer Zahlen
real zur Aufnahme von reellen Zahlen
group zur Zusammenfassung von Objekten
date zur Aufnahme von Datum
object allgemeiner Symboltyp (z.B. Zeiger auf Objekte und Aktionen)

Alle Symboltypen werden, soweit möglich, mit einer Zuweisung einer Konstanten desselben Typs erläutert. Der Typ object, der für die Bearbeitung des EUKLID-Design-Modells und seiner Teile gebraucht wird, ist in der Online-Hilfe – "Systemattribute" beschrieben.

AQL kennt die Typen seiner Objekte und weist diese den Symbolen automatisch zu. Werden Objekte miteinander verknüpft oder verglichen, so ist auf die Kompatibilität bzw. Verträglichkeit der Datentypen zu achten. Andernfalls erfolgt eine Fehlermeldung.

Symboltyp: string

Konstante Zeichenfolgen werden in doppelte Hochkommata " " als Zeichenfolgenbegrenzer eingeschlossen. Falls dieses Zeichen Bestandteil der Zeichenfolge ist, wird ihm ein ückwärtsstrich \ vorangestellt. Eine Zeichenfolge kann aus beliebig vielen Zeichen bestehen.

Bei der Verwendung als Funktionsargument ist eine dafür bestehende Beschränkung einzuhalten (z.B. können Dateinamen im UNIX aus maximal 32 Zeichen bestehen).

Beispiel 3: string.aql (vgl. Abschnitt "Operatoren für Zeichenketten" auf Seite 3-20)

PROGRAMM: var string; string = "inhalt " delimiter = "mit Begrenzungszeichen \"" [string+delimiter] nl [string+(delimiter-"* Begrenzungszeichen*")] nl
AUSGABE: inhalt mit Begrenzungszeichen " inhalt mit "

Symboltyp: boolean

Symbole mit diesem Typ können nur die Werte für "logisch wahr" und "logisch falsch" annehmen.

Bei der expliziten Belegung sind "true" und "false" in Kleinbuchstaben zu schreiben.

Beispiel 4: logical.aql

PROGRAMM: log_symbol = false; [log_symbol] nl; (1) var not_init log_symbol = valid(not_init); [log_symbol;11] nl; (2) not_init = false; [valid(not_init)] nl; (3) log_next = true [log_next] nl (4)
AUSGABE: (1) false (2) false (3) true (4) true

Symboltyp: integer

Der Wertebereich für ganze Zahlen erstreckt sich von

-2147483646 (hexadezimal -80000000)
bis
2147483646 (hexadezimal 7FFFFFFF, 32 Bit Integer).

Bei der expliziten hexadezimalen Zahlenangabe ist immer der Kleinbuchstabe "x" zu verwenden.

Beispiel 5: integer.aql

PROGRAMM: int = 140488 ‘dec:‘[int;11]‘ hexa:‘[int;11;x] nl (1) int = 0xabcdef ‘dec:‘[int;11]‘ hexa:‘[int;11;X] nl (2) int = 0x1111111 ‘dec:‘[int;11]‘ hexa:‘[int;11;X] nl (3) int = 1111111 ‘dec:‘[int;-11]‘ hexa:‘[int;11;X] nl (4)
AUSGABE : (1) dec: 140488 hexa: 224c8 (2) dec: 11259375 hexa: ABCDEF (3) dec: 17895697 hexa: 1111111 (4) dec:1111111 hexa: 10F447

Symboltyp: real

Die Angabe der reellen Zahlen (Konstanten) ist als Festkommazahl (mit Angabe des Dezimalpunktes) oder in Exponentialdarstellung möglich. Der Wertebereich bewegt sich zwischen "-10E308" und "10E308". Wird eine für integer gebräuchliche Notation gewählt, so wird dem Symbol der Typ integer zugewiesen. Da das System bei Bedarf automatisch eine notwendige Konversion von integer nach real vornimmt, kann eine solche Zahl auch im Gleitkommaformat ausgegeben werden.

Beispiel 6: real.aql
PROGRAMM: real = 0xffffff; [real;;f2] nl (1) real = 1.11111111111e11; ‘fixed:‘[real;12;f0] ‘ standard:‘[real] nl (2) real = 1.1111111111; ‘fixed:‘[real;12;f0] ‘ standard:‘[real] nl (3) ‘fixed:‘[real;-12;f10]‘ g: ‘[real;;g] nl (4) AUSGABE:
(1) 16777215 (2) fixed:111111111111 standard:1.111111e+11 (3) fixed: 1 standard:1.111111 (4) fixed:1.1111111111 g: 1.111111

Symboltyp: group

Eine Gruppe Symbole kann verschiedene Typen (auch Gruppen) enthalten, da der Typ eines Symbols (Objekts) erst dann relevant ist, wenn sein Inhalt bearbeitet wird.

Beispiel 7: group.aql PROGRAMM:
group = { 1, 22, 333} ‘group: ‘[group] nl (1) group = { "a", "bb", "ccc" } ‘group: ‘[group] nl (2) group = { false, 1, 2.2, "drei", group} ‘group: ‘[group] nl (3) log = true; int = 0xFF; real= 1.4 str = "str" group = { log, int, real, str, nl, group } ‘group : ‘[group] nl (4) ‘group.first: ‘[group.first] nl (5) ‘group.tail : ‘[group.tail] nl (6) ‘group : ‘[group;2;2] nl (7)
AUSGABE: (1) group: { 1, 22, 333 } (2) group: { a, bb, ccc } (3) group: { false, 1, 2.2, drei, { a bb ccc } } (4) group : { true, 255, 1.4, str { false, 1, 2.2, drei, { a, bb, ccc } } } (5) group.first: true (6) group.tail : { 255, 1.4, str { false, 1, 2.2, drei, { a, bb, ccc } } } (7) group : { tr, 255, 1.4, st { fa, 01, 2.2, dr, { a, bb, cc } } }

Symboltyp: date

Symbole dieses Typs werden mit der AQL-Funktion date belegt (siehe Kapitel "Datumsfunktion – date" auf Seite 5-3).

Beispiel 8: date.aql
PROGRAMM: heute = date(); 'Erstellt: '[heute] nl
AUSGABE: Erstellt: Thu Feb 16 18:41:21 2006

◀ Formatierung der Ausgabe Ausdrücke ▶


Kontakt Impressum Datenschutz