Forth

Eine kompakte Forth-Implementierung in Java. Alle class-Dateien in eine jar-Datei gepackt ergibt eine Dateigröße von 3.241 Bytes (mit javac -target 1.1 kompiliert, ansonsten wird es etwas größer). Folgende Befehle sind implementiert: ";", ":", "constant", "create", "+", "*", "/", "-", "cells", "allot", "true", "false", "dup", "swap", "drop", "!", "@", "cr", "if", "then", "do", "loop", "+loop", "i" und "j".

Beispielprogramme

Die Antwort auf die Frage aller Fragen

7 6 * .

Quadratzahlen bis 10 berechnen und in einer Zeile ausgeben

: squares 11 1 do i dup * . loop ; squares

Primzahlen bis 100 berechnen untereinander ausgeben

100 constant upperbound create sieve upperbound 1 + cells allot
: clearsieve upperbound 0 do true sieve i cells + ! loop ;
: fillsieve dup 2 * upperbound swap do false sieve i cells + ! dup +loop drop ;
: showprimes cr upperbound 2 do sieve i cells + @ if i . cr then loop ;
: calcprimes clearsieve upperbound 2 / 2 do sieve i cells + @ if i fillsieve then loop ;
: primes clearsieve calcprimes showprimes ;
primes

Hier dieselbe Primzahlberechnung zum einfachereren Kopieren in einer Zeile:

100 constant upperbound create sieve upperbound 1 + cells allot : clearsieve upperbound 0 do true sieve i cells + ! loop ; : fillsieve dup 2 * upperbound swap do false sieve i cells + ! dup +loop drop ; : showprimes cr upperbound 2 do sieve i cells + @ if i . cr then loop ; : calcprimes clearsieve upperbound 2 / 2 do sieve i cells + @ if i fillsieve then loop ; : primes clearsieve calcprimes showprimes ; primes

Das Applet

Man kann jeweils in der unteren Textzeile eine beliebig lange Zeile eingeben und per Enter-Taste ausführen. Alle Befehle werden klein geschrieben.

Der Quelltext: Forth.java


10. Juni 2002, Frank Buß