====== Aufbau von Deklarationen ======
bisher:
int i;
float f;
code( int; int s1, int s2 ) add : s1+s2;
Die Überlegung war, den Namen für die Lesbarkeit nach vorne zu ziehen. Mit is könnte eine öffentliche Ableitung beschrieben sein.
i as int;
f as float;
add( int s1, s2 ) as int;
twoResults( int id ) as ( left, right as int );
Ein Name soll ja mehrfach nutzbar sein:
pi as float const( 3.14 ),
as double const( 3.1415 );
Hiermit wäre pi eine Ableitung von float und double mit jeweils den Werten 3.14 bzw. 3.1415 für höhere Präzision.
Gleichzeitig wäre pi ein Typ, der eine Ableitung dieser beiden Konstanten darstellt.
Hier lässt sich hoffentlich das Konzept von Mehrfachableitung, Überladung und Konstanten in unterschiedlichen Typen überein bringen.
Weiterhin können wir evtl. auf das allgemeine Abfrageobjekt (Typ, Wert, Fehlercode) verzichten.
operator + (int s1, s2 ) as int : s1 + s2,
as float : s1 + s2,
as double : s1 + s2;
as type : typeof( int ),
as bool : (s1+s2) != 0,
as error : success,
as complex( s1+s2, 0 ); // kein imaginärer Teil
overload bzw. overwrite fügen Funktionalität an, bzw. überschrieben sie.
Klassen sind entsprechend:
Person contains
{
Name as string;
Alter as int;
}
Mitarbeiter
is Person
contains
{
Mitarbeiternummer as int;
}
Eine Vielzahl sollte geklammert werden können:
Person
[as public class] // Optional, sonst default
contains
{
as protected string:
Name,
Vorname,
Strasse,
Ort
Land;
as protected int:
Hausnummer,
Postleitzahl
}