1.5) Grammatik / Regeln

Für JM° existieren klare Regeln, die sich durch die ganze Sprache ziehen.

 

ArtBeispielRegexBeginnGefolgt von
Variablen abc [a-z][A-Za-z0-9_]* Kleinbuchstabe Klein-, Großbuchstaben, Zahlen, Unterstrich
Konstanten ABC [A-Z][A-Z0-9_]* Großbuchstabe Großbuchstaben, Zahlen, Unterstrich
Magische Konstanten _ABC _[A-Z][A-Z0-9_]* Unterstrich Großbuchstaben, Zahlen, Unterstrich
Funktionen doThis [a-z][A-Za-z0-9_]* Kleinbuchstabe Klein-, Großbuchstaben, Zahlen, Unterstrich
Typen MyType [A-Z][A-Za-z0-9_]* Großbuchstabe Klein-, Großbuchstaben, Zahlen, Unterstrich
Event @changed @[a-z][A-Za-z0-9_]* @ und Kleinbuchstabe Klein-, Großbuchstaben, Zahlen, Unterstrich

 

Allgemeine Regeln:

  • Ausgangspunkt ist immer ein Objekt, für welches danach verschiedene Funktionen aufgerufen werden können.
  • Definitionen werden mit einem Doppelpunkt ':' eingeleitet.
  • Für jede Vereinfachung und Abkürzung gibt es eine ausführliche Entsprechung.
  • Parameter werden innerhalb von Klammern übergeben, mehrere Parameter werden mit Komma getrennt. Bei mathematischen Funktionen ist nur maximal ein Parameter erlaubt, Klammer und führender Punkt können hier entfallen.

Regeln für Funktionen

  • Funktionen geben immer ein Objekt, sich selbst oder Nil (was auch ein Objekt ist) zurück.
  • Jede Funktion mit einem mathematischen Zeichen hat eine alphanumerische Entsprechung: = und .equals, < und .isLess, + und .add, ...
  • Alphanumerische Funktionen haben die höchste Priorität (z.B.: ".reverse")
  • Funktionen können ein oder mehrere Alias haben (equals, isEqual, !=, <>)
  • Funktionen können einen Block oder/und einen Stream (nachfolgende Funktion) haben.
  • Nur eine Aufgabe und ein Rückgabetyp je Funktionsname!