Startseite › Sprach-Frontends › Forth Frontend › Übersicht Hilfe zum PBXB64-Compiler

Forth-Frontend

PBXB64 akzeptiert eigenständige Forth-Quelldateien mit den Erweiterungen .fth, .forth und .4th sowie eingebettete Forth-Blöcke in PowerBASIC-Quelltext mit #FORTH und #ENDFORTH.

Kategorie: Übersicht

Beschreibung

PBXB64 akzeptiert eigenständige Forth-Quelldateien mit den Erweiterungen .fth, .forth und .4th sowie eingebettete Forth-Blöcke in PowerBASIC-Quelltext mit #FORTH und #ENDFORTH.

Das aktuelle Frontend ist eine teilweise native Forth-Implementierung. Unterstützt ist eine getestete Integer-Teilmenge mit Stack-Wörtern, Arithmetik, erweiterter Arithmetik 1+/1-/2*/2//NEGATE/ABS/MIN/MAX, Bitwörtern AND/OR/XOR/INVERT/LSHIFT/RSHIFT, Vergleichen, Speicherzellen- und Bytezugriff, ausgewählten Konsolenwörtern, BYE, QUIT, ABORT, Return-Stack-Grundlagen, Core-Defining-Words : ... ;, CONSTANT und VARIABLE, Compile-State-Hilfen IMMEDIATE, POSTPONE, STATE, [/] und LITERAL, Stack-/Bereichshilfen ?DUP und WITHIN, einfachen CREATE-Datenobjekten mit ALLOT, Komma-Zellablage und begrenztem DOES>-Laufzeitkoerper auf CREATE-Wörtern, Source-Input-Grundlagen SOURCE, ACCEPT, delimiterbasiertem PARSE und Counted-String-WORD, String-Grundlagen COUNT, TYPE, S", COMPARE, BLANK und -TRAILING, veränderlichen Wertobjekten mit VALUE/TO, Booleschen und Leerzeichen-Konstanten TRUE/FALSE/BL, Null-Prädikaten 0<>/0<=/0>=, Zeichen-Token-Wörtern CHAR/[CHAR], EXIT aus Colon-Definitionen einschliesslich der getesteten strukturierten Kontrollflussfaelle, getesteten IF/ELSE/THEN-Verzweigungen, getesteten CASE/OF/ENDOF/ENDCASE-Mehrfachverzweigungen, geradlinigem, bedingtem und verschachteltem IF-gesteuertem LEAVE, getesteten BEGIN/UNTIL-, BEGIN/AGAIN- und BEGIN/WHILE/REPEAT-Schleifen, gezählten DO/LOOP-Schleifen mit I/J, positivem und negativem Literalschritt bei +LOOP, UNLOOP EXIT- und UNLOOP LEAVE-Bereinigung aus gezählten Schleifen, getestetem inline RECURSE mit begrenzter Expansionsdiagnose sowie PB-Local-Interoperabilität über PBVAR, PBADDR, PBLEN, PBVAL, PBSET, PBVALI64, PBSETI64, PBVALF64 und PBSETF64. PBADDR legt die aktuelle PB-Variablenadresse auf den Stack; PBLEN ist fuer PB-STRING- und Array-Variablen getestet. PBVALF64/PBSETF64 sind auf PB-DOUBLE-breite Skalarvariablen begrenzt; F64 und F+ bilden die getestete fokussierte Floating-Hilfsoberflaeche. Colon-Definitionen werden in der aktuellen Übersetzungseinheit inline abgesenkt; ausufernde rekursive Expansion wird durch eine begrenzte Compilerdiagnose abgewiesen.

Wenn eine eigenstaendige Forth-Datei als Nebeneingabe neben einer BASIC-Hauptquelle kompiliert wird, fuegt PBXB64 generierte Bridge-Deklarationen fuer explizite BASIC-BRIDGE EXPORT- und BRIDGE IMPORT-Symbole voran. Die getesteten Bridge-Woerter sind BRIDGE@ symbol und value BRIDGE! symbol fuer 64-Bit-Integer-Bridge-Speicher sowie BRIDGE@F64 symbol und value BRIDGE!F64 symbol fuer getesteten DOUBLE-breiten Floating-Bridge-Speicher. Feste Bridge-Puffer nutzen BRIDGEADDR symbol und BRIDGELEN symbol mit Byte-Speicherwoertern wie C!. Pointer-Bridge-Slots nutzen BRIDGEPTR symbol, um den gespeicherten Pointerwert vor Byte-Speicherzugriffen auf den Stack zu legen. Der Importpfad ist mit C-eigenem Skalarspeicher, C-eigenen Byte-Arrays und C-eigenen Pointer-Slots getestet, die von BASIC importiert und von Forth geaendert werden. Die untypisierten Integer-Bridge-Woerter lehnen Floating-Bridge-Symbole weiterhin ab; Festpuffer-Adresswoerter lehnen Pointer-Symbole ab.

In eingebetteten #FORTH-Bloecken werden die lokalen PB-Variablen ueber PBVAR, PBADDR, PBLEN, PBVAL/PBSET sowie die typisierten I64-, F64- und F32-Formen angebunden. Feste eindimensionale Arrays von Integer-, SINGLE- sowie DOUBLE-/EXTENDED-/FLOAT-Elementen sind ebenfalls gemappt: PBLEN legt die Elementanzahl auf den Stack, PBADDR die Basisadresse, und die normalen Speicherwoerter (@, !, C@, C!, +!) greifen mit dem passenden Byte-Offset auf einzelne Elemente zu.

Die Forth-2012/ANS-Word-Set-Vervollständigung wird fail-closed verfolgt. PBXB64 beansprucht keine Vollständigkeit für Core- oder optionale Word-Sets, bevor die entsprechenden Word-Set-Tests, gemischten PB-Tests und die Hilfedokumentation grün sind.

Referenzseiten

Diese Seite ist die Uebersicht zum Frontend. Die verlinkten Einzelseiten enthalten Syntax, getestete Beispiele, Status und Grenzen fuer die jeweiligen Befehle oder Sprachkonstrukte.

Qualifizierte V15-Erweiterungen

Die kanonische Matrix umfasst 67 Link/Laufzeit-, 68 Objekt- und 19 Negativfälle: 154 insgesamt, davon 154 bestanden und null erwartete Fehler.

Prüfung

Forth-Beispiele sollen als kleine .fth-Dateien getestet werden und einen reproduzierbaren Exit-Code oder eine eindeutige Konsolenausgabe liefern. Eingebettete Forth-Blöcke müssen zusätzlich mit einem PB-Hostprogramm geprüft werden.

Grenzen

Die Oberfläche bleibt ein getesteter nativer Teilumfang und beansprucht keine vollständige ANS-Forth-/Forth-2012-Kompatibilität. Mehrdimensionale Arrays, dynamische Arrays sowie Arrays von STRING- oder UDT-Elementen sind noch nicht angebunden. QUIT und ABORT werden als Prozessbeendigungs-Hilfen behandelt; DOES> bleibt auf das getestete CREATE-gebundene Laufzeitmuster begrenzt.

PBXB64-Prüfung

Diese Referenzseite soll durch ein fokussiertes Compile- oder Laufzeitbeispiel belegt sein. Das Beispiel soll Eingaben, erwartete Ausgabe oder Exit-Code und erforderliche Windows-Ressourcen oder Include-Dateien nennen.

Übersichtshinweise

Allgemeine Übersichtsseiten sollten trotzdem sagen, welche Familie gemeint ist, welche konkreten Befehlsseiten die Implementierung tragen und welche Formen nur der Navigation dienen. So bleibt die Seite detailliert genug, ohne so zu tun, als wäre sie eine vollständige Befehlsreferenz.