S/SL programming language
Sintaxa/limbajul semantic (S/SL) este un limbaj executabil de specificații de nivel înalt pentru parseri de descendență recursivi, analizori semantici și generatoare de cod dezvoltate de James Cordy, Ric Holt și David Wortman la Universitatea din Toronto în 1980.S/SL este A A A A A A A A A A A A A A A A A O A.
Limbaj de programare mic care acceptă recursuri ieftine și definește nume de intrare, ieșire și jetoane de eroare (și valori), mecanisme semantice (interfețe de clasă ale căror metode sunt cu adevărat scapă la rutine într -un limbaj de programare gazdă, dar permit o bună abstractizare în pseudocod) și un pseudocod program care definește sintaxa limbajului de intrare prin fluxul de token pe care îl acceptă programul.
Alternanța, fluxul de control și construcțiile cu aspect de simboluri înainte fac parte din limbă.
Procesorul S/SL compilează acest pseudocod într-un tabel (coduri de octeți) care este interpretat de S/SL Table-Walker (Interpreter).
Limbajul pseudocod procesează limbajul de intrare în (1) stilul de descendență recursiv, dar extensiile îi permit să proceseze orice limbaj LR (K) relativ ușor.
S/SL este proiectat pentru a oferi o recuperare și reparație excelentă a erorilor de sintaxă.
Este mai puternic și mai transparent decât YACC, dar poate fi mai lent.
„Mecanismele semantice” de la S/SL își extind capacitățile la toate fazele de compilare și a fost utilizat pentru a implementa toate fazele de compilare, inclusiv scanere, analizați semantici, generatoare de cod și interpreți de mașini virtuale în procesoare de limbaj multi-pas.
/SL a fost utilizat pentru a implementa compilatoare comerciale de producție pentru limbi precum PL/I, EUCLID, TURING, ADA și COBOL, precum și interpreți, procesoare de comandă și limbi specifice domeniului de mai multe feluri.
Este tehnologia principală folosită în IBM ILE/400 COBOL Compiler, iar Zmailer Mail Transfer Agent folosește S/SL pentru definirea atât a limbajului său de procesare a routerului prin poștă, cât și a validării adresei sale de e -mail RFC 822.