Snoboll

Snoball  är ett högnivåprogrammeringsspråk utvecklat 1962-1967 och främst avsett för bearbetning av textdata .

Huvudmålet med Snobol-språket var att visa principen (möjligheten av dess fulla existens) att allt är en sträng . Externt ser språket ut i den så kallade "gamla stilen": moderna idéer om procedurer är svåra att känna igen i det, men dess kraft är inte sämre än LISP när det gäller att arbeta i en miljö med "artificiell intelligens".

Mönstermatchning baserad på BNF-grammatik . Helt dynamiskt språk, inklusive deklarationer, typer, minnesallokering, till och med procedurens ingångs- och utgångspunkter. Implementeringen använder virtuella makron för strängbearbetning, en enkel överskrivning av makron för alla befintliga datorer.

Språket, som är skrivkompilatorernas språk, där grundprincipen att allt är en sträng och har en så "ful" syntax, "återföddes" till en helt annan, inte ens till det yttre lik: Ikon . Från början var det bara ett tillägg för Snobol4, men blev snart ett oberoende programmeringsspråk.

Historik

Utvecklingen började 1962 av Ralph Griswold, Ivan Polonsky och David Farber vid AT&T Bell Labs. Deras mål var att skapa ett strängbearbetningsspråk för att arbeta med formler och analysera grafer.

1950 utvecklade Yngve från MIT COMIT-språket för naturlig språkbehandling baserat på NFB-regler, men Bell Labs-teamet fann COMIT för restriktivt för sina syften.

Språket hette ursprungligen SCL7 (Symbolic Computation Language 7), sedan ändrades namnet till SEXI (String Expression Interpreter), vilket förkastades på 1960 -talet , och slutligen blev det känt som SNOBOL (StriNg Oriented symBOlic Language) - en artificiellt skapad akronym saknar intuitiv mening. Flera versioner av Snobol-språket har utvecklats - SNOBOL, SNOBOL2, SNOBOL3 och SNOBOL4. Den senare hade framgång på 1970-talet .

Exempel

Hitta bland inmatningssträngarna en palindrom som består av 0 och 1, den maximala udda längden:

BÖRJA GRAMMATIK = 0 | 1| 0 *GRAMMATIK 0 | 1*GRAMMATIK 1 * Ställer in NFB-grammatiken som mall LOOP NEWLINE - TRIMCINPUT): F(END) * Får nästa rad utan efterföljande mellanslag. * Vid fel, hoppa till END. NEWLINE (POS(0) SPAN('0l") PROS(0)) : F(BAD) * Kontrollerar en sträng för endast nollor och ettor. * SPAN är en sträng av nollor och ettor. * POS(0) är den första positionen. * PROS(0) är den sista. SN = STORLEK(NEWLINE) NÄSTA NEWLINE POS(0) GRAMMATIK . PALINDROME POS(SN) - :S(OK) F(NOTOK) * Strängen kontrolleras för grammatik med POS(SN) * Om jämförelsen misslyckas, hoppa till sista positionen. * Om det lyckas skrivs svaret ut. * Den matchade delen är tilldelad PALINDROME OK OUTPUT="MATCH: " PALINDROME :(LOOP) NOTOK SN = SN - 1 :(NÄSTA) DÅLIG UTGÅNG = "OLÄMPLIG INPUT: " NEWLINE :(LOOP) SLUTET

Se även

Länkar

Litteratur

Språköversikter i böcker om programmeringsspråk i allmänhet

Språkguider