Syntax/Semantic Language

(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.

FTP

["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)