123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- .TH HOC 1
- .SH NAME
- hoc \- interactive floating point language
- .SH SYNOPSIS
- .B hoc
- [
- .I file ...
- ]
- [
- .B -e
- .I expression
- ]
- .SH DESCRIPTION
- .I Hoc
- interprets a simple language for floating point arithmetic,
- at about the level of BASIC, with C-like syntax and
- functions.
- .PP
- The named
- .I files
- are read and interpreted in order.
- If no
- .I file
- is given or if
- .I file
- is
- .L -
- .I hoc
- interprets the standard input.
- The
- .B -e
- option allows input to
- .I hoc
- to be specified on the command line, to be treated as if it appeared in a file.
- .PP
- .I Hoc
- input consists of
- .I expressions
- and
- .IR statements .
- Expressions are evaluated and their results printed.
- Statements, typically assignments and function or procedure
- definitions, produce no output unless they explicitly call
- .IR print .
- .PP
- Variable names have the usual syntax, including
- .LR _ ;
- the name
- .L _
- by itself contains the value of the last expression evaluated.
- The variables
- .BR E ,
- .BR PI ,
- .BR PHI ,
- .BR GAMMA
- and
- .B DEG
- are predefined; the last is 59.25..., degrees per radian.
- .PP
- Expressions are formed with these C-like operators, listed by
- decreasing precedence.
- .TP
- .B ^
- exponentiation
- .TP
- .B ! - ++ --
- .TP
- .B * / %
- .TP
- .B + -
- .TP
- .B > >= < <= == !=
- .TP
- .B &&
- .TP
- .B ||
- .TP
- .B = += -= *= /= %=
- .PP
- Built in functions are
- .BR abs ,
- .BR acos ,
- .BR asin ,
- .B atan
- (one argument),
- .BR cos ,
- .BR cosh ,
- .BR exp ,
- .BR int ,
- .BR log ,
- .BR log10 ,
- .BR sin ,
- .BR sinh ,
- .BR sqrt ,
- .BR tan ,
- and
- .BR tanh .
- The function
- .B read(x)
- reads a value into the variable
- .B x
- and returns 0 at EOF;
- the statement
- .B print
- prints a list of expressions that may include
- string constants such as
- \fL"hello\en"\f1.\fP
- .PP
- Control flow statements are
- .BR if - else ,
- .BR while ,
- and
- .BR for ,
- with braces for grouping.
- Newline ends a statement.
- Backslash-newline is equivalent to a space.
- .PP
- Functions and procedures are introduced by the words
- .B func
- and
- .BR proc ;
- .B return
- is used to return with a value from a function.
- .SH 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)
- .EE
- .SH SOURCE
- .B /sys/src/cmd/hoc
- .SH "SEE ALSO"
- .IR bc (1),
- .IR dc (1)
- .br
- B. W. Kernighan and R. Pike,
- .I
- The Unix Programming Environment,
- Prentice-Hall, 1984
- .SH BUGS
- Error recovery is imperfect within function and procedure definitions.
|