S/SL programmeringsspråk
Syntax /Semantic Language ( S/SL ) är ett körbart högnivåspecifikationsspråk för rekursiva härkomsttolkare , semantiska analysatorer och kodgeneratorer utvecklat av James Cordy , Ric Holt och David Wortman vid University of Toronto 1980 .
S/SL är ett litet programmeringsspråk som stöder billig rekursion och definierar ingångs-, utdata- och feltokennamn (& värden), semantiska mekanismer (klassgränssnitt vars metoder verkligen är flykter till rutiner i ett värdprogrammeringsspråk men tillåter bra abstraktion i pseudokod ) och ett pseudokodprogram som definierar syntaxen för inmatningsspråket av den tokenström som programmet accepterar. Alternering, kontrollflöde och ensymbols framsynskonstruktioner är en del av språket.
S/SL-processorn kompilerar denna pseudokod till en tabell (bytekoder) som tolkas av S/SL-bordrullaren ( tolk ). Pseudokodspråket bearbetar inmatningsspråket i LL(1) rekursiv härkomststil, men tillägg tillåter det att bearbeta vilket LR(k) -språk som helst relativt enkelt. S/SL är utformad för att ge utmärkt återställning och reparation av syntaxfel. Den är mer kraftfull och transparent än Yacc men kan vara långsammare.
S/SL:s "semantiska mekanismer" utökar dess möjligheter till alla faser av kompileringen, och den har använts för att implementera alla faser av kompilering, inklusive skannrar , tolkar , semantiska analysatorer , kodgeneratorer och virtuella maskintolkar i flerpassage språkprocessorer.
S/SL har använts för att implementera kommersiella produktionskompilatorer för språk som PL/I , Euclid , Turing , Ada och COBOL , såväl som tolkar, kommandoprocessorer och domänspecifika språk av många slag. Det är den primära tekniken som används i IBM :s ILE/400 COBOL-kompilator, och ZMailers e-postöverföringsagent använder S/SL för att definiera både dess e-postrouterns bearbetningsspråk och dess RFC 822 e-postadressvalidering.
- ^ JR Cordy, RC Holt och DB Wortman, "S/SL: Syntax/Semantiskt språk - Introduktion och specifikation", teknisk rapport CSRG-118, Computer Systems Research Group, University of Toronto, Sept. 1980
- ^ Barnard, DT; Cordy, JR (1988). "SL analyserar LR-språken". Datorspråk . 13 (2): 65–74. doi : 10.1016/0096-0551(88)90010-0 .
- ^ Holt, Richard C.; Cordy, James R.; Wortman, David B. (1982). "En introduktion till S/SL: Syntax/Semantiskt språk". ACM-transaktioner på programmeringsspråk och system . 4 (2): 149–178. doi : 10.1145/357162.357164 .
- ^ Ian H. Carmichael och Stephen Perelgut. "S/SL återbesökt". Proc. CASCON'95, Conference of the Centre for Advanced Studies on Collaborative Research, Toronto, Kanada, november 1995 http://portal.acm.org/citation.cfm?id=781915.781926
- ^ ZMailer manualen, http://www.zmailer.org/zman/zmanual.shtml