3.7 - Die Syntax: Ein Wesen der dritten Art
Syntax. Noch so eine Fachsimpelei. Ein Wort das direkt aus einer chinesischen Buchstabensuppe zu stammen scheint. In Wirklichkeit ist es ganz simpel. Die Syntax ist ein System von Regeln die eingehalten werden müssen, damit der Parser deinen geschriebenen Makro-Code auch verstehen und richtig umsetzen kann.
Ein paar dieser Regeln kennst du schon, z. B. dass Code immer in eckigen Klammern stehen muss, oder dass Text im Code immer in doppelte Anführungszeichen eingeschlossen werden muss. Weitere Regeln lernst du später. Für den Moment wollen wir uns aber noch folgende Dinge anschauen:
Geschweifte Klammern {}
Das Code immer in eckigen Klammern stehen muss, ist ehrlich gesagt nicht ganz richtig, du kannst Code nämlich auch in geschweiften Klammern schreiben. Es gibt dabei allerdings zwei wichtige Unterschiede:
1. - Wenn du Code in geschweiften Klammer schreibst, wirkt das so als ob du die Roll Option
result benutzen würdest. Es wird also immer gleich der Rückgabewert einer Funktion ausgegeben:
wirkt also genauso wie
Ein paar weitere Beispiele:
Und natürlich kannst du auch hier wieder Text und Code kombinieren:
Code: Select all
{getPlayerName()+" hat eine "+1d6+" gewuerfelt."}
Den Wert von Variablen oder Token-Properties kannst du ebenfalls auf diese Weise ausgeben. Was Variablen und Properties sind siehst du später noch. Aber hier schon mal ein Beispiel:
Code: Select all
[h: variable = "Nur ein Test."]
{variable}
2. - Wenn du geschweifte Klammern benutzt können keine weiteren Roll Options verwendet werden, sonst verursacht das einen Fehler. Hier ein Beispiel, probiere es ruhig mal aus:
Nachdem ich dir nun gezeigt habe wie man Code in geschweiften Klammern schreibt, sage ich dir: Lass es! Finger weg! Mach es nicht wenn du Alternativen hast! Machst du es doch, kann es zu Problemen bei Codeverzweigungen, Codeschleifen oder Codeverschachtelungen kommen (was das jetzt schon wieder alles ist siehst du noch früh genug). Zwar wirst du geschweifte Klammern später trotzdem benutzen, dann aber auf andere Art und Weise.
Verschachtelte Klammern
Du weißt nun, dass Code immer in eckige oder geschweifte Klammern eingeschlossen werden muss. Eine Verschachtelung dieser Klammern (abgesehen von normalen runden Klammern die ja nichts mit Code zu tun haben), ist aber nicht möglich. Folgende Beispiele funktionieren also nicht:
Bei Codeverzweigungen und gleichzeitiger Anwendung der
CODE Roll Option ist es dagegen sogar nötig, eckige und geschweifte Klammern auf eine bestimmte Art miteinander zu kombinieren. Aber das zeige ich dir wenn es soweit ist.
Zeilenumbrüche, Leerzeichen & Übersichtliche Makros
Der Parser ignoriert beim Lesen von Makros alle Zeilenumbrüche und überflüssige Leerzeichen. Das hier:
Code: Select all
[r: "Ein Affe "]
sucht eine
[r: " Banane"]
wird vom Parser also so gelesen:
Code: Select all
[r:"Ein Affe "]sucht eine[r:" Banane"]
Trotzdem solltest du in deinen Makros natürlich Zeilenumbrüche und Leerzeichen verwenden, sonst hättest du ja gar keine Übersicht mehr. Hier das Beispiel einer IF-Anweisung wie ich sie notiere (den Code musst du jetzt noch nicht verstehen):
Code: Select all
[r,if(10 < 20), code:
{
[r: "Die Zahl ist kleiner als 20"]
};
{
[r: "Die Zahl ist nicht kleiner als 20"]
}
]
Andere notieren sie vielleicht so:
Code: Select all
[r, if(10 < 20), code: {
[r: "Die Zahl ist kleiner als 20"]
};{
[r: "Die Zahl ist nicht kleiner als 20"]
}]
Ich halte die erste Variante für übersichtlicher. Aber wie du am Ende deine Makros auch schreibst, achte auf folgende Dinge:
- Halte deine Makros immer übersichtlich! Du, und auch fremde Leute die vielleicht deine Makros lesen, sollten leicht und schnell erkennen können was da vor sich geht, und wo Befehle anfangen und wieder enden.
- Hast du dich für eine bestimmte Schreibweise entschieden, behalte sie auch bei! Nichts ist verwirrender als wenn du deine Makros mal auf die eine Art und Weise schreibst, und mal auf eine andere.
Syntaxfehler
Besonders Einsteiger machen wegen fehlender Routine gerne Syntaxfehler. Dein Makro will einfach nicht funktionieren? Dann überprüfe es als erstes auf solche Fehler. Vielleicht hast du nur irgendwo eine Klammer nicht geschlossen oder ein Komma vergessen. So einfach kann das manchmal sein.