PreSpin ist ein kleiner Preprozessor für spin-Dateien. Oft ist es wünschenswert, mehrere Versionen eines Codes aus einem File generieren zu können. Leider kennt der normale Spin-Compiler keine bedingte Kompilierung, darum wurde PreSpin geschaffen.

Konzept

Bisher scheiterte die Verwendung eines externen Preprocessors zu Spin an der komplizierten Handhabung. Die Spin-IDE (Propeller Tools) kann nämlich nicht von einem anderen Programm als einfacher Compiler aufgerufen werden. PreSpin benutzt nun eine andere Technik, es simuliert das Drücken von Tasten bei aktiviertem IDE-Fenster. Damit lässt sich erstaunlich viel steuern, und PreSpin kann sich wie eine Erweiterung des Propeller Tools, mit einem kleinen Fensterchen, einbinden

Preprozessor Anweisungen

PreSpin liest den aktuellen Code aus dem Editor aus (via Zwischenablage) und erzeugt eine neue Datei, in der nur die Zeilen enthalten sind, für die die Bedingungen stimmen. Diese Datei heisst preprocessed.spin, und wird automatisch in der IDE geöffnet. Mittels Icons kann man dann das Kompilieren und laden des Codes auslösen. Durch entsprechendes setzen der 'Settings' kann auch alles in einem Rutsch geschehen.
Screenshot
Ausserdem lässt sich das PropTerminal einfach steuern, und auch eine Kontext-Hilfe für Spin ist integriert. Diese benutzt das Propeller-Manual.pdf um selektierte Worte anzuzeigen.

PreSpin benötigt nur wenige Anweisungen, die als spezielle Kommentarzeilen in den Spincode eingefügt werden, um dessen Kompilierung zu steuern:

'#define constant = value ;Definiert eine Konstante und setzt deren Wert '#define constant = value ;Wie oben, aber die Konstante gilt auch für Spin '#if constant ;testet ob eine Konstante TRUE ist und übergeht sonst den nachfolgenden code '#else ;andernfalls die nachfolgenden Zeilen '#endif ;Ende eines bedingten Kompilier-Blocks '#else_if constant ;testet eine neue Bedingung für aktuellen Block nur TRUE wenn vorher noch keine Bed. TRUE war '#or_if constant ;true wenn die vorherige oder diese Bedingung true ist '#and_if constant ;true wenn die vorherige und diese Bedingung true sind '#include "filename" ;Fügt an dieser Stelle eine andere Datei ein. '#replace Ausdr1 = Ausdr2 ;Ersetzt Ausdr1 durch Ausdr2 im nachfolgenden Code '#macro name [par,par..] ;Beginn einer Makro-Definition. Parameter werden innerhalb des Makros mit \1, \2, \3 usw benutzt. '#end_macro ;Ende einer Makro-Definition

Installation und Anwendung

Es muss lediglich die Datei PreSpin.exe ins gleiche Verzeichnis, wie die Propeller.exe kopiert werden. Dort kann man auch gleich ein Unterverzeichnis 'Includes' anlegen, in dem globale Include-Dateien gesammelt werden können (Include-Dateien können sich auch im Arbeitsverzeichnis des Spin-Files befinden).

Files, die von PreSpin vorbehandelt werden sollen, sollten immer mit dem entsprechenden Icon von PreSpin geladen werden. Sie können die Endung *.pre oder *.pre.spin haben (auch nur *.spin geht, ist aber weniger zu empfehlen). *.pre Dateien können nach dem Speichern in der IDE mit dem Rename-Icon von PreSpin erzeugt werden. Die Endung .pre hat den Vorteil, dass sie extra für PreSpin bei Windows registriert, und damit direkt aus dem Explorer geöffnet werden kann. Dazu müssen Sie nur die PreSpin.reg starten, nachdem sie die Einträge an ihre Verzeichnisstruktur angepasst haben.

Durch Klick auf das Preprocess Icon wird der Preprocess durchgeführt, und die neue Datei preprocessed.spin erzeugt und auch gleich geöffnet. Enthält die 1. Zeile keine Warnungen, so kann das File mit dem Compile&Load Icon compiliert und in den Propeller geladen werden. Danach kann man den preprocessed-Tab schliessen. Mit dem Settings-Icon können folgende Einstellungen vorgenommen werden:

  • 'Compile+Run after Preproc' geht automatisch zum Compilieren nach dem Preprocess.
  • 'Close Tab when done' schliesst auch noch den preprocessed Tab am Ende.
  • 'Auto-Control PropTerminal' minimiert PropTerminal vor dem Compilieren, und öffnet es wieder nach dem Laden in den Propeller.
  • 'Remove unused lines' schaltet zwischen Ausgabeformaten um. Entweder die Zeilen im Code, für die die Bedingung nicht wahr ist, sind gar nicht enthalten, oder sie werden durch Blockkommentare ausgeschaltet.
Zusätzlich kann noch ein externer Precompiler definiert werden, der nach dem Preprocess, aber vor dem Spin Compiler ausgeführt wird. Damit ist zum Beispiel ein Basic zu Spin Compiler, oder ähnliches denkbar.

Um die Kontext Hilfe zu benutzen markieren Sie ein Wort (am einfachsten per Doppelklick darauf), und klicken Sie auf das Context-Help Icon. Nun startet Ihr PDF-Reader und zeigt die entsprechende Seite im Propeller- Manual an. Ein nochmaliger Klick auf dasselbe Icon bringt Sie zurück zur IDE.
Getestet wurde es mit dem Acrobat- und dem Foxit-Reader.
Wird das Wort nicht gefunden öffnet sich eine Liste aller verfügbarer Wörter, durch Doppelclick auf einen Eintrag gelangen Sie wieder zur entsprechenden Seite. Sie können das Wort auch in den Code übernehmen durch Anklicken des 'Insert in IDE'-Icons.

Eine genauere Beschreibung aller Funktionen und Parameter befindet sich in der PreSpin.txt Datei, allerdings in English.

Download PreSpin

Die neuste Version von PreSpin mit Demos als ZIP-Datei:

Download: PreSpin_0.1.zip (122 kB) Version 0.1 for Windows
Download: PreSpin_0.3.zip (104 kB) Version 0.3 for Windows
Download: PreSpin_04.zip (104 kB) Version 0.4 for Windows (also for BST)
Download: Old Propeller Manual (PDF 4.7 MB) for Context Help
This is the latest version of PreSpin with some demos. Look at the PreSpin.txt for a description in english.

Werbung

Wenn sie die Weiterentwicklung von PreSpin, und den anderen Projekten, unterstützen wollen, machen Sie doch eine Spende via PayPal:

You can make a PayPal donation, if you want to support the future developement of PreSpin, and the other projects on this site.