<language> (S/SL) A high level specification language for recursive descent parsers developed by J.R. Cordy <[email protected]
> and R.C. Holt <[email protected]
> at the University of Toronto in 1980.
S/SL is a small 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 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 compiles this pseudo-code into a table (byte-codes) that is interpreted by the S/SL table-walker (interpreter).
The pseudo-code language processes the input language in recursive descent LL1 style but extensions allow it to process any LRk language relatively easily.
S/SL is designed to provide excellent syntax error recovery and repair.
It is more powerful and transparent than yacc but slower.
S/SL has been used to implement production commercial compilers for languages such as PL/I
, and COBOL
, as well as interpreters, command processors, and domain specific languages of many kinds.
["Specification of S/SL: Syntax/Semantic Language", J.R. Cordy and R.C. Holt, Computer Systems Research Institute, University of Toronto, 1980].
["An Introduction to S/SL: Syntax/Semantic Language", R.C. Holt, J.R.
Cordy, and D.B. Wortman; ACM Transactions on Programming Languages and Systems (TOPLAS), Vol 4, No.
2, April 1982, pp 149-178].
["Hierarchic Syntax Error Repair", D.T. Barnard and R.C. Holt, International Journal of Computing and Information Sciences, Vol. 11, No. 4, August 1982, Pages 231-258.]