Snoball er et programmeringssprog på højt niveau udviklet i 1962-1967 og primært beregnet til behandling af tekstdata .
Hovedmålet med Snobol-sproget var at vise princippet (muligheden for dets fulde eksistens), at alt er en streng . Udadtil ser sproget ud i den såkaldte "gamle stil": moderne ideer om procedurer er svære at genkende i det, men dets magt er ikke ringere end LISP i at arbejde i et miljø med "kunstig intelligens".
Mønstermatchning baseret på BNF-grammatikker . Fuldt dynamisk sprog, inklusive erklæringer, typer, hukommelsesallokering, endda procedureindgangs- og udgangspunkter. Implementeringen bruger strengbehandling af virtuelle makroer, en simpel overskrivning af makroerne for enhver eksisterende computer.
Sproget, som er skrivekompilatorernes sprog, hvor det grundlæggende princip om, at alt er en streng og har sådan en "grim" syntaks, blev "genfødt" til en helt anden, ikke engang udadtil ens: Ikon . I starten var det kun en tilføjelse til Snobol4, men blev hurtigt et selvstændigt programmeringssprog.
Udviklingen begyndte i 1962 af Ralph Griswold, Ivan Polonsky og David Farber hos AT&T Bell Labs. Deres mål var at skabe et strengbehandlingssprog til at arbejde med formler og analysere grafer.
I 1950 udviklede Yngve fra MIT COMIT-sproget til naturlig sprogbehandling baseret på NFB-regler, men Bell Labs-holdet fandt COMIT for restriktiv til deres formål.
Sproget blev oprindeligt kaldt SCL7 (Symbolic Computation Language 7), derefter ændrede dets navn til SEXI (String Expression Interpreter), som blev forældet i 1960'erne , og til sidst blev det kendt som SNOBOL (StriNg Oriented symBOlic Language) - et kunstigt skabt akronym blottet for intuitiv mening. Der er udviklet flere versioner af Snobol-sproget - SNOBOL, SNOBOL2, SNOBOL3 og SNOBOL4. Sidstnævnte havde succes i 1970'erne .
Find blandt inputstrengene et palindrom sammensat af 0 og 1, den maksimale ulige længde:
START GRAMMATIK = 0 | 1| 0 *GRAMMATIK 0 | 1*GRAMMATIK 1 * Indstiller NFB-grammatikken som skabelonen LOOP NEWLINE - TRIMCINPUT): F(END) * Får den næste linje uden mellemrum. * I tilfælde af fejl, spring til END. NEWLINE (POS(0) SPAN('0l") PROS(0)) : F(DÅRLIG) * Kontrollerer en streng for kun nuller og ettaller. * SPAN er en streng af nuller og ettaller. * POS(0) er den første position. * PROS(0) er den sidste. SN = STØRRELSE(NEWLINE) NÆSTE NEWLINE POS(0) GRAMMATIK . PALINDROME POS(SN) - :S(OK) F(NOTOK) * Strengen kontrolleres for grammatik ved hjælp af POS(SN) * Hvis sammenligningen mislykkes, spring til den sidste position. * Hvis det lykkes, udskrives svaret. * Den matchede del er tildelt PALINDROME OK OUTPUT="MATCH: " PALINDROME :(LOOP) NOTOK SN = SN - 1 :(NÆSTE) DÅRLIG OUTPUT = "FORKERT INPUT: " NEWLINE :(LOOP) ENDEProgrammeringssprog | |
---|---|
|