|
|
1.1 root 1: .TH SNO 1
2: .SH NAME
3: sno \- Snobol language interpreter
4: .SH SYNOPSIS
5: .B sno
6: [
7: .I file ...
8: ]
9: .SH DESCRIPTION
10: .I Sno\^
11: is a
12: .SM SNOBOL\*S3
13: (with slight differences)
14: compiler and interpreter.
15: .I Sno\^
16: obtains input from the
17: concatenation of the named
18: .IR file s
19: and the standard input.
20: All input through a statement
21: containing the label
22: .B end
23: is considered program and is compiled.
24: The rest is available to
25: .BR syspit .
26: .PP
27: .I Sno\^
28: differs from
29: .SM SNOBOL\*S3
30: in the following ways:
31: .PP
32: There are no unanchored searches.
33: To get the same effect:
34: .IP
35: .LR "a ** b" " unanchored search"
36: .br
37: .LR "a *x* b = x c" " unanchored assignment"
38: .PP
39: There is no back referencing.
40: .IP
41: .L x = \&"abc"
42: .br
43: .LR "a *x* x" " unanchored search for
44: .L \&"abc"
45: .PP
46: Function declaration is
47: done at compile time by the use of the (non-unique) label
48: .BR define .
49: Execution of a function call begins at the
50: statement following the
51: .BR define .
52: Functions cannot be defined at run time,
53: and the use of the name
54: .B define
55: is preempted.
56: There is no provision for automatic variables
57: other than parameters.
58: Examples:
59: .IP
60: .EX
61: define f( )
62: define f(a, b, c)
63: .EE
64: .PP
65: All labels except
66: .B define
67: (even
68: .BR end )
69: must have a non-empty statement.
70: .PP
71: Labels, functions and variables must all have
72: distinct names.
73: In particular, the non-empty statement on
74: .B end
75: cannot merely name a label.
76: .PP
77: If
78: .B start
79: is a label in the program,
80: program execution will start there.
81: If not, execution begins with the first
82: executable statement;
83: .B define
84: is not an executable statement.
85: .PP
86: There are no builtin functions.
87: .PP
88: Parentheses for arithmetic are not needed.
89: Normal precedence applies.
90: Because of this, the arithmetic
91: operators
92: .B /
93: and
94: .B *
95: must be set off by spaces.
96: .PP
97: The right side of assignments
98: must be non-empty.
99: .PP
100: Either
101: .L '
102: or
103: .L \&"
104: may be used for literal quotes.
105: .PP
106: The pseudo-variable
107: .B sysppt
108: is not available.
109: .SH SEE ALSO
110: .IR spitbol (1),
111: .IR snocone (1),
112: .IR awk (1)
113: .br
114: .I \s-1SNOBOL\s+1, a String Manipulation Language,
115: by D.\ J. Farber, R.\ E. Griswold, and I.\ P. Polonsky,
116: .I JACM\^
117: .B 11
118: (1964), pp.\ 21-30.
119: .DT
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.