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
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. ==References== <references/> {{DEFAULTSORT:S SL programming language}} [[Category:Compiling tools]] [[Category:Parser generators]]
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)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite journal
(
edit
)
Template:Refimprove
(
edit
)