In der
User Language sind die Wortklassen Zwischenraum, Identifier, Konstante, reserviertes Wort und Operator definiert.
2.2.1 Zwischenraum
Unter die Wortklasse Zwischenraum fallen sowohl Leerstellen, Tabulatorzeichen, Zeilentrenner als auch Kommentare. Kommentare beginnen mit den Zeichen
/* und enden mit
*/ ; diese Kommentare dürfen nicht verschachtelt sein. Ein weiterer Typ von Kommentar beginnt mit den Zeichen
// und erstreckt sich bis zum Zeilenende. Der
User Language Compiler wertet Zwischenräume lediglich zur Trennung direkt benachbarter Identifier und reservierter Worte aus; ansonsten werden alle Zwischenräume ignoriert.
2.2.2 Identifier
Ein Identifier ist der Name einer Variablen, einer Funktion oder einer symbolischen Konstanten. Jeder Identifier darf aus einer Folge von Buchstaben und Ziffern bestehen, wobei das erste Zeichen immer ein Buchstabe sein muss. Der Unterstrich
(_ ) zählt dabei zu den Buchstaben. Der
User Language Compiler unterscheidet bei der Auswertung von Identifiern zwischen Groß- und Kleinbuchstaben. Es besteht die Einschränkung, dass Identifier nicht mit reservierten Worten (siehe unten) identisch sein dürfen.
Beispiele:
X_coord value P4 File_Name _euklid
2.2.3 Konstanten und konstante Ausdrücke
Nachfolgend sind die in der
User Language definierten Konstanten beschrieben. Jeder Konstanten-Typ ist zugleich auch einem Datentyp zugeordnet.
Ganzzahlige Konstanten
Ganzzahlige Konstanten sind dem Datentyp
int zugeordnet. Sie bestehen aus einer Folge von Ziffern und werden üblicherweise dezimal interpretiert. Falls die Ziffernfolge mit
0 (Ziffer Null) beginnt, wird sie oktal, d.h. in Basis 8 interpretiert (die Ziffern 8 und 9 sind in diesem Fall nicht zulässig). Beginnt die Ziffernfolge mit
0x bzw.
0X (Ziffer Null, Buchstabe x), dann wird sie hexadezimal, d.h. in Basis 16 interpretiert, wobei dann die Buchstaben
a bis
f bzw.
A bis
F als hexadezimale Ziffern mit den Werten 10 bis 15 gelten. Ganzzahlige negative Konstanten gibt es nicht; vielmehr stellt das Minus-Zeichen einen Operator dar, der in Verbindung mit einer ganzzahligen Konstante einen konstanten Ausdruck (siehe unten) bildet.
Beispiele:
1432 073 0xF4A5 9
Gleitkomma-Konstanten
Gleitkomma-Konstanten sind dem Datentyp
double zugeordnet. Sie bestehen aus einem ganzzahligen Teil, einem Dezimalpunkt, einem Dezimalbruch, dem Zeichen
e bzw.
E (Buchstabe
e ) und einem ganzzahligen Exponenten mit optionalem Vorzeichen. Ganzzahliger Teil, Dezimalbruch sowie Exponent sind dabei Ziffernfolgen. Genau einer der Teile vor oder nach dem Dezimalpunkt
(. ) darf fehlen; entweder der Dezimalpunkt oder der Exponent beginnend mit dem Buchstaben e darf fehlen.
Beispiele:
2.54 .78 4. 4.1508E-3 0.81037e6 17228E5
Zeichen-Konstanten
Zeichen-Konstanten sind dem Datentyp
char zugeordnet. Sie bestehen aus einem einzelnen, in einfache Anführungsstriche (Apostroph) eingeschlossenen Zeichen. Der Wert dieser Konstante ist der numerische Wert des Zeichens im Zeichensatz der Maschine, auf der das
User Language-Programm ausgeführt wird.
Tabelle 2-1 enthält eine Liste von Sonderzeichen-Darstellungen mit Hilfe des Fluchtsymbols
\ (Backslash).
Tabelle 2-1: Darstellung von Sonderzeichen
Rückwärtsschritt | BS | \b |
Horizontal Tabulator | HT | \t |
Zeilenvorschub | LF | \n |
Seitenvorschub | FF | \f |
Wagenrücklauf | CR | \r |
Fluchtsymbol | \ | \\ |
Apostroph | ' | \' |
Nullzeichen | NUL | \0 |
Beliebige Bitmuster können durch die Angabe des Fluchtsymbols, gefolgt von bis zu drei oktalen Ziffern spezifiziert werden. Ein Spezialfall dieser Konstruktion ist das Nullzeichen (NUL,
\0 ).
Zeichenketten-Konstanten
Zeichenketten-Konstanten (oder auch String-Konstanten) sind dem Datentyp
string zugeordnet. Sie bestehen aus einer Folge von Zeichen umgeben von Doppel-Anführungsstrichen. Der Compiler legt ein NUL Zeichen (\0 ) am Ende der String-Konstanten ab, damit der Interpreter das Ende des konstanten Strings finden kann. Bei der Spezifikation von String-Konstanten muss auch der Doppel-Anführungsstrich mit einem Fluchtsymbol angegeben werden. Daneben existieren dieselben Fluchtsymbol Kombinationen wie für die Zeichen-Konstanten.
Beispiele:
"IC1" "4.8 kOhm" "This is a string with Newline\n"
Konstante Ausdrücke
Ein konstanter Ausdruck ist ein Ausdruck, der nur aus konstanten Werten und Operatoren zusammengesetzt ist. Solche Ausdrücke werden bereits vom Compiler bewertet (CEE, Constant Expression Evaluation) und müssen somit nicht erst zur Laufzeit durch den Interpreter berechnet werden. Dies bedeutet, dass, wo immer Konstanten benötigt werden, statt dessen auch entsprechende konstante Ausdrücke verwendet werden können, ohne dass sich dadurch Nachteile hinsichtlich der Programmgröße oder der Programmlaufzeit ergeben.
Beispiele:
int i=19-(010+0x10); CEE: int i=-5;
double d=-(4.7+2*16.3); CEE: double d=-37.3;
string s="Part"+' '+"IC1"; CEE: string s="Part IC1";
2.2.4 Terminalzeichen-Sequenzen
Reservierte Worte
Tabelle 2-2 enthält die Liste der Identifier, die in der
Bartels User Language als Schlüsselwörter reserviert sind. Diese Identifier dürfen nur in ihrer vordefinierten Bedeutung verwendet werden:
Tabelle 2-2: Reservierte Worte
#bnf |
#define |
#else |
#endif |
#if |
#ifdef |
#ifndef |
#include |
#undef |
break |
case |
char |
continue |
default |
do |
double |
else |
for |
forall |
if |
index |
int |
of |
return |
static |
string |
struct |
switch |
typedef |
void |
where |
while |
Operatoren
Die in
Tabelle 2-3 aufgeführten Zeichen(-Sequenzen) sind in der
Bartels User Language als Operatoren definiert und lösen je nach Kontext spezielle Aktionen aus:
Tabelle 2-3: Operatoren
! |
!= |
% |
%= |
& |
&& |
&= |
( |
) |
* |
*= |
+ |
++ |
+= |
, |
- |
-- |
-= |
. |
/ |
/= |
: |
; |
< |
<< |
<<= |
<= |
= |
== |
> |
>= |
>> |
>>= |
? |
[ |
] |
^ |
^= |
{ |
| |
|= |
|| |
} |
~ |
Konventionen © 1985-2024 Oliver Bartels F+E • Aktualisiert: 05. December 2006, 16:54 [UTC]
|