Язык программирования S/SL
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2009 г. ) |
Язык синтаксиса /семантики ( S/SL ) — исполняемый высокого уровня язык спецификации для парсеров рекурсивного спуска , семантических анализаторов и генераторов кода, разработанный Джеймсом Корди , Риком Холтом и Дэвидом Вортманом в Университете Торонто в 1980 году. [1]
S/SL — это небольшой язык программирования , который поддерживает дешевую рекурсию и определяет имена (и значения) токенов ввода, вывода и ошибок, семантические механизмы (интерфейсы классов, методы которых на самом деле являются переходами к подпрограммам на основном языке программирования, но допускают хорошую абстракцию в псевдокод ) и программу псевдокода, которая определяет синтаксис языка ввода с помощью потока токенов, который принимает программа. Чередование, поток управления и односимвольные конструкции прогнозирования являются частью языка.
Процессор S/SL компилирует этот псевдокод в таблицу (байт-коды), которая интерпретируется обработчиком таблиц S/SL ( интерпретатором ). Язык псевдокода обрабатывает входной язык в LL(1), стиле рекурсивного спуска но расширения позволяют ему относительно легко обрабатывать любой язык LR(k) . [2] S/SL разработан для обеспечения превосходного восстановления и исправления синтаксических ошибок. Он более мощный и прозрачный, чем Yacc , но может работать медленнее.
«Семантические механизмы» S/SL расширяют его возможности на все этапы компиляции, и он использовался для реализации всех этапов компиляции, включая сканеры , парсеры , семантические анализаторы , генераторы кода и интерпретаторы виртуальных машин в многопроходных языковых процессорах. [3]
S/SL использовался для реализации коммерческих коммерческих компиляторов для таких языков, как PL/I , Euclid , Turing , Ada и COBOL , а также интерпретаторов, командных процессоров и различных предметно-ориентированных языков. Это основная технология, используемая в . компиляторе IBM ILE/400 COBOL [4] и ZMailer агент передачи почты использует S/SL [5] для определения как языка обработки почтового маршрутизатора, так и проверки адреса электронной почты RFC 822.
Ссылки
[ редактировать ]- ^ Дж. Р. Корди, Р. К. Холт и Д. Б. Вортман, «S/SL: Синтаксис/Семантический язык - Введение и спецификация», Технический отчет CSRG-118, Группа исследования компьютерных систем, Университет Торонто, сентябрь 1980 г.
- ^ Барнард, DT; Корди, младший (1988). «SL анализирует языки LR». Компьютерные языки . 13 (2): 65–74. дои : 10.1016/0096-0551(88)90010-0 .
- ^ Холт, Ричард С.; Корди, Джеймс Р.; Вортман, Дэвид Б. (1982). «Введение в S/SL: синтаксис/семантический язык» . Транзакции ACM в языках и системах программирования . 4 (2): 149–178. дои : 10.1145/357162.357164 .
- ^ Ян Х. Кармайкл и Стивен Перелгут. «Возвращение к S/SL». Учеб. CASCON'95, Конференция Центра перспективных исследований совместных исследований, Торонто, Канада, ноябрь 1995 г. http://portal.acm.org/citation.cfm?id=781915.781926
- ^ Руководство ZMailer, http://www.zmailer.org/zman/zmanual.shtml.