Kurs:Programmieren in Aleph/Sprachschatz

Ein- und Ausgabe

Bearbeiten

Commands zur Aus- und Eingabe. Hier aufgeführt sind auch elementare Commands zur Hilfestellung bei der Programmentwicklung.

Command Stacksituation(en) Beschreibung
showDef command --> Compilierten Code des commands in der V2M-Form anzeigen.
.S Gibt den Inhalt des Stacks nicht konsumierend aus.
commands Inhalt des Dictionaries ausgeben.
typ object --> string Typ (Java) von object ermitteln und als string auf dem Stack ablegen.
newline --> "\n" Legt den Zeilenumbruch auf dem Stack ab.
. (dot) object --> Gibt object in möglichst lesbarer Form aus.
load string --> Nimmt die Datei mit der Bezeichnung string als aktuellen Eingabestrom. Kehrt hinterher zum ursprünglichen Strom zurück.
word --> true string
--> false
Liest die nächste nicht leere Zeichenfolge aus dem Eingabestrom und legt sie als String auf den Stack.


Binäre arithmetische Operatoren

Bearbeiten

Einige dieser Operatoren sind auch für andere "Typen" (Booleans, Strings) definiert, bzw. etabliert.

Command Stacksituation(en) Beschreibung
/ num1 num2 --> num Legt den Quotienten num1/num2 auf den Stack.
* num1 num2 --> num
flg1 flg2 --> flg
Legt das Produkt num1*num2 oder die boolesche Konjunktion von flg1, flg2 auf den Stack.
- num1 num2 --> num Legt die Differenz num1-num2 auf den Stack.
+ num1 num2 --> num
str1 str2 --> str
Legt die Summe num1+num2 oder die concatenation von str1. str2 auf den Stack.


Relationen oder Vergleichsoperatoren

Bearbeiten

Auch das letzte Command ist eine binäre Operation, denn der Vergleich erfolgt auf "null". Bei einigen Relationen sind auch andere "Typen" als numerische definiert. In der Stacksituation sind die zulässigen "Typen" aufgeführt.

Oft wird vergessen, dass Relationen durchaus als boolesche Operationen angesehen werden können. So ist das Ergebnis einer "Implikation" deshalb identisch mit dem eines Vergleichs auf "kleiner oder gleich", weil es sich um dieselbe Operation handelt.

Command Stacksituation(en) Beschreibung
<> num1 num2 --> flg

flg1 flg2 --> flg
str1 str2 --> flg
chr1 chr1 --> flg

Legt true ab wenn obj1 ungleich obj2, sonst false.
< num1 num2 --> flg

flg1 flg2 --> flg
chr1 chr1 --> flg

Legt true ab wenn obj1 kleiner obj2, sonst false.
>= num1 num2 --> flg

flg1 flg2 --> flg
chr1 chr1 --> flg

Legt true ab wenn obj1 größer oder gleich obj2, sonst false.
> num1 num2 --> flg

flg1 flg2 --> flg
chr1 chr1 --> flg

Legt true ab wenn obj1 größer obj2, sonst false.
<= num1 num2 --> flg

flg1 flg2 --> flg
chr1 chr1 --> flg

Legt true ab wenn obj1 kleiner oder gleich obj2, sonst false.
= num1 num2 --> flg

flg1 flg2 --> flg
str1 str2 --> flg
chr1 chr1 --> flg

Legt true ab wenn obj1 gleich obj2, sonst false.
?null obj --> flg Legt true ab wenn obj ein null-Objekt ist true, sonst false.

Logische Operatoren

Bearbeiten

Diese Commands sind sowohl für boolean als auch für ganzzahlige Objekte (hier allgemein int) definiert.

Command Stacksituation(en) Beschreibung
and int1 int2 --> int

flg1 flg2 --> flg

Legt die bitweise Konjunktion der integer Objekte oder die Konjunktion der boolean Objekte auf den Stack.
or int1 int2 --> int

flg1 flg2 --> flg

Legt die bitweise Disjunktion der integer Objekte oder die Konjunktion der boolean Objekte auf den Stack.
not int --> int

flg --> flg

Legt das 1er Komplement des integer Objekts oder die Negation des boolean Objekts auf den Stack.

Steuerung des Ablaufs

Bearbeiten

Diese Commands nehmen Einfluß auf den Ablauf der Verarbeitung von Sequenzen.

Command Stacksituation(en) Beschreibung
exit Verlässt das laufende Command sofort.
endloop Ende einer Schleife. Kehrt an den Anfang zurück.
leave flg --> Verlässt eine Schleife, wenn true auf dem Stack liegt. Sonst wird beim folgende Command fortgefahren.
loop Anfang einer Schleife.
endif Ende einer if ... [else ...] Anweisung.
else Anweisungen bis endif ausführen.
if flg --> Wenn true auf dem Stack liegt, Anweisungen bis else oder endif ausführen.


Erweiternde oder Creative Commands

Bearbeiten

Diese Commands erweitern oder vermindern den Wortschatz, Compilieren Sequenzen oder haben beziehen sich auf Aleph-Variablen.

Command Stacksituation(en) Beschreibung
free string --> Variable mit der Bezeichnung string von jeder Bindung befreien.
is string object --> Variable mit der Bezeichnung string an object binden.
variable string --> Neue, ungebundene Variable mit der Bezeichnung string erstellen.
forget command --> Entfernt alle Commands und die Einträge im Dictionary ab command einschließlich
bind Verbindet die compilierte Sequenz mit dem letzten Eintrag im Dictionary.
compile command --> Compiliert das command ans Ende der Sequenz. Ist keine Sequenz vorhanden, ist command das erste.
entry string --> Neuen Eintrag mit der Bezeichnung string im Dictionary machen.


Manipulation des Stacks

Bearbeiten

Diese Commands ändern die Situation auf dem Stack durch Umverteilung der vorhandenen Elemente.

Command Stacksituation(en) Beschreibung
nswap obj1 ... objn --> objn ... obj1 Das n_te Element (0 = TOS) mit dem obersten auf dem Stack vertauschen.
ndup obj1 obj2 ... objn--> objn obj1 obj2 Das n_te Element (0 = TOS) duplizieren und zuoberst auf dem Stack ablegen.
ndrop obj1 ... objn --> obj1 ... Das n_te Element (0 = TOS) vom Stack entfernen.
swap obj1 obj2 --> obj2 obj1 Die beiden obersten Elemente auf dem Stack vertauschen.
dup obj --> obj obj Oberstes Element auf dem Stack duplizieren.
drop obj --> Oberstes Element vom Stack entfernen.

Aleph und Java

Bearbeiten

Commands zur Verbindung von Aleph und Java. Diese Commands gestatten die Verwendung aller Komponenten aus Java. Es ist erforderlich die benötigten Klassen zu importieren.

Command Stacksituation(en) Beschreibung
set string obj --> In das (V2M) Field mit der Bezeichnung string wird obj gespeichert. Ähnlich dem Command is bei Variablen.
field string instance --> Macht das field mit der Bezeichnung string aus instance der V2M zugänglich. Der Command-Name ist durch die nächste Zeichenkette bestimmt. Das Verhalten entspricht dem einer Variablen.
method instance string --> method Macht die Methode mit der Bezeichnung string ausinstance der V2M zugänglich. Der Command-Name ist durch die nächste Zeichenkette bestimmt. Das Verhalten entspricht dem eines Commands.
call string instance --> [ obj ... ] Methode mit der Bezeichnung string in der instance ausführen. Die Rückgabe der Methode wird auf dem Stack abgelegt, wenn nicht void. Das Verhalten ist dem von execute ähnlich.
fetch string instance --> obj Inhalt des fields mit der Bezeichnung string in instance auf dem Stack ablegen.
store string instance obj --> Das Objekt obj in das field mit der Bezeichnung string im instance speichern.
build creator --> instance Ruft die Creator-Methode auf dem Stack auf und legt die instance auf dem Stack ab.
creator string class --> creator Legt die Creator-Methode mit der Bezeichnung string der Klasse class auf dem Stack ab.
instantiate class --> instance Erzeugt eine Instanz der Klasse class und legt sie auf den Stack.
classify string --> class Legt die über string spezifizierte Klasse auf den Stack.

Typecasting

Bearbeiten

Commands zur Änderung der umgebenden Zahlenmenge. In herkömmlichen Sprachen "Typecasting" genannt. Weil Aleph keine Typen kennt, der Hinweis auf die relevante Zahlenmenge. Mathematisch besteht natürlich nur die Wahl zwischen Teilmengen aus ganzen oer rationalen Zahlen. Auf diese Feinheiten soll aber hier nicht näher eingegangen werden.

Command Stacksituation(en) Beschreibung
(double) num --> double Wandelt den Inhalt des numerische Symbols beliebigen Typs in den Java-Typ double.
(float) num --> float Wandelt den Inhalt des numerische Symbols beliebigen Typs in den Java-Typ float.
(long) num --> long Wandelt den Inhalt des numerische Symbols beliebigen Typs in den Java-Typ long.
(int) num --> int Wandelt den Inhalt des numerische Symbols beliebigen Typs in den Java-Typ int.
(short) num --> short Wandelt den Inhalt des numerische Symbols beliebigen Typs in den Java-Typ short.
(byte) num --> byte Wandelt den Inhalt des numerische Symbols beliebigen Typs in den Java-Typ byte.


Weitere Commands

Bearbeiten

Diese Commands können keiner zusammenfassenden Aufstellung zugeordnet werden.

Command Stacksituation(en) Beschreibung
execute command --> [ obj ... ] Command auf dem Stack ausführen. Es kann Objekte auf dem Stack ablegen.
find string --> true command

string --> false

Eintrag string im Dictionary suchen. Wenn gefunden, wird das Command und ein true auf dem Stack abgelegt, sonst false.
symbol string --> true symbol

string --> false

Wenn string ein Aleph-Symbol sein könnte, dann das Symbol und true auf dem Stack ablegen, sonst false.
environment --> v2m Die virtuelle Maschine V2M als Instanz ihrerselbst auf dem Stack ablegen.