SNOBOL (StriNg Oriented symBOlic Language) ist eine der ersten Programmiersprachen, die vollständig auf die Verarbeitung von Texten ausgelegt war. Entwickelt wurde sie zwischen 1962 und 1967 an den Bell Laboratories von David J. Farber, Ralph E. Griswold und Ivan P. Polonsky – mit SNOBOL4 (1967) als bekanntester und portabler Version.
Idee und Pattern Matching
Anders als bei numerisch orientierten Sprachen steht in SNOBOL das Pattern Matching im Mittelpunkt: Ein Muster beschreibt, wie ein Textausschnitt aussehen muss, und wird gegen eine Zeichenkette abgeglichen. Diese Muster können beliebig komplex zusammengesetzt werden.
* Kommentare beginnen mit * in Spalte 1
LINE = "abc123"
LINE SPAN(&LCASE) . LETTERS
OUTPUT = LETTERS
Die wichtigsten Musterfunktionen sind SPAN (alle Zeichen einer Menge fressen), BREAK (bis zu einem Zeichen der Menge), ANY (genau ein Zeichen aus der Menge) und BAL (balancierte Klammerausdrücke). Mit ARBNO lassen sich Wiederholungen ausdrücken.
Statement-Aufbau und Goto
Jede SNOBOL4-Anweisung folgt dem Schema LABEL SUBJECT PATTERN = REPLACEMENT :GOTO. Das Besondere ist der Goto-Teil: :S(erfolg) springt bei Erfolg, :F(fehler) bei Misserfolg einer Operation – eine frühe Form der bedingten Ablaufsteuerung.
OUTPUT = "Bitte Namen eingeben:"
INPUT = NAME
NAME "Maier" :S(GEFUNDEN)
OUTPUT = "Nicht gefunden" :(ENDE)
GEFUNDEN OUTPUT = "Hallo " NAME
ENDE
Mit DEFINE() definiert man eigene Funktionen, mit TABLE() assoziative Arrays. Der Operator $ erlaubt die indirekte Referenz auf Variablen.
Bedeutung und Nachfolger
SNOBOL4 wurde ab den 1970er-Jahren von Ralph Griswold an der University of Arizona weitergepflegt; freie Implementierungen wie Spitbol und CSNOBOL4 halten die Sprache bis heute am Leben. Als moderner, strukturierter Nachfolger entstand aus derselben Entwicklungslinie Icon – und daraus später Unicon.