5. Sprachelemente / Operatoren | ||||||||||
|
||||||||||
5.1 Sprachelemente | ||||||||||
5.1.1 Namen
Namen werden durch Bezeichner dargestellt und können für verschiedene Objekte vergeben werden. z.B. für: - Variablen, - Pakete, - Unterprogramme - Prozesse und aller Arten von Eingangsaufrufen - Zeiger, - Objekte und ihrer Komponenten und Ausschnitten , - Objekte im Sinne der OOP, - Attribute Namen können dabei direkte Namen und Zeiger sein: Beispiele für direkte Namen:
Beispiel für Zeiger:
Darüber hinaus gibt es Namen, die ein Präfix (prefix <BNF>) haben, das selbst ein Name oder Zeiger auf einen Namen ist. Eine indizierte Komponente bezeichnet - eine Komponente einer Reihung (Feld) oder - einen Eingangsaufruf an eine Eingangsfamilie (siehe Prozesse). Indizierte Komponenten bestehen aus einem Präfix, also einem Namen, und einem beliebig komplexen Ausdruck in runden Klammern.(indexed_component <BNF>) Wenn es sich bei dem Präfix um einen Reihungstyp handelt, dann muß innerhalb der Klammern die gleiche Anzahl Ausdrücke stehen, wie die Reihung Indexpositionen hat. Eine zweidimensionale Reihung (z. B. eine Matrix) hat zwei Indexpositionen, somit müssen zwei Ausdrücke in den Klammern stehen. Die indizierte Komponente bezieht sich auf die Komponente in der Reihung mit den angegebenen Indexwerten und muß auch den Typ dieser Komponente haben. Beispiel:
Wenn das Präfix eine Familie von Eingangsaufrufen darstellt, darf nur ein Ausdruck innerhalb der Klammern stehen, weil eine Familie von Eingangsaufrufen nur eine eindimensionale Reihung sein darf. Die indizierte Komponente bezeichnet den Eingangsaufruf mit dem angegebenen Index. Wenn auf eine Reihung mittels Zeiger zugegriffen wird, so muß keine Zeigerdereferenzierung mit ".all" angegeben werden.zierung mit ".all" angegeben werden. Selektierte Komponenten werden verwendet, um Eingänge, Familien von Eingängen, geschützte Unterprogramme, Komponenten aus Verbunden und Zielobjekte von Zugriffstypen zu identifizieren. Sie werden auch bei erweiterten Namen verwendet. (selected_component <BNF>) Eine selektierte Komponente ist ein erweiterter Name, wenn das Präfix dazu dient, die Herkunft einer Komponente zu spezifizieren. Beispiel:
Eine selektierte Komponente, die kein erweiterter Name ist, ist entweder ein Objekt oder ein Wert eines zusammengesetzen Typs (z. B. Verbunde) oder ein Eingangsaufruf, eine Familie von Eingangsaufrufen oder ein geschütztes Unterprogramm. Beispiel:
Wenn auf eine selektierte Komponente mittels Zeiger zugegriffen wird, so muß keine Zeigerdereferenzierung mit ".all" angegeben werden. Ein Ausschnitt ist ein Teilstück einer eindimensionalen Reihung und ist selbst wieder eine eindimensionale Reihung. Hierdurch können Teile einer Reihung oder einer Zeichenkette kopiert werden. (slice <BNF>) Das Präfix kann von jedem beliebigen Reihungstyp sein. Das Ziel der Zuweisung muß aber vom gleichen übergeordneten Reihungstyp sein wie das Präfix. Ein Ausschnitt aus einer Reihung mit Zeichen kann also nicht einer Reihung von Zahlen zugewiesen werden. Ein diskreter Bereich (discrete_range <BNF>) ist eine ganzzahlige Bereichsangabe, die im Definitionsbereich der entsprechenden Reihung liegen muß. Selbst wenn ein Ausschnitt nur aus einem Element besteht, ist der Ausschnitt eine Reihung, so daß das Ziel der Zuweisung auch eine Reihung sein muß. Beispiel 1:
Beispiel 2:
Beispiel 3:
Attribute sind Eigenschaften von Objekten und Typen und liefern Informationen über Wertebereiche und Speicheradressen und über einige andere Eigenschaften von Objekten. Es gibt aber auch Attribute, die Funktionen sind und z. B. dazu dienen, Werte zu konvertieren, z. B. Zahlen in Zeichenketten. (attribute_reference <BNF>) Das Präfix kann entweder eine Variable oder aber ein Typ sein. Dieses ist abhängig von der Art des jeweiligen Attributs. Attribute beziehen sich auf Werte, Objekte, Unterprogramme oder eine andere Art von Programmobjekt. Der Ausdruck in den Klammern des Attribut-Bezeichners muß (sofern vorhanden) ein diskreter Typ sein. Eine vollständige Liste der Attribute ist in der Anlage K des LRM enthalten. Beispiel:
Wenn auf ein Objekt, dessen Attribut erfragt werden soll, mittels Zeiger zugegriffen wird, so muß keine Zeigerdereferenzierung mit ".all" angegeben werden. Anhand des Namens läßt sich nicht erkennen, um welche Art von Programmobjekt es sich handelt. Ein Programmierer sollte darauf achten, Namen zu verwenden, durch die die Art des Objekts erkenntlich ist. So kann z. B. ein Unterprogrammname immer den Aufbau einer Aufforderung oder eines Befehls haben, für Funktionen bieten sich auch Verben an. Diese Art der Namensgebung sollte vor Projektbeginn festgelegt und dann konsequent angewendet werden. |
||||||||||
|