V8/usr/man/man1/sno.1
.TH SNO 1
.SH NAME
sno \- Snobol language interpreter
.SH SYNOPSIS
.B sno
[ files ]
.SH DESCRIPTION
.I Sno\^
is a
.SM SNOBOL\*S3
(with slight differences)
compiler and interpreter.
.I Sno\^
obtains input from the
concatenation of the named
.IR file s
and the standard input.
All input through a statement
containing the label
.B end
is considered program and is compiled.
The rest is available to
.BR syspit .
.PP
.I Sno\^
differs from
.SM SNOBOL\*S3
in the following ways:
.RS
.PP
There are no unanchored searches.
To get the same effect:
.ta 1.2i
.RS
.PP
a \|\(**\(** \|b unanchored search for
.IR b .
.br
a \|\(**x\(** \|b \|= \|x \|c unanchored assignment
.RE
.PP
There is no back referencing.
.RS
.PP
x \|= \|"abc"
.br
a \|\(**x\(** \|x is an unanchored search for
.BR abc .
.RE
.PP
Function declaration is
done at compile time by the use of the (non-unique) label
.BR define .
Execution of a function call begins at the
statement following the
.BR define .
Functions cannot be defined at run time,
and the use of the name
.B define
is preempted.
There is no provision for automatic variables
other than parameters.
Examples:
.RS
.PP
define f( )
.br
define f(a, b, c)
.RE
.PP
All labels except
.B define
(even
.BR end )
must have a non-empty statement.
.PP
Labels, functions and variables must all have
distinct names.
In particular, the non-empty statement on
.B end
cannot merely name a label.
.PP
If
.B start
is a label in the program,
program execution will start there.
If not, execution begins with the first
executable statement;
.B define
is not an executable statement.
.PP
There are no builtin functions.
.PP
Parentheses for arithmetic are not needed.
Normal precedence applies.
Because of this, the arithmetic
operators
.B /
and
.B \(**
must be set off by spaces.
.PP
The right side of assignments
must be non-empty.
.PP
Either
.B \(fm
or
\f3"\fP
may be used for literal quotes.
.PP
The pseudo-variable
.B sysppt
is not available.
.RE
.SH SEE ALSO
spitbol(1), snocone(1), awk(1)
.br
``\s-1SNOBOL\s+1, a String Manipulation Language,''
by D.\ J. Farber, R.\ E. Griswold, and I.\ P. Polonsky,
.I JACM\^
.B 11
(1964), pp.\ 21-30.
.DT