Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Синтаксический/семантический язык (S/SL) — это исполняемый язык высокого уровня для создания рекурсивных нисходящих парсеров, семантических анализаторов и генераторов кода, разработанный Джеймсом Корди, Риком Холтом и Дэвидом Вортманом в Университете Торонто в 1980 году. S/SL — это небольшой язык программирования, поддерживающий эффективную рекурсию и определяющий имена и значения токенов ввода, вывода и ошибок, семантические механизмы (интерфейсы классов, методы которых фактически являются переходами к подпрограммам на языке-хосте, но обеспечивают хорошую абстракцию в псевдокоде) и псевдокодную программу, определяющую синтаксис входного языка на основе потока принимаемых программой токенов. В язык входят конструкции для чередования, управления потоком выполнения и просмотра следующего символа. Процессор S/SL компилирует этот псевдокод в таблицу (байт-код), которая интерпретируется исполнителем таблиц S/SL (интерпретатором). Псевдокод обрабатывает входной язык в стиле рекурсивного спуска LL(1), но расширения позволяют относительно легко обрабатывать любой язык LR(k). S/SL разработан для обеспечения эффективного восстановления и исправления синтаксических ошибок. Он мощнее и прозрачнее, чем Yacc, но может работать медленнее. "Семантические механизмы" S/SL расширяют его возможности на все фазы компиляции, и он использовался для реализации всех фаз компиляции, включая сканеры, парсеры, семантические анализаторы, генераторы кода и интерпретаторы виртуальных машин в многопроходных языковых процессорах. S/SL использовался для создания коммерческих компиляторов для языков PL/I, Euclid, Turing, Ada и COBOL, а также интерпретаторов, процессоров команд и специализированных языков различных типов. Он является основной технологией, используемой в компиляторе IBM ILE/400 COBOL, а агент передачи почты ZMailer использует S/SL для определения как языка обработки почтовых маршрутов, так и для проверки адресов электронной почты RFC 822.
The Syntax/Semantic Language (S/SL) is an executable high level specification language for recursive descent parsers, semantic analyzers and code generators developed by James Cordy, Ric Holt and David Wortman at the University of Toronto in 1980. S/SL is a small programming language that supports cheap recursion and defines input, output, and error token names (& values), semantic mechanisms (class interfaces whose methods are really escapes to routines in a host programming language but allow good abstraction in the pseudocode) and a pseudocode program that defines the syntax of the input language by the token stream the program accepts. Alternation, control flow and one symbol look ahead constructs are part of the language. The S/SL processor compiles this pseudocode into a table (byte codes) that is interpreted by the S/SL table walker (interpreter). The pseudocode language processes the input language in LL(1) recursive descent style but extensions allow it to process any LR(k) language relatively easily. S/SL is designed to provide excellent syntax error recovery and repair. It is more powerful and transparent than Yacc but can be slower. S/SL's "semantic mechanisms" extend its capabilities to all phases of compiling, and it has been used to implement all phases of compilation, including scanners, parsers, semantic analyzers, code generators and virtual machine interpreters in multi pass language processors. S/SL has been used to implement production commercial compilers for languages such as PL/I, Euclid, Turing, Ada, and COBOL, as well as interpreters, command processors, and domain specific languages of many kinds. It is the primary technology used in IBM's ILE/400 COBOL compiler, and the ZMailer mail transfer agent uses S/SL for defining both its mail router processing language and its RFC 822 email address validation.