Снобол

Алгоритмический язык, предназначенный для программирования задач обработки символьной информации, т. е. представленной словами в нек-ром алфавите. В литературе по программированию такие слова наз. строками, или цепочками, а образующие их буквы — литерами. На основе начального варианта С., разработанного в нач. 1960-х гг., было создано несколько версий языка, из к-рых наиболее стабильной оказалась версия С.-4. Аналогично рефалу, С. имеет своей теоретич. предпосылкой нормальные алгорифмы А. А. Маркова, в к-рых основной вычислительной операцией является обнаружение в слове Авхождения заданного подслова Вс последующей заменой этого вхождения на другое слово С. Общая структура программ на С. типична для алго-ритмич. языков. Программа имеет вид последовательности операторов (инструкций) присваивания, сопоставления с образцом, замещения, передачи управления, ввода, вывода и останова. В выражениях могут употребляться как примитивные операции, предикаты и функции, так и функции, определяемые программистом (в т. ч. и рекурсивные). Любая инструкция может быть помечена. Метка в С. может трактоваться как строковая переменная, значением к-рой является инструкция, помеченная этой меткой. Основными типами данных являются строки, целые и действительные числа, имена, образцы. Базисным типом является строка, все остальные данные имеют строковое представление, совпадающее с их способом записи в программе, Однородные данные могут объединяться в массивы и таблицы, произвольные данные объединяются в наборы заданной длины и с заданными именами для каждой позиции (поля) набора. Имена обозначают переменные, метки, формальные параметры и функции. Строки в С. могут быть любой длины. Переменные не имеют постоянно приписываемого им типа, однако операнды каждой операции или примитивной функции ожидают данных определенного типа, преобразуя аргументы к ожидаемому типу либо выдавая сообщение об ошибке. Наиболее характерной операцией С. является сопоставление строки с образцом. Образец — это особое выражение С., создающее в нек-poй последовательности группу контрольных строки определенную дисциплину движения слева направо (сканирования) вдоль сопоставляемой строки, называемой субъектом. Сопоставление — это последовательность элементарных проверок. Элементарная проверка устанавливает, является ли очередная контрольная строка подстрокой остатка (справа от точки сканирования) субъекта. В зависимости от успеха или неуспеха элементарной проверки происходит либо выработка сообщения об успехе или неуспехе сопоставления в целом, либо переход к следующей контрольной строке образца и перенос точки сканирования. В результате успешного сопоставления в субъекте выделяется последовательность нек-рых подстрок. Эти подстроки могут быть присвоены указанным переменным либо замещены на другие подстроки. Примитивным образцом является выражение, значение к-рого ость строка, а успехом сопоставления с ней является вхождение этой строки в субъект. Конкатенация АВ образцов Аи . создает образец, успех в сопоставлении с к-рым требует успеха в сопоставлении с А, а затем — успеха в сопоставлении остатка субъекта с образцом В. Альтернаця А|В образцов А и В создает образец, сопоставление с к-рым успешно при сопоставимости либо с А, либо с В. Если А — образец и X — переменная, то конструкция А, X означает образец, успешное сопоставление с к-рым сохраняет в качестве значения Xту контрольную строку, вхождение к-рой в субъект привело к успеху. Инструкция сопоставления с образцом имеет вид VA, где V — переменная-субъект и А — образец. Условная передача управления изображается инструкцией VA: F(M1)S( М2). где M1 и М2 — метки перехода в случае неудачи и удачи сопоставления соответственно. Инструкция замещения имеет вид VA = Е, где Е- строковое выражение, значение к-рого при успешном сопоставлении замещает в Vвыделенную подстроку. С. имеет развитую библиотеку примитивных функций, к-рые в сочетании с операциями конкатенации и альтернации позволяют создать емкие образцы и компактно записывать в виде инструкции замещения весьма сложные правила анализа и преобразования строк. Программы на С. обрабатываются программирующим процессором интерпретационного типа. Программа транслируется в промежуточную форму, к-рая исполняется с помощью интерпретатора. С. реализован для всех главных архитектур современных ЭВМ. Реализация этого языка содействовала разработке эффективных алгоритмов манипулирования в памяти ЭВМ строками переменной длины. Лит.:[1] Farhеr D. J., Griswо1d R. Е., Polonsky I. P., лJ. Assoc. Comput. Mach.

Источник: Математическая энциклопедия на Gufo.me