|
|
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.