|
|
1.1 root 1: .TH HOC 1
2: .SH NAME
3: hoc \- interactive floating point language
4: .SH SYNOPSIS
5: .B hoc
6: [
7: .I file ...
8: ]
9: .SH DESCRIPTION
10: .I Hoc
11: interprets a simple language for floating point arithmetic,
12: at about the level of BASIC, with C-like syntax and
13: functions.
14: .PP
15: The named
16: .I files
17: are read and interpreted in order.
18: If no
19: .I file
20: is given or if
21: .I file
22: is
23: .L -
24: .I hoc
25: interprets the standard input.
26: .PP
27: .I Hoc
28: input consists of
29: .I expressions
30: and
31: .IR statements .
32: Expressions are evaluated and their results printed.
33: Statements, typically assignments and function or procedure
34: definitions, produce no output unless they explicitly call
35: .IR print .
36: .PP
37: Variable names have the usual syntax, including
38: .LR _ ;
39: the name
40: .L _
41: by itself contains the value of the last expression evaluated.
42: The variables
43: .BR E ,
44: .BR PI ,
45: .BR PHI ,
46: .BR GAMMA
47: and
48: .B DEG
49: are predefined; the last is 59.25..., degrees per radian.
50: .PP
51: Expressions are formed with these C-like operators, listed by
52: decreasing precedence.
53: .TP
54: .B ^
55: exponentiation
56: .TP
57: .B ! - ++ --
58: .TP
59: .B * / %
60: .TP
61: .B + -
62: .TP
63: .B > >= < <= == !=
64: .TP
65: .B &&
66: .TP
67: .B ||
68: .TP
69: .B = += -= *= /= %=
70: .PP
71: Built in functions are
72: .BR abs ,
73: .BR acos ,
74: .BR asin ,
75: .B atan
76: (one argument),
77: .BR cos ,
78: .BR cosh ,
79: .BR exp ,
80: .BR int ,
81: .BR log ,
82: .BR log10 ,
83: .BR sin ,
84: .BR sinh ,
85: .BR sqrt ,
86: .BR tan ,
87: and
88: .BR tanh .
89: The function
90: .B read(x)
91: reads a value into the variable
92: .B x
93: and returns 0 at EOF;
94: the statement
95: .B print
96: prints a list of expressions that may include
97: string constants such as
98: .BR \&\&\&"hello\en" .
99: .PP
100: Control flow statements are
101: .BR if - else ,
102: .BR while ,
103: and
104: .BR for ,
105: with braces for grouping.
106: Newline ends a statement.
107: Backslash-newline is equivalent to a space.
108: .PP
109: Functions and procedures are introduced by the words
110: .B func
111: and
112: .BR proc ;
113: .B return
114: is used to return with a value from a function.
115: Within a function or procedure,
116: arguments are referred to as
117: .BR $1 ,
118: .BR $2 ,
119: etc.; all other variables are global.
120: .SH EXAMPLES
121: .EX
122: func gcd() {
123: temp = abs($1) % abs($2)
124: if(temp == 0) return abs($2)
125: return gcd($2, temp)
126: }
127: for(i=1; i<12; i++) print gcd(i,12)
128: .EE
129: .SH SOURCE
130: .B /sys/src/cmd/hoc
131: .SH "SEE ALSO"
132: .IR bc (1),
133: .IR dc (1)
134: .br
135: B. W. Kernighan and R. Pike,
136: .I
137: The Unix Programming Environment,
138: Prentice-Hall, 1984
139: .SH BUGS
140: Error recovery is imperfect within function and procedure definitions.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.