Snostorm
Snostorm (Snostorm3) — версия языка SNOBOL4 с добавленными конструкциями структурного программирования . Он компенсирует почти полное отсутствие конструкций структурированного программирования в SNOBOL4, предоставляя, среди прочего, операторы IF, ELSEIF, ELSE, LOOP, CASE и PROCEDURE. Первоначально он был разработан и реализован Фредом Г. Шварцем в качестве препроцессора для SPITBOL, работающего под управлением Michigan Terminal System (MTS) в Вычислительном центре Мичиганского университета в 1970-х годах. [1]
Добавлены функции
[ редактировать ]Добавленные функции включают логические операторы, структуры управления, включая процедуры, блоки инициализации, расширенные комментарии и управление списками. [1]
Грамматика включает следующие дополнительные конструкции: [1]
- Логические операторы
- Логические операторы И, ИЛИ и НЕ.
- Структуры управления
- Операторы IF, ELSEIF, ELSE и ENDIF.
- Операторы LOOP, LOOP WHILE, LOOP UNTIL, LOOP FOR, EXITLOOP, NEXTLOOP, ENDLOOP и ENDLOOP REPEAT.
- Операторы DOCASE, CASE, ELSECASE и ENDCASE.
- Операторы PROCEDURE (PROC), EXITPROCEDURE (EDITPROC) и ENDPROCEDURE (ENDPROC).
- Инициализация
- НАЧАЛЬНЫЕ и КОНЕЧНЫЕ утверждения.
- Расширенные комментарии
- Комментарии, начинающиеся со звездочки (*) в столбцах, кроме столбца 1.
- Пустые строки считаются комментариями.
- Контроль листинга
- Операторы EJECT, TITLE, SUBTITLE, SPACE, LIST ON, LIST OFF, LIST PUSHON, LIST PUSHOFF и LIST POP.
Кроме того, МТС Сносторм предоставил возможности для красивой печати и отладки с помощью компилятора Spitbol.
Синтаксис Snostorm в значительной степени нечувствителен к пробелам и символам новой строки, но не полностью из-за зависимости его выполнения от SNOBOL4.
Пример
[ редактировать ]Программа SNOBOL4, представленная в книге «Язык программирования SNOBOL4» Грисволда, Поаге и Полонски. [2] за которым следует та же программа, переписанная на Snostorm. [1]
- Оригинальная программа СНОБОЛ4.
...
READ OUTPUT = INPUT :F(DISPLAY)
TEXT = OUTPUT
NEXT TEXT CHAR = :F(READ)
COUNT<CH> = COUNT<CH> + 1 :(NEXT)
DISPLAY OUTPUT =
LOOP LETTERS CHAR = :F(END)
OUTPUT = NE(COUNT<CH>) CH ' OCCURS ' COUNT<CH> ' TIMES'
+ :(LOOP)
END
- Та же программа, переписанная на Snostorm.
... LOOP WHILE TEXT = INPUT OUTPUT = TEXT LOOP WHILE TEXT CHAR = COUNT<CH> = COUNT<CH> + 1 ENDLOOP ENDLOOP OUTPUT = LOOP WHILE LETTERS CHAR = IF NE(COUNT<CH>) OUTPUT = CH ’ OCCURS ’ COUNT<CH> ’ TIMES’ ENDIF ENDLOOP END
Использовать
[ редактировать ]Помимо его использования на восьми-пятнадцати объектах, на которых работала терминальная система Мичигана, [1] Компилятор Snostorm3 существовал в Университетском колледже Лондона (UCL) с 1982 по 1984 год и работал путем компиляции Snostorm3 в SNOBOL4, который затем можно было выполнить с помощью интерпретатора SNOBOL4 или с помощью компилятора SPITBOL для создания исполняемого файла. [ нужна ссылка ]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и «СНОСТОРМ» , МТС, Том 9: СНОБОЛ4 в МТС , Вычислительный центр Мичиганского университета, июнь 1979 г., страницы 99–120. Проверено 1 сентября 2014 г.
- ^ Грисволд, Ральф Э., Дж. Ф. Поаге и И. П. Полонский (1968). Язык программирования СНОБОЛ4 . Энглвуд Клиффс, Нью-Джерси: Прентис Холл, ISBN 0-13-815373-6 .
Внешние ссылки
[ редактировать ]- Описание Snostorm Фредом Шварцем , 2010.
- "The SNOSTORM Returneth" , исходные файлы для современной повторной реализации.
- Исходный и объектный код MTS для препроцессора Snostorm , компонент 678 в MTS Distribution 6.0, апрель 1988 года, доступен на Bitsavers и в цифровом архиве Deep Blue UM .