Bandsalat v0.1 (c) by Dennis Schwerdel

Hilfedatei zu Bandsalat

Parameter:

-i INPUTFILE
	liest die Eingabe aus einer Datei

-I INPUT
	liest die Eingabe als Parameter

-o OUTPUTFILE
	schreibt die Ausgabe is eine Datei

-v
	gibt Debug-Infos auf STDERR aus. Level: Zustnde und Flle

-vv
	Ausgabe von -v und Bandausschnitt nach jedem Schritt

-p
	Post wird anstelle von Turing verwendet

-c CODEFILE
	Programmcode


Default-Einstellungen:

Eingabe von STDIN
Ausgabe auf STDOUT
Turing-Maschine


Daten-Intepretation:

Die Eingabe steht vor Beginn der Ausfhrung auf dem Band und der Kopf steht ber dem ersten Symbol der Eingabe.
Nach Ende der Ausfhrung wird alles ab dem Kopf bis zum nchsten rechten Stern als Ausgabe angesehen.


Turing-Syntax:

[ZUSTAND1]: [SYMBOL1] -> [SYMBOL2],[BEWEGUNG],[ZUSTAND2]

ZUSTAND
	kann ein beliebiges Token sein. ( Case-Sensitive )
	"a" ist der Anfangszustand und "e" der Endzustand.

SYMBOL
	kann ein beliebis Token sein ( am besten ein Char )
	"*" ist default

BEWEGUNG
	muss aus ["L","R","K"] sein.
	L: eine Zelle links
	R: eine Zelle rechts
	K: keine Bewegung

INTERPRETATION
	Die Maschine startet im Startzustand "a".
	Im Zustand [ZUSTAND1] und bei dem Symbol [SYMBOL1] an der aktuellen Position
	schreibt die Maschine [SYMBOL2] an die aktuelle Position, fhrt die Bewegung
	[BEWEGUNG] aus und geht in den Zustand [ZUSTAND2]
	Die Ausfhrung stoppt wenn der Endzustand "e" erreicht ist.


Post-Syntax:

[ZEILE]: [ANWEISUNG]

ZEILE
	kann ein beliebiges Token sein. ( Case-Sensitive )
	Die Ausfhrung beginnt bei Zeile "1".

ANWEISUNG
	kann folgendes sein:

	L,[ZEILE]
		geht eine Zelle nach links und nach Zeile [ZEILE]
	R,[ZEILE]
		geht eine Zelle nach rechts und nach Zeile [ZEILE]
	>[SYMBOL],[ZEILE]
		schreibt [SYMBOL] und geht nach Zeile [ZEILE]
	?[SYMBOL],[ZEILE1],[ZEILE2]
		geht falls das Symbol an der aktuellen Position [SYMBOL] ist nach
		[ZEILE1], ansonsten nach [ZEILE2]
	!
		beendet die Ausfhrung
	M,[MAKRO],[ZEILE]
		fhrt das Makro [MAKRO] aus und geht nach [ZEILE]
		Makro kann folgendes sein:
		SLS
			geht bis zum nchsten Stern nach links ( bleibt stehen falls * )
		SRS
			geht bis zum nchsten Stern nach rechts ( bleibt stehen falls * )
		SL
			schiebt alles zwischen 2 Sternen um ein Feld nach links.
			berschreibt den linken Stern und verdoppelt den rechten.
			bleibt auf dem ersten rechten Stern stehen.
		SR
			analog zu SL
