śnieżyca
Snostorm (Snostorm3) to wersja języka SNOBOL4 z dodanymi strukturalnymi konstrukcjami programistycznymi. Rekompensuje prawie brak strukturalnych konstrukcji programistycznych w SNOBOL4, dostarczając między innymi instrukcje IF, ELSEIF, ELSE, LOOP, CASE i PROCEDURE. Został pierwotnie zaprojektowany i wdrożony przez Freda G. Swartza jako preprocesor dla SPITBOL działający w ramach Michigan Terminal System (MTS) w University of Michigan Computing Center w latach 70.
Dodano funkcje
Dodane funkcje obejmują operatory logiczne, struktury kontrolne, w tym procedury, bloki inicjalizacji, ulepszone komentarze i kontrolę listy.
Gramatyka obejmuje te dodane konstrukcje:
- Operatory logiczne
- AND, OR i NOT operatory logiczne.
- Struktury kontrolne
- Instrukcje IF, ELSEIF, ELSE i ENDIF.
- LOOP, LOOP WHILE, LOOP UNTIL, LOOP FOR, EXITLOOP, NEXTLOOP, ENDLOOP i ENDLOOP REPEAT.
- Instrukcje DOCASE, CASE, ELSECASE i ENDCASE.
- Instrukcje PROCEDURE (PROC), EXITPROCEDURE (EDITPROC) i ENDPROCEDURE (ENDPROC).
- Inicjalizacja
- instrukcji INITIAL i ENDINITIAL.
- Ulepszone komentarze
- Komentarze rozpoczynające się gwiazdką (*) w kolumnach innych niż kolumna 1.
- Puste wiersze traktowane jako komentarze.
- Kontrola wyświetlania instrukcji
- EJECT, TITLE, SUBTITLE, SPACE, LIST ON, LIST OFF, LIST PUSHON, LIST PUSHOFF i LIST POP.
Ponadto MTS Snostorm zapewniał opcje ładnego drukowania i debugowania za pomocą kompilatora Spitbol.
Składnia Snostorm jest w dużej mierze niewrażliwa na spacje i znaki nowej linii, ale nie do końca, ze względu na jej zależność od SNOBOL4 do wykonania.
Przykład
Program SNOBOL4 podany w The SNOBOL4 Programming Language autorstwa Griswolda, Poage'a i Polonsky'ego, po którym następuje ten sam program przepisany w Snostorm.
- Oryginalny program SNOBOL4.
... ODCZYTAJ WYJŚCIE = WEJŚCIE : F ( WYŚWIETL ) TEKST = WYJŚCIE NASTĘPNY TEKST ZNAK = : F ( ODCZYT ) LICZBA < CH > = LICZBA < CH > + 1 :( NASTĘPNY ) WYŚWIETL WYJŚCIE = LITERY PĘTLI ZNAK = : F (
KONIEC ) WYJŚCIE = NE ( LICZBA < CH >) CH ' WYSTĘPUJE ' LICZBA < CH > ' CZASY' + :( LOOP ) KONIEC
- Ten sam program, przepisany w Snostorm.
... PĘTLA WHILE TEKST = WEJŚCIE WYJŚCIE = TEKST PĘTLA WHILE TEKST ZNAK = LICZBA<CH> = LICZBA<CH> + 1 ENDLOOP ENDLOOP OUTPUT = LOOP WHILE LETTERS CHAR = JEŚLI NE(LICZBA<CH>) WYJŚCIE = CH ' WYSTĘPUJE ' COUNT<CH> ' TIMES' ENDIF ENDLOOP END
Używać
Oprócz użycia w ośmiu do piętnastu lokalizacjach obsługujących system terminali Michigan, kompilator Snostorm3 istniał w University College London (UCL) od 1982 do 1984 roku i działał poprzez kompilację Snostorm3 do SNOBOL4, który można było następnie wykonać za pomocą interpretera SNOBOL4 lub za pomocą kompilatora SPITBOL do utworzenia pliku wykonywalnego. [ potrzebne źródło ]
Linki zewnętrzne
- Opis Snostorm autorstwa Freda Swartza , 2010.
- „The SNOSTORM Returneth” , pliki źródłowe do nowoczesnej ponownej implementacji.
- Kod źródłowy i obiektowy MTS dla preprocesora Snostorm , komponent 678 w MTS Distribution 6.0, kwiecień 1988, dostępny w Bitsavers i archiwum cyfrowym Deep Blue UM .