3 cfa37a7b 2004-04-10 devnull hoc \- interactive floating point language
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
7 cfa37a7b 2004-04-10 devnull .I file ...
11 cfa37a7b 2004-04-10 devnull .I expression
13 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
15 cfa37a7b 2004-04-10 devnull interprets a simple language for floating point arithmetic,
16 cfa37a7b 2004-04-10 devnull at about the level of BASIC, with C-like syntax and
17 cfa37a7b 2004-04-10 devnull functions.
19 cfa37a7b 2004-04-10 devnull The named
21 cfa37a7b 2004-04-10 devnull are read and interpreted in order.
24 cfa37a7b 2004-04-10 devnull is given or if
29 cfa37a7b 2004-04-10 devnull interprets the standard input.
32 cfa37a7b 2004-04-10 devnull option allows input to
34 cfa37a7b 2004-04-10 devnull to be specified on the command line, to be treated as if it appeared in a file.
37 cfa37a7b 2004-04-10 devnull input consists of
38 cfa37a7b 2004-04-10 devnull .I expressions
40 cfa37a7b 2004-04-10 devnull .IR statements .
41 cfa37a7b 2004-04-10 devnull Expressions are evaluated and their results printed.
42 cfa37a7b 2004-04-10 devnull Statements, typically assignments and function or procedure
43 cfa37a7b 2004-04-10 devnull definitions, produce no output unless they explicitly call
44 cfa37a7b 2004-04-10 devnull .IR print .
46 cfa37a7b 2004-04-10 devnull Variable names have the usual syntax, including
50 cfa37a7b 2004-04-10 devnull by itself contains the value of the last expression evaluated.
51 cfa37a7b 2004-04-10 devnull The variables
54 cfa37a7b 2004-04-10 devnull .BR PHI ,
55 cfa37a7b 2004-04-10 devnull .BR GAMMA
58 cfa37a7b 2004-04-10 devnull are predefined; the last is 59.25..., degrees per radian.
60 cfa37a7b 2004-04-10 devnull Expressions are formed with these C-like operators, listed by
61 cfa37a7b 2004-04-10 devnull decreasing precedence.
64 cfa37a7b 2004-04-10 devnull exponentiation
66 cfa37a7b 2004-04-10 devnull .B ! - ++ --
72 cfa37a7b 2004-04-10 devnull .B > >= < <= == !=
78 cfa37a7b 2004-04-10 devnull .B = += -= *= /= %=
80 cfa37a7b 2004-04-10 devnull Built in functions are
81 cfa37a7b 2004-04-10 devnull .BR abs ,
82 cfa37a7b 2004-04-10 devnull .BR acos ,
83 cfa37a7b 2004-04-10 devnull .BR asin ,
85 cfa37a7b 2004-04-10 devnull (one argument),
86 cfa37a7b 2004-04-10 devnull .BR cos ,
87 cfa37a7b 2004-04-10 devnull .BR cosh ,
88 cfa37a7b 2004-04-10 devnull .BR exp ,
89 cfa37a7b 2004-04-10 devnull .BR int ,
90 cfa37a7b 2004-04-10 devnull .BR log ,
91 cfa37a7b 2004-04-10 devnull .BR log10 ,
92 cfa37a7b 2004-04-10 devnull .BR sin ,
93 cfa37a7b 2004-04-10 devnull .BR sinh ,
94 cfa37a7b 2004-04-10 devnull .BR sqrt ,
95 cfa37a7b 2004-04-10 devnull .BR tan ,
97 cfa37a7b 2004-04-10 devnull .BR tanh .
98 cfa37a7b 2004-04-10 devnull The function
99 cfa37a7b 2004-04-10 devnull .B read(x)
100 cfa37a7b 2004-04-10 devnull reads a value into the variable
102 cfa37a7b 2004-04-10 devnull and returns 0 at EOF;
103 cfa37a7b 2004-04-10 devnull the statement
104 cfa37a7b 2004-04-10 devnull .B print
105 cfa37a7b 2004-04-10 devnull prints a list of expressions that may include
106 cfa37a7b 2004-04-10 devnull string constants such as
107 cfa37a7b 2004-04-10 devnull \fL"hello\en"\f1.\fP
109 cfa37a7b 2004-04-10 devnull Control flow statements are
110 cfa37a7b 2004-04-10 devnull .BR if - else ,
111 cfa37a7b 2004-04-10 devnull .BR while ,
113 cfa37a7b 2004-04-10 devnull .BR for ,
114 cfa37a7b 2004-04-10 devnull with braces for grouping.
115 cfa37a7b 2004-04-10 devnull Newline ends a statement.
116 cfa37a7b 2004-04-10 devnull Backslash-newline is equivalent to a space.
118 cfa37a7b 2004-04-10 devnull Functions and procedures are introduced by the words
121 cfa37a7b 2004-04-10 devnull .BR proc ;
122 cfa37a7b 2004-04-10 devnull .B return
123 cfa37a7b 2004-04-10 devnull is used to return with a value from a function.
124 cfa37a7b 2004-04-10 devnull .SH EXAMPLES
126 cfa37a7b 2004-04-10 devnull func gcd(a, b) {
127 cfa37a7b 2004-04-10 devnull temp = abs(a) % abs(b)
128 cfa37a7b 2004-04-10 devnull if(temp == 0) return abs(b)
129 cfa37a7b 2004-04-10 devnull return gcd(b, temp)
131 cfa37a7b 2004-04-10 devnull for(i=1; i<12; i++) print gcd(i,12)
133 cfa37a7b 2004-04-10 devnull .SH SOURCE
134 c3674de4 2005-01-11 devnull .B \*9/src/cmd/hoc
135 cfa37a7b 2004-04-10 devnull .SH "SEE ALSO"
136 cfa37a7b 2004-04-10 devnull .IR bc (1),
137 cfa37a7b 2004-04-10 devnull .IR dc (1)
139 cfa37a7b 2004-04-10 devnull B. W. Kernighan and R. Pike,
141 cfa37a7b 2004-04-10 devnull The Unix Programming Environment,
142 cfa37a7b 2004-04-10 devnull Prentice-Hall, 1984
143 cfa37a7b 2004-04-10 devnull .SH BUGS
144 cfa37a7b 2004-04-10 devnull Error recovery is imperfect within function and procedure definitions.