Blame


1 cfa37a7b 2004-04-10 devnull .TH HOC 1
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull hoc \- interactive floating point language
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B hoc
6 cfa37a7b 2004-04-10 devnull [
7 cfa37a7b 2004-04-10 devnull .I file ...
8 cfa37a7b 2004-04-10 devnull ]
9 cfa37a7b 2004-04-10 devnull [
10 cfa37a7b 2004-04-10 devnull .B -e
11 cfa37a7b 2004-04-10 devnull .I expression
12 cfa37a7b 2004-04-10 devnull ]
13 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
14 cfa37a7b 2004-04-10 devnull .I Hoc
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.
18 cfa37a7b 2004-04-10 devnull .PP
19 cfa37a7b 2004-04-10 devnull The named
20 cfa37a7b 2004-04-10 devnull .I files
21 cfa37a7b 2004-04-10 devnull are read and interpreted in order.
22 cfa37a7b 2004-04-10 devnull If no
23 cfa37a7b 2004-04-10 devnull .I file
24 cfa37a7b 2004-04-10 devnull is given or if
25 cfa37a7b 2004-04-10 devnull .I file
26 cfa37a7b 2004-04-10 devnull is
27 cfa37a7b 2004-04-10 devnull .L -
28 cfa37a7b 2004-04-10 devnull .I hoc
29 cfa37a7b 2004-04-10 devnull interprets the standard input.
30 cfa37a7b 2004-04-10 devnull The
31 cfa37a7b 2004-04-10 devnull .B -e
32 cfa37a7b 2004-04-10 devnull option allows input to
33 cfa37a7b 2004-04-10 devnull .I hoc
34 cfa37a7b 2004-04-10 devnull to be specified on the command line, to be treated as if it appeared in a file.
35 cfa37a7b 2004-04-10 devnull .PP
36 cfa37a7b 2004-04-10 devnull .I Hoc
37 cfa37a7b 2004-04-10 devnull input consists of
38 cfa37a7b 2004-04-10 devnull .I expressions
39 cfa37a7b 2004-04-10 devnull and
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 .
45 cfa37a7b 2004-04-10 devnull .PP
46 cfa37a7b 2004-04-10 devnull Variable names have the usual syntax, including
47 cfa37a7b 2004-04-10 devnull .LR _ ;
48 cfa37a7b 2004-04-10 devnull the name
49 cfa37a7b 2004-04-10 devnull .L _
50 cfa37a7b 2004-04-10 devnull by itself contains the value of the last expression evaluated.
51 cfa37a7b 2004-04-10 devnull The variables
52 cfa37a7b 2004-04-10 devnull .BR E ,
53 cfa37a7b 2004-04-10 devnull .BR PI ,
54 cfa37a7b 2004-04-10 devnull .BR PHI ,
55 cfa37a7b 2004-04-10 devnull .BR GAMMA
56 cfa37a7b 2004-04-10 devnull and
57 cfa37a7b 2004-04-10 devnull .B DEG
58 cfa37a7b 2004-04-10 devnull are predefined; the last is 59.25..., degrees per radian.
59 cfa37a7b 2004-04-10 devnull .PP
60 cfa37a7b 2004-04-10 devnull Expressions are formed with these C-like operators, listed by
61 cfa37a7b 2004-04-10 devnull decreasing precedence.
62 cfa37a7b 2004-04-10 devnull .TP
63 cfa37a7b 2004-04-10 devnull .B ^
64 cfa37a7b 2004-04-10 devnull exponentiation
65 cfa37a7b 2004-04-10 devnull .TP
66 cfa37a7b 2004-04-10 devnull .B ! - ++ --
67 cfa37a7b 2004-04-10 devnull .TP
68 cfa37a7b 2004-04-10 devnull .B * / %
69 cfa37a7b 2004-04-10 devnull .TP
70 cfa37a7b 2004-04-10 devnull .B + -
71 cfa37a7b 2004-04-10 devnull .TP
72 cfa37a7b 2004-04-10 devnull .B > >= < <= == !=
73 cfa37a7b 2004-04-10 devnull .TP
74 cfa37a7b 2004-04-10 devnull .B &&
75 cfa37a7b 2004-04-10 devnull .TP
76 cfa37a7b 2004-04-10 devnull .B ||
77 cfa37a7b 2004-04-10 devnull .TP
78 cfa37a7b 2004-04-10 devnull .B = += -= *= /= %=
79 cfa37a7b 2004-04-10 devnull .PP
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 ,
84 cfa37a7b 2004-04-10 devnull .B atan
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 ,
96 cfa37a7b 2004-04-10 devnull and
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
101 cfa37a7b 2004-04-10 devnull .B x
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
108 cfa37a7b 2004-04-10 devnull .PP
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 ,
112 cfa37a7b 2004-04-10 devnull and
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.
117 cfa37a7b 2004-04-10 devnull .PP
118 cfa37a7b 2004-04-10 devnull Functions and procedures are introduced by the words
119 cfa37a7b 2004-04-10 devnull .B func
120 cfa37a7b 2004-04-10 devnull and
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
125 cfa37a7b 2004-04-10 devnull .EX
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)
130 cfa37a7b 2004-04-10 devnull }
131 cfa37a7b 2004-04-10 devnull for(i=1; i<12; i++) print gcd(i,12)
132 cfa37a7b 2004-04-10 devnull .EE
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 d32deab1 2020-08-16 rsc .MR bc (1) ,
137 d32deab1 2020-08-16 rsc .MR dc (1)
138 cfa37a7b 2004-04-10 devnull .br
139 cfa37a7b 2004-04-10 devnull B. W. Kernighan and R. Pike,
140 cfa37a7b 2004-04-10 devnull .I
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.