(S/SL) A specification language for recursive descent parsers by Rick C. Holt and Jim Cordy <cordy@qucis.queensu.ca>. Rayan Zachariassen <rayan@cs.toronto.edu> produced the C implementation.
Unlike most other languages, practicially the LEAST expensive thing you can do in S/SL is recurse. A small language that defines input/output/error token names (& values), semantic operations (which are really escapes to a programming language but allow good abstraction in the pseudo-code) and a pseudo-code program that defines a grammar by the token stream the program accepts. Alternation, control flow and 1-symbol lookahead constructs are part of the language.
An S/SL implementation compiles this S/SL pseudo-code into a table (byte-codes) that is interpreted by the S/SL table-walker (interpreter). The pseudo-code language probably has an LR1 grammar and the semantic mechanisms probably turn it into an LRn grammar relatively easily. It is more powerful and cleaner than yacc but slower.
["Specification of S/SL: Syntax/Semantic Language", Cordy, J.R. and Holt, R.C., Computer Systems Research Institute, University of Toronto, 1980].
["An Introduction to S/SL: Syntax/Semantic Language" by R.C. Holt, J.R. Cordy, and D.B. Wortman, in ACM Transactions on Programming Languages and Systems (TOPLAS), Vol 4, No. 2, April 1982, Pages 149-178].
(25 Sep 1989)