S/SL programming language: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Line 3:
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|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 [[compiler|compiles]] this pseudo-code into a table (byte-codes) that is interpreted by the S/SL table-walker ([[Interpreter (computing)|interpreter]]). The pseudo-code language processes the input language in recursive descent[[LL(1)]] [[LL1recursive descent]] style but extensions allow it to process any [[LRkLR parser|LR(k)]] language relatively easily. 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 has been used to implement production commercial [[compilers]] for languages such as [[PL/I]], [[Euclid_programming_language|Euclid]], [[Turing_programming_language|Turing]], [[Ada_programming_language|Ada]], and [[COBOL_programming_language|COBOL]], as well as interpreters, command processors, and ___domain specific languages of many kinds.