PILOT verwendet Präfixe wie C: für Berechnungen, T: für Text und J: für Sprünge. #Namen sind numerische Variablen; $Namen bezeichnen Strings.
PILOT verwendet Präfixe wie C: für Berechnungen, T: für Text und J: für Sprünge. #Namen sind numerische Variablen; $Namen bezeichnen Strings. Grafik in voller Größe öffnen

PILOT: Beispiele und Erklärung

Reifegrad und Grenzen: experimentell

Umgesetzter Umfang: Text, Eingabe, Berechnung, Mustervergleich, Sprünge, Unterprogramme und numerische QUAD-Anbindung sind durch die Beispiele abgedeckt.

Grenzen: Der PBXB64-PILOT-Dialekt hat begrenzte Eingabe-, Ausdrucks- und Stapelkapazitäten; sein gemeinsamer Rücksprungstapel ist nicht threadsicher.

Zur PBXB64-V9-Übersicht English

PILOT unterstützte Befehle und Umfang

Die sprachspezifische Referenz der unterstützten Befehle und des Umfangs mit durchsuchbaren Kategorien und klaren Grenzen öffnen.

Umfangsreferenz öffnen

PILOT verwendet Präfixe wie C: für Berechnungen, T: für Text und J: für Sprünge. #Namen sind numerische Variablen; $Namen bezeichnen Strings.

Zwölf Kurzbeispiele und ein größeres Programm. Wählen Sie ein Thema oder arbeiten Sie die Beispiele der Reihe nach durch.

1. 1 + 2 + 3 + 4 + 5 = 15

Die Zahlen 1 bis 5 werden zu 15 addiert. Das Programm gibt 15 aus und endet mit Exitcode 0.

C: #sum=1+2+3+4+5
T: #sum
E:

Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): '15'

PBXB64.exe sum15-pilot.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Nativ geprüft mit dem V22-Kandidaten vom 30.09.2026; Prüfung mit dem finalen Compiler noch ausstehend.

2. J: zu einer Sprungmarke

J: *target überspringt die Ausgabe wrong. Bei *target setzt das Programm fort und T: gibt jumped aus. R: ist ein Kommentar; E: beendet.

R: Test unconditional jump
J: *target
T: "wrong"
*target
T: "jumped"
E:

Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): 'jumped\n'

PBXB64.exe pilot_jump.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Kanonischer Testfall mit erwartetem Ergebnis; hier keine neue native V22-Prüfung. Finale Ausführung noch ausstehend.

3. Text in einer String-Variablen

C: setzt $MSG auf variable text. T: $MSG gibt den gespeicherten String aus. Der $-Präfix unterscheidet diese Variable vom numerischen #sum des Einstiegsbeispiels.

R: Test text with string variable
C: $MSG = "variable text"
T: $MSG
E:

Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): 'variable text\n'

PBXB64.exe pilot_text_var.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Kanonischer Testfall mit erwartetem Ergebnis; hier keine neue native V22-Prüfung. Finale Ausführung noch ausstehend.

4. Ein vollständiges Hello-Programm

Ablauf Schritt für Schritt

  1. R: enthält einen Kommentar und erzeugt keine Ausgabe.
  2. T: schreibt den zitierten Text Hello from PILOT.
  3. E: beendet das Programm mit dem erwarteten Exitcode 0.
R: Basic PILOT test - hello world
T: "Hello from PILOT"
E:

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
Hello from PILOT
PBXB64.exe pilot-pilot_hello.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

5. Eine einzelne Textzeile

Ablauf Schritt für Schritt

  1. Der Text nach T: ist ein String-Literal.
  2. Es wird keine Variable ausgewertet oder ersetzt.
  3. Der konkrete Ausgabevertrag enthält Single text line mit anschließendem Zeilenwechsel.
R: Test text output with string literal
T: "Single text line"
E:

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
Single text line
PBXB64.exe pilot-pilot_text_literal.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

6. Eine Zeile aus drei Textteilen

Ablauf Schritt für Schritt

  1. T: erhält Hello, ein Leerzeichen und World als getrennte Teile.
  2. Die Kommata trennen die Argumente, nicht die Ausgabezeilen.
  3. Die Teile ergeben gemeinsam Hello World.
R: Test multi-part text with literals
T: "Hello", " ", "World"
E:

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
Hello World
PBXB64.exe pilot-pilot_text_multi.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

7. TRUE und FALSE als numerische Konstanten

Ablauf Schritt für Schritt

  1. #A und #B bezeichnen numerische Variablen.
  2. C: weist ihnen TRUE beziehungsweise FALSE zu.
  3. Das Programm zeigt die Konstantenschreibweise und endet ohne T:-Ausgabe.
R: Test TRUE and FALSE constants
C: #A = TRUE
C: #B = FALSE
E:

Erwarteter Exitcode: 0

PBXB64.exe pilot-pilot_constants.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

8. Numerische Werte kopieren und vorzeichenbehaftet setzen

Ablauf Schritt für Schritt

  1. #A erhält 42; #B übernimmt den aktuellen Wert von #A.
  2. Weitere Zuweisungen zeigen 0, 1 und -5.
  3. Die Übernahme ist eine Wertkopie. Eine spätere Änderung an #A würde #B nicht rückwirkend ändern.
R: Test number variable assignment
C: #A = 42
C: #B = #A
C: #C = 0
C: #D = 1
C: #E = -5
E:

Erwarteter Exitcode: 0

PBXB64.exe pilot-pilot_compute_number.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

9. Zwei unabhängige String-Variablen

Ablauf Schritt für Schritt

  1. Der $-Präfix unterscheidet Textvariablen von numerischen #Variablen.
  2. C: weist $S den Text hello und $T den Text world zu.
  3. Ohne T:-Befehl wird keiner der Texte ausgegeben.
R: Test string variable assignment
C: $S = "hello"
C: $T = "world"
E:

Erwarteter Exitcode: 0

PBXB64.exe pilot-pilot_compute_string.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

10. Y: führt bei wahrem Status aus

Ablauf Schritt für Schritt

  1. C: #A = 1 setzt im gezeigten Vertrag einen wahren Bedingungszustand.
  2. Y: schützt die nachfolgende T:-Anweisung.
  3. Der Text Yes guard with true match erscheint genau in diesem wahren Pfad.
R: Test Y: conditional guard (true)
C: #A = 1
Y: T: "Yes guard with true match"
E:

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
Yes guard with true match
PBXB64.exe pilot-pilot_yes_true.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

11. N: führt bei falschem Status aus

Ablauf Schritt für Schritt

  1. C: #A = 0 erzeugt hier den falschen Bedingungszustand.
  2. N: ist das Gegenstück zum Y:-Schutz und führt die T:-Anweisung aus.
  3. Die erwartete Textzeile lautet No guard with false match.
R: Test N: conditional guard (true)
C: #A = 0
N: T: "No guard with false match"
E:

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
No guard with false match
PBXB64.exe pilot-pilot_no_true.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

12. Mit M: den wahren Pfad wählen

Ablauf Schritt für Schritt

  1. C: #A = 1 liefert den wahren Zustand für den Match-Sprung.
  2. M: *success springt zur Marke und überspringt die Ausgabe wrong sowie den ersten Endbefehl.
  3. Am Ziel schreibt T: matched; E: beendet.
R: Test match conditional jump (true case)
C: #A = 1
M: *success
T: "wrong"
E:
*success
T: "matched"
E:

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
matched
PBXB64.exe pilot-pilot_match_true.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

Großes Beispiel: Variablen, Bedingungen und Sprungmarken zusammen

Ablauf Schritt für Schritt

  1. C: legt einen String und drei numerische Werte an; die letzte numerische Zuweisung TRUE liefert den verwendeten wahren Bedingungszustand.
  2. T: gibt Hello und PILOT Test aus. Y: führt die Ausgabe Yes when true aus, während N: übersprungen wird.
  3. J: springt zur Marke skip_remark; M: verwendet danach den Bedingungszustand für den Match-Sprung. Beide Endpfade verwenden E:.
R: Comprehensive PILOT test covering all implemented commands
R: Variable assignments
C: $MSG = "PILOT Test"
C: #A = 42
C: #B = 0
C: #C = TRUE
R: Text output
T: "Hello"
T: $MSG
R: Conditional guards
Y: T: "Yes when true"
N: T: "No when false"
R: Jump test
J: *skip_remark
R: This remark is skipped
*skip_remark
R: Match test
M: *match_jump
R: Match was false, continue here
E:
*match_jump
E:

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
Hello
PILOT Test
Yes when true
PBXB64.exe pilot-pilot_comprehensive.pil -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

Alle Quellen dieser Lernseite

Jedes Beispiel hat einen eigenen Ordner; die README nennt die jeweiligen Compileraufrufe. Enthaltene Includes behalten ihre passenden Pfade.

Alle 13 Beispiele als ZIP

Bridging

V: bildet eine typisierte Verbindung zu einer BASIC-GLOBAL-Variablen. Das Beispiel zeigt sowohl einen QUAD-Wert als auch einen STRING und zwei Aliase auf dieselbe Variable.

Vollständige Quellenpaare ansehen