Umstieg zu JayMo / Für Programmierer

Für Programmierer

Diese Seite ist für alle Leser mit Programmier-Erfahrung und soll einen schnellen Überblick über die Sprache vermitteln.

Wichtig zu verstehen ist, dass es in JayMo nur Objekte gibt, welche Funktionen, Ereignissen, Eigenschaften und Konstanten besitzen. Vermeintliche "Schlüsselwörter" wie "If" oder "For" sind somit ebenso "nur" Objekte, wenn auch mit besonderen Fähigkeiten (Steuer-Objekte).

JayMo wird relativ schlank geschrieben, weshalb geschweifte Klammern für Blöcke und ein Semikolon als Zeilenabschluss entfallen.

Die Datei-Endung für JayMo-Dateien ist: ".jmo"

Wichtige Atomare Typen

Art Typ Schreibweise
Wahr-Werte Bool
true
false
Ganzzahlen Int
123
Dezimalzahlen Dec
123.456
Zeichen Char
'a'
Text Str
"Foo"
Nichts Nil
nil

Kommentare

Art Schreibweise
Zeile
# Zeilen-Kommentar
Block
/* Block
Kommentar */
Alles nachfolgende
#**#

Variablen

Variablen
abcDef = 12 + 34
Konstanten
GHI_JKL = "foo"

Eine Variable merkt sich den ersten zugewiesenen Typ.
Typ-Angaben sind optional möglich:

Int abcDef = 12 + 34

Objekt erzeugen

Ein neues Objekt wird von einem Typ instanziiert, in dem der Typ-Name ausgeschrieben wird:

Random

Eine von einem Typ abgeleitete Objekt-Instanz wird in dieser Dokumentation vereinfacht als Objekt bezeichnet.

Funktionen

  Mathematische Alphanumerische
Punkt entfällt wird benötigt
Prioritäten Unterschiedlich Immer höchste Priorität
Beispiel
5 + 5
5.print

Befehlsketten

Als Ausgangsbasis dient immer ein Objekt. Funktionen können aneinander gereiht werden:

123.echo.echo.echo.print

Gruppieren mit Klammern:

(( 2 + 3 ) * 4 ).print

Mehrere Befehle in einer Zeile werden mit einem Semikolon getrennt:

3.print; 9.print

Standard-Ausgabe

Für die Ausgabe zu StdOut existieren mehrere Möglichkeiten:

Zeilenumbruch JayMo-Classic JayMo-Flow
nein
Echo 123
123.echo
ja
Print 123
123.print

Offenes Argument

Folgt nach dem Typnamen ein Leerzeichen, so wird alles Nachfolgende als einzelnes Argument beim Erzeugen übergeben.

Somit sind folgende zwei Versionen möglich und identisch:

Print "foo"
Print( "foo" )

Für Argumente oder bei einem nachfolgenden Block müssen Klammern verwendet werden.

Blöcke & Stream

Ein Block wird mit einem Tabulator eingerückt und so der vorherigen Funktion oder dem vorherigen Objekt zugeordnet.

Als "Stream" werden angehängte Funktionen bezeichnet. Diese können sich auch unterhalb, jedoch auf der selben Ebene, befinden.

Hier bei "If" werden Block und Stream verwendet:

If( a > 3)
	Print "abc"
.else
	Print "def"

Eigene Funktionen

Definitionen werden immer mit zwei Doppelpunkten eingeleitet.

Typ-Angaben sind optional, können aber erzwungen werden.

Definition ohne Parameter:

::myFunc
	Print 123

Definition einzeilig mit zwei Parametern:

::mySum( a, b ) = a + b

Definition mit Typen, Vorgabe-Werten und variabler Argument-Anzahl

::myTest( Int a = 12, Int b = 34, Char c... )
	Str s = "" + (a+b)
	Each( c )
		s += it
	Return s

Aufruf:

this.myFunc
this.mySum( 123, 345 )
this.myTest
this.myTest(56)
this.myTest(56, 78)
this.myTest(56, 78, 'h', 'e', 'l', 'l', 'o')

Eigene Typen

Objekt-Typen (Klassen) bilden den "Bauplan" für Objekt-Instanzen (Objekte).

Die Parameter werden identisch zu Funktionen definiert.

Definition:

::MyType( Bool b )
	::show
		Print b

Erzeugen und eine Objekt-Funktion aufrufen:

MyType( true ).show
- Powered by OghsWiki -

 

 

Unterstützen

Die Entwicklung von "JayMo" wird derzeit nur durch Eigeninitiative ermöglicht.

Erhalten:  0 €