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