compiler für eine c-ähnliche sprache.
#lade "W:/sss/data/expr.sss";
Vec3 :: struktur {
x, y, z : n32;
}
master :: proc() -> n32 {
a : g32 = 5;
b : n32;
c : [3][3] n32;
v : Vec3;
wenn a < 10 {
test(*v.y);
} sonst {
res 33;
}
b = index(1);
c[index(2)][b] = 15;
res c[2][b];
}
test :: proc(x : *n32) {
@x = 25;
}
index :: proc(i : n32) -> n32 {
wenn i == 1 {
res 1;
} sonst {
res 2;
}
}
die gesamte ausführung geschieht aktuell auf basis des selbsterzeugten, x64-ähnlichen, bytecode und einer vm.
derzeit werden folgende konstrukte, anweisungen, direktiven und ausdrücke unsterstützt.
- datenstrukturen (structs)
- globale variablen
- prozeduren
- prozeduraufrufe
- bedingte ausführungen
- schleifen
- mathematische ausdrücke
das beispiel1.sss wird zum bytecode transformiert und ausgeführt, das in beispiel1.asm
natürliche zahlen sind positive, ganze zahlen angefangen bei 0. diese menge wird durch die spracheigenen datentypen n8
, n16
, n32
und n64
repräsentiert.
ganze zahlen sind positive und negative ganze zahlen. diese menge wird durch die spracheigenen datentypen g8
, g16
, g32
und g64
repräsentiert.
rationale zahlen sind alle zahlen, die einen quotienten zweier ganzer zahlen abbilden. diese menge wird durch die spracheigenen datentypen r32
und r64
repräsentiert.