Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
//Kommentare werden wie in C/C++ gehandhabt /*also auch diese Mehrzeilenkommentare sind erlaubt*/ /* Programme sind nicht gespalten in Funktionen sondern in Modulen (was hier dasselbe ist), damit man sie leichter von den registrierten Funktionen aus C++ unterscheiden kann. */ //Ein Befehl ist unterteilt in Funktionsgruppenname, Funktionsname und (optional) Parameter main { //Eckige Klammer bedeuten numerische Variablen system.alloc [counter] system.alloc [isNowEnd] //Zuerst schiebe ich eine numerische Konstante (hier 1) auf den Parameterstack system.push 1 /*dann bewirkt der system.set Befehl, dass der letzte Eintrag vom Parameterstack genommen wird und auf den Eintrag, der im Parameter angegeben ist, kopiert wird. Wenn man etwas auf den Parameterstack schiebt wird der Wert gespeichert, Variablen können nur als Parameter eines Befehls geändert werden.*/ system.set [counter] //Das ist eine Sprungmarke (sollte aus C bekannt sein?), denn man muss Schleifen selber implementieren LoopStart: //Zuerst schreibe ich den aktuellen Wert des Zählers und beende die Zeile console.println [counter] /*Eine mathematische Operation macht man, indem man die zwei Operanten auf den Stack schiebt und die Zielvariable mit dem entsprechenden Befehl aus der "math" Gruppe aufruft. */ system.push [counter] system.push 1 math.add [counter] //genauso funktionieren logische Operationen wie diese, um den Zähler zu überprüfen system.push [counter] //Spitze Klammern signalisieren Ressourcenvariablen (vergleichbar mit Konstanten) system.push <counterEnd> logical.equal [isNowEnd] //also wenn counter==11 dann isNowEnd=1 ansonsten isNowEnd=0 //und wenn wir weit genug gezählt haben, können wir das Zurückspringen zu "LoopStart" überspringen /*BEACHTE: Sprungmarken genau wie alle anderen Namen (außer Modulnamen) existieren nur im Quellcode, der Compiler ersetzt diese durch entsprechende Zahlen also hier die Zeilennummer vor der Sprungmarke*/ system.skip [isNowEnd] system.jump “LoopStart” //Vergiss nicht die Variablen wieder freizugeben! system.free [counter] system.free [isNowEnd] } //Eine Ressourcenvariablen kann wie alle Variablen entweder eine Nummer oder ein Text sein //Und noch etwas: Wenn du # vor eine Zahl setzt wird sie als hexadezimale Zahl interpretiert //Also ist diese Ressource dezimal 11 ressource counterEnd #b |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Helco« (09.10.2012, 19:40)
Administrator
Zitat
Parsec is an industrial strength, monadic parser combinator library for Haskell. It can parse context-sensitive, infinite look-ahead grammars but it performs best on predictive (LL[1]) grammars.
Werbeanzeige