Commit | Line | Data |
---|---|---|
f87489ac WJ |
1 | Program: GNU bc |
2 | Author: Philip A. Nelson | |
3 | E-mail: phil@cs.wwu.edu | |
4 | OS: UNIX (BSD, System V, MINIX, POSIX) | |
5 | Copying: GNU GPL version 2 | |
6 | Copyright holder: Free Software Foundation, Inc. | |
7 | Version: bc version 1.01 | |
8 | Required: vsprintf and vfprintf routines. | |
9 | Machines: It has been compiled and run on the following environments: | |
10 | BSD4.3 (VAX 11) | |
11 | MINIX 1.5 (IBM PC, both K&R and ANSI compilers) | |
12 | MINIX 1.5 (pc532) | |
13 | SUN-OS 4.1 (SUN 3 and SUN 4) | |
14 | SVR3V5 (Motorola 68K) | |
15 | SVR3.2 (3B2) | |
16 | SVR4.0.2 (a 386 box) | |
17 | ULTRIX 4.1 (DEC 5000) | |
18 | UTS (Amdahl) | |
19 | ||
20 | bc is an arbitrary precision numeric processing language. Syntax is | |
21 | similar to C, but differs in many substantial areas. It supports | |
22 | interactive execution of statements. bc is a utility included in the | |
23 | POSIX P1003.2/D11 draft standard. | |
24 | ||
25 | This version was written to be a POSIX compliant bc processor with | |
26 | several extensions to the draft standard. Option flags are available | |
27 | to cause warning or rejection of the extensions to the POSIX standard. | |
28 | For those who want only POSIX bc with no extensions, a grammar is | |
29 | provided for exactly the language described in the POSIX document. | |
30 | The grammar (sbc.y) comes from the POSIX document. The Makefile | |
31 | contains rules to make sbc. (for Standard BC) | |
32 | ||
33 | Since the POSIX document does not specify how bc must be implemented, | |
34 | this version does not use the historical method of having bc be a | |
35 | compiler for the dc calculator. This version has a single executable | |
36 | that both compiles the language and runs the a resulting "byte code". | |
37 | The "byte code" is NOT the dc language. | |
38 | ||
39 | Also, included in the initial distribution is the library file | |
40 | vfprintf.c for MINIX systems. My minix 1.5 did not have this file. | |
41 | Also, you should verify that vsprintf.c works correctly on your | |
42 | system. | |
43 | ||
44 | The extensions add some features I think are missing. The major | |
45 | changes and additions for bc are (a) names are allowed to be full | |
46 | identifiers ([a-z][a-z0-9_]*), (b) addition of the &&, ||, and ! | |
47 | operators, (c) allowing comparison and boolean operations in any | |
48 | expression, (d) addition of an else clause to the if statement, (e) | |
49 | addition of a new standard function "read()" that reads a number from | |
50 | the standard input under program control, (f) passing of arrays as | |
51 | parameters by variable, (g) addition of the "halt" statement that is | |
52 | an executable statement unlike the quit (i.e. "if (1 == 0) quit" will | |
53 | halt bc but "if (1 == 0) halt" will not halt bc.), and (h) the | |
54 | addition of the special variable "last" that is assigned the value of | |
55 | each print as the number is printed. |