S-Lang is an interpreted language that was designed from the start to be easily embedded into a program to provide it with a powerful extension language. Examples of programs that use S-Lang as an extension language include the jed text editor, the slrn newsreader, and sldxe (unreleased), a numerical computation program. For this reason, S-Lang does not exist as a separate application and many of the examples in this document are presented in the context of one of the above applications.
S-Lang is also a programmer's library that permits a programmer to develop sophisticated platform-independent software. In addition to providing the S-Lang extension language, the library provides facilities for screen management, keymaps, low-level terminal I/O, etc. However, this document is concerned only with the extension language and does not address these other features of the S-Lang library. For information about the other components of the library, the reader is referred to the The S-Lang Library Reference.
I first began working on S-Lang sometime during the fall of 1992. At that time I was writing a text editor (jed), which I wanted to endow with a macro language. It occured to me that an application-independent language that could be embedded into the editor would prove more useful because I could envision embedding it into other programs. As a result, S-Lang was born.
S-Lang was originally a stack language that supported a
postscript-like syntax. For that reason, I named it S-Lang, where
the S was supposed to emphasize its stack-based nature. About
a year later, I began to work on a preparser that would allow one to
write using a more traditional infix syntax making it easier to use
for those unfamiliar with stack based languages. Currently, the
syntax of the language resembles C, nevertheless some
postscript-like features still remain, e.g., the `
is still used as a comment delimiter.
Since I first released S-Lang, I have received a lot feedback about the library and the language from many people. This has given me the opportunity and pleasure to interact with several people to make the library portable and easy to use. In particular, I would like to thank the following individuals:
<email@example.com> for his comments and
criticisms of the syntax of the language. He was the person who
made me realize that the low-level byte-code engine should be
totally type-independent. He also improved the tokenizer and
preparser and impressed upon me that the language needed a
<firstname.lastname@example.org> for his many patches to
various aspects of the library and his support on AIX. He also
contributed a lot to the pre-processing (
<email@example.com> for the OS/2 port of the
video and keyboard routines. He also made value suggestions
regarding the interpreter interface.
<firstname.lastname@example.org> for cleaning up and
unifying some of the code and the makefiles.
<email@example.com> who was always willing to test
new releases of the library.
<firstname.lastname@example.org> for his work on the curses
<email@example.com> and Oezguer Kesim
<firstname.lastname@example.org> for the S-Lang newsgroup and mailing list.
Hunter Goatley, Andy Harper
<Andy.Harper@kcl.ac.uk>, and Martin
<email@example.com> for their VMS support.
I am also grateful to many other people who send in bug-reports and bug-fixes, for without such community involvement, S-Lang would not be as well-tested and stable as it is. Finally, I would like to thank my wife for her support and understanding while I spent long weekend hours developing the library.