xref: /plan9/sys/man/1/hoc (revision a7529a1d594550a832531a572a2b23b6cce7f7a4)
HOC 1
NAME
hoc - interactive floating point language
SYNOPSIS
hoc [ -e expression ] [ file ... ]
DESCRIPTION
Hoc interprets a simple language for floating point arithmetic, at about the level of BASIC, with C-like syntax and functions.

The named files are read and interpreted in order. If no file is given or if file is .L - hoc interprets the standard input. The -e option allows input to hoc to be specified on the command line, to be treated as if it appeared in a file.

Hoc input consists of expressions and statements . Expressions are evaluated and their results printed. Statements, typically assignments and function or procedure definitions, produce no output unless they explicitly call print .

Variable names have the usual syntax, including .LR _ ; the name .L _ by itself contains the value of the last expression evaluated. The variables E , PI , PHI , GAMMA and DEG are predefined; the last is 59.25..., degrees per radian.

Expressions are formed with these C-like operators, listed by decreasing precedence.

^ exponentiation

! - ++ --

* / %

+ -

> >= < <= == !=

&&

||

= += -= *= /= %=

Built in functions are abs , acos , asin , atan (one argument), cos , cosh , exp , int , log , log10 , sin , sinh , sqrt , tan , and tanh . The function read(x) reads a value into the variable x and returns 0 at EOF; the statement print prints a list of expressions that may include string constants such as \fL"hello\en"\f1.

Control flow statements are if - else , while , and for , with braces for grouping. Newline ends a statement. Backslash-newline is equivalent to a space.

Functions and procedures are introduced by the words func and proc ; return is used to return with a value from a function.

EXAMPLES
.EX func gcd(a, b) { temp = abs(a) % abs(b) if(temp == 0) return abs(b) return gcd(b, temp) } for(i=1; i<12; i++) print gcd(i,12)
SOURCE
/sys/src/cmd/hoc
"SEE ALSO"
bc (1), dc (1)

B. W. Kernighan and R. Pike, The Unix Programming Environment, Prentice-Hall, 1984

BUGS
Error recovery is imperfect within function and procedure definitions.