|
|
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.