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