S/SL programming language: Difference between revisions

Content deleted Content added
SmackBot (talk | contribs)
m Date maintenance tags and general fixes
added references
Line 1:
{{Refimprove|date=December 2009}}
The '''Syntax/Semantic Language''' ('''S/SL''') is an executable [[high-level programming language|high level]] [[specification language]] for [[recursive descent parser]]s, semantic analyzers and code generators developed by [[James Cordy]] and, [[Ric Holt]] and David Wortman at the [[University of Toronto]] in 1980.<ref>J. R. Cordy, R. C. Holt and D. B. Wortman, "S/SL: Syntax/Semantic Language - Introduction and Specification, Technical Report CSRG-118, Computer Systems Research Group, University of Toronto, Sept. 1980</ref>
 
S/SL is a small [[programming language]] that supports cheap [[recursion]] and defines input, output, and error token names (&amp; values), semantic mechanisms (class interfaces whose methods are really escapes to routines in a host programming language but allow good abstraction in the [[pseudocode|pseudo-code]]) and a pseudo-code 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 [[compiler|compiles]] this pseudo-code into a table (byte-codes) that is interpreted by the S/SL table-walker ([[Interpreter (computing)|interpreter]]). The pseudo-code language processes the input language in [[LL(1)]] [[recursive descent]] style but extensions allow it to process any [[LR parser|LR(k)]] language relatively easily.<ref>D.T. Barnard and J.R. Cordy, "SL Parses the LR Languages", Computer Languages 13,2 (April 1988), pp. 65-74</ref> 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 compilation, and it has been used to implement all phases of compilation, including [[scanner|scanners]], [[parser|parsers]], [[semantic analysis|semantic analyzers]], [[code generation|code generators]] and [[virtual machine]] interpreters in multi-pass language processors.<ref>Richard C. Holt, James R. Cordy and David B. Wortman, "An Introduction to S/SL: Syntax/Semantic Language", ACM Transactions on Programming Languages and Systems 4,2 (April 1982) http://doi.acm.org/10.1145/357162.357164 </ref>
 
S/SL has been used to implement production commercial [[compilers]] for languages such as [[PL/I]], [[Euclid programming language|Euclid]], [[Turing programming language|Turing]], [[Ada programming language|Ada]], and [[COBOL programming language|COBOL]], as well as interpreters, command processors, and ___domain specific languages of many kinds.
Line 10 ⟶ 12:
The [[ZMailer]] [[mail transfer agent]] uses S/SL for defining both its mail router processing language, as well as for RFC 822 email address validation.
 
==External linksReferences==
<references/>
* [http://doi.acm.org/10.1145/357162.357164 Richard C. Holt, James R. Cordy and David B. Wortman, "An Introduction to S/SL: Syntax/Semantic Language", ACM Transactions on Programming Languages and Systems 4,2 (April 1982)]
 
[[Category:Compiling tools]]