Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
S/SL programming language
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{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]], [[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 (& 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 [[compiler|compiles]] this pseudocode into a table (byte-codes) that is interpreted by the S/SL table-walker ([[Interpreter (computing)|interpreter]]). The pseudocode 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>{{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 [[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.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)