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