Snowball — это небольшой язык программирования для обработки строк , предназначенный для создания алгоритмов стемминга , используемых при поиске информации . [1]
Название Snowball было выбрано в честь языка программирования SNOBOL , с которым он разделяет концепцию строковых шаблонов, передающих сигналы, которые используются для управления потоком программы. Создатель Snowball, доктор Мартин Портер , «играл с идеей назвать его „strippergram“», потому что он «эффективно предоставляет „suffix STRIPPER GRAMmar“». [1]
Компилятор Snowball транслирует скрипт Snowball (файл .sbl) в программу на потокобезопасном ANSI C , Java , Ada, C#, Go, Javascript, Object Pascal, Python или Rust. Для ANSI C каждый скрипт Snowball создает программный файл и соответствующий заголовочный файл (с расширениями .c и .h). [2] Компилятор Snowball проверяет согласованность своего скрипта, и эта проверка была использована для обнаружения опечатки в основополагающей академической статье Ловинса , которая оставалась незамеченной в течение 30 лет. [3]
Базовые типы данных , обрабатываемые Snowball, — это строки символов, целые числа со знаком и логические значения истинности , или, проще говоря, строки, целые числа и логические значения. Символы Snowball имеют ширину 8 или 16 бит в зависимости от режима использования. В частности, поддерживаются как ASCII , так и 16-битный Unicode . Как и в языке программирования SNOBOL , поток управления в Snowball организован с помощью неявного использования сигналов (каждый оператор возвращает значение true или false), а не явного использования конструкций, таких как if, then и break, которые есть в C и многих других языках программирования. [4]