S/SL тілі: Құрастырушылар мен семантикалық анализаторлар үшін жоғары деңгейлі сипаттама тілі
S/SL programming language
S/SL: рекурсивті түсірілім парсерлері, семантикалық анализаторлар мен кодты генерациялау үшін жоғары деңгейлі тіл. 1980 ж. жасалған, LL(1) және LR(k) тілдерін қолдайды.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы 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.