S/SL programming language: Difference between revisions

Content deleted Content added
rv
OAbot (talk | contribs)
m Open access bot: doi updated in citation with #oabot.
 
(30 intermediate revisions by 22 users not shown)
Line 1:
{{Refimprove|date=December 2009}}
The '''Syntax/Semantic Language''' ('''S/SL''') is aan 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 pseudo-code[[pseudocode]]) and a pseudo-codepseudocode 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-codepseudocode into a table (byte-codes) that is interpreted by the S/SL table-walker ([[Interpreter (computing)|interpreter]]). The pseudo-codepseudocode language processes the input language in recursive descent[[LL(1)]] [[LL1recursive descent]] style but extensions allow it to process any [[LRkLR parser|LR(k)]] language relatively easily.<ref>{{cite journal | last1 = Barnard | first1 = D.T. | last2 = Cordy | first2 = J.R. | year = 1988 | title = SL Parses the LR Languages | doi = 10.1016/0096-0551(88)90010-0 | journal = Computer Languages | volume = 13 | issue = 2| pages = 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 compiling, and it has been used to implement all phases of compilation, including [[Lexical analysis|scanners]], [[parser]]s, [[Semantic analysis (compilers)|semantic analyzers]], [[Code generation (compiler)|code generators]] and [[virtual machine]] interpreters in multi-pass language processors.<ref>{{cite journal | last1 = Holt | first1 = Richard C. | last2 = Cordy | first2 = James R. | last3 = Wortman | first3 = David B. | year = 1982 | title = An Introduction to S/SL: Syntax/Semantic Language | journal = ACM Transactions on Programming Languages and Systems | volume = 4 | issue = 2| pages = 149–178| doi=10.1145/357162.357164| doi-access = free }}</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.
 
S/SL has been used to implement production commercial [[compiler]]s for languages such as [[PL/I]], [[Euclid (programming language)|Euclid]], [[Turing (programming language)|Turing]], [[Ada (programming language)|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,<ref>Ian H. Carmichael and Stephen Perelgut. "S/SL revisited". Proc. CASCON'95, Conference of the Centre for Advanced Studies on Collaborative Research, Toronto, Canada, November 1995 http://portal.acm.org/citation.cfm?id=781915.781926</ref> and the [[ZMailer]] [[mail transfer agent]] uses S/SL<ref>ZMailer the Manual, http://www.zmailer.org/zman/zmanual.shtml</ref> for defining both its mail router processing language and its RFC 822 email address validation.
[[Category:Domain-specific programming languages]]
 
==References==
<references/>
 
{{DEFAULTSORT:S SL programming language}}
[[Category:Compiling tools]]
[[Category:Parser generators]]