Go to the previous, next section.
- .sm
- See Environment File.
- Environment File
- When you start SM it looks in a file
(by default called `.sm') to discover where to find files that it
needs (such as the default macros, the help files, and the font files).
You can access variables stored in the environment file yourself,
although this is probably seldom done by non-gurus. For more details,
@xref{Environment Variables}.
- Expression
- An SM expression is something that can appear on the right hand side of
a
SET
command. More specifically, it is something that can appear
as part of the right hand side of a SET
command (this
excludes implied do loops: SET x=1,10,2
). Expressions may also
appear in other contexts, such as in the ANGLE
command, or in
DEFINE name ( expression )
. A formal definition of an
expression is given by the YACC grammar in `control.y' as the
non-terminal symbol expr
.
- Filecap
- Binary files produced by different programmes (and
languages, and even compilers) are not identical, Fortran
`unformatted' files being a glaring example. A filecap file is a
database used to describe the byte-by-byte format of binary files, to
allow SM to read them (using the
IMAGE
command).
- Graphcap
- There are a very large range of graphics terminals
(and laser printers and so forth) in this world, and each seems to
have its own set of commands. A graphcap
file is a database that is able to describe (almost) all of these
dialects, allowing SM to plot on a wide range of devices
- History
- SM remembers commands as you type them, so that you
can repeat them or modify them (which includes correcting mistakes).
The set of remembered commands is referred to as the history buffer.
- List
- The word
list
is used in a few places in the manual
in the specific sense defined by the YACC grammar in `control.y'. A
list is simply a list of words or numbers, and its meaning depends on
the context. For example, SET x=3*{1 2 32
will set the vector
x
to be 2 4 6
, while MACRO hi { echo Hello2
will
define the macro hi
.
- Macro
- A macro is an abbreviation for a set of commands, so
instead of typing a complicated sequence of commands you can simply
type the macro's name. You can either think of macros as a new commands in
their own right or as subroutines.
- Mongo
- Mongo is a plotting package written by John Tonry, and
widely used in astronomy
departments. SM's command language was based on Mongo's, and we have
provided some support for an easy transition from Mongo to SM.
- Stdgraph
- SM uses the stdgraph device driver for most devices, using the information
in the graphcap file (see section The Stdgraph Graphics Kernel).
- String
- A string to SM is a sequence of characters enclosed in single quotes:
'This is a string'
. Strings are primarily used in vector expressions,
but are also used in a few other places (e.g. to specify a format for a
PRINT
or READ
command). Note that characters in double quotes
are not strings to SM, merely characters protected from variable
expansion.
- Termcap
- Terminals come in many, many, flavours and types.
Their peculiarities are described by a termcap file, allowing
SM's command editor to run on (almost) any terminal.
- TeX
- TeX is a typesetting language developed by
Donald Knuth. We provide an emulation of certain parts of TeX's
mathematics mode in SM's label commands.
- Overload
- A keyword (such as
DEFINE
or SET
) is said
to be overloaded if its meaning has been changed. Usually this
will be by adding functionality, rather than by actually changing what
it does.
- Variable
- A variable is an abbreviation for a sequence of characters, and may
appear anywhere that the characters in question could appear. Even if the
variable contains a number (e.g.
6.62559e-34
) it is still just
a characters, although SM may choose to treat them as a number in
some contexts (e.g. the right-hand side of a SET
command).
- Vector
- A set of one (actually, zero) or more elements. The
elements can be either numerical (floating point) or strings. Vectors
are SM's primary data type. Do not confuse a 1-element vector (a scalar)
with a variable (see section String Variables).
- YACC
- The SM command language is written in a language called
YACC (which is supported on Unix systems). We have provided an
implementation of YACC called Bison in the SM distribution.
Go to the previous, next section.