50 lines
No EOL
3 KiB
Text
50 lines
No EOL
3 KiB
Text
{{stub}}
|
|
{{language
|
|
|site=http://www.jedsoft.org/slang/
|
|
|checking=dynamic
|
|
}}
|
|
S-Lang is a multi-platform programmer's library designed to allow a developer to create robust multi-platform software. It provides facilities required by interactive applications such as display/screen management, keyboard input, keymaps, and so on. The most exciting feature of the library is the slang interpreter that may be easily embedded into a program to make it extensible. While the emphasis has always been on the embedded nature of the interpreter, it may also be used in a stand-alone fashion through the use of slsh, which is part of the S-Lang distribution.
|
|
|
|
Unlike many interpreters, the S-Lang interpreter supports all of the native C integer types (signed and unsigned versions of char, short, int, long, and long long), and both single and double precision types, as well as a double precision complex type. Other data types supported by the interpreter include strings, lists, associative arrays (hashes), user-defined structures, and multi-dimensional arrays of any data-type.
|
|
|
|
The S-Lang interpreter has very strong support for array-based operations making it ideal for numerical applications. (from [http://www.jedsoft.org/slang/ the official web site]])
|
|
|
|
<hr>
|
|
Task Output Notes:
|
|
|
|
For simplicity, many of the S-Lang tasks use the print()
|
|
function. This is not part of S-Lang per se, but is normally
|
|
included in the S-Lang shell "slsh". If it is missing, or you're
|
|
using some other S-Lang environment, options include C-like fputs(),
|
|
sprintf() and printf(). Their format and parameters work about
|
|
like you'd expect in a C-inspired interpreted language.
|
|
|
|
<code>sprintf(f, d..)</code> [f=string format, d..=zero or more data items]
|
|
returns a string. <code>printf(f, d..)</code> prints to "stdout" and returns
|
|
the number of items formatted. <code>fputs(s, fp)</code> prints string s to the
|
|
file-pointer fp and returns the string length or -1 on error. Remember S-Lang is a "stack
|
|
language", so even if you don't care about the return value, your code
|
|
should "eat" it:
|
|
|
|
() = printf("S-Lang: %d tasks and counting!\n", 23);
|
|
|
|
() = fputs("the quality of mercy is not strnen\n", stdout);
|
|
You can approximate print() with the following; NOTE the capital-S, which implicitly calls
|
|
the string() function to convert-or-describe non-strings as strings:
|
|
|
|
define print(foo) { () = printf("%S\n", foo); }
|
|
S-Lang is the extension language for the lightweight Emacs-like
|
|
[http://www.jedsoft.org/jed/ programmer's editor Jed]. There, the
|
|
output functions include:
|
|
|
|
insert(s) write string s into current buffer
|
|
vinsert(f,d..) insert(sprintf(f, d..)) ["variable"] equivalent
|
|
|
|
message(s) write string s into "mini-buffer"
|
|
vmessage(f,d..) message(sprintf(f, d..)) equivalent
|
|
|
|
error(s) like message(), but in error-color, then cancel cmd
|
|
verror(f, d..) error(sprintf(f, d..)) equivalent
|
|
|
|
== See Also ==
|
|
[[wp:S-Lang_(programming_language)|Wikipedia:S-Lang(programming language)]] |