1/****************************************************************
2Copyright (C) Lucent Technologies 1997
3All Rights Reserved
4
5Permission to use, copy, modify, and distribute this software and
6its documentation for any purpose and without fee is hereby
7granted, provided that the above copyright notice appear in all
8copies and that both that the copyright notice and this
9permission notice and warranty disclaimer appear in supporting
10documentation, and that the name Lucent Technologies or any of
11its entities not be used in advertising or publicity pertaining
12to distribution of the software without specific, written prior
13permission.
14
15LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
17IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
18SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
20IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
21ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
22THIS SOFTWARE.
23****************************************************************/
24
25This is the version of awk described in "The AWK Programming Language",
26by Al Aho, Brian Kernighan, and Peter Weinberger
27(Addison-Wesley, 1988, ISBN 0-201-07981-X).
28
29Changes, mostly bug fixes and occasional enhancements, are listed
30in FIXES.  If you distribute this code further, please please please
31distribute FIXES with it.  If you find errors, please report them
32to bwk@bell-labs.com.  Thanks.
33
34The program itself is created by
35	make
36which should produce a sequence of messages roughly like this:
37
38	yacc -d awkgram.y
39
40conflicts: 43 shift/reduce, 85 reduce/reduce
41	mv y.tab.c ytab.c
42	mv y.tab.h ytab.h
43	cc -c ytab.c
44	cc -c b.c
45	cc -c main.c
46	cc -c parse.c
47	cc maketab.c -o maketab
48	./maketab >proctab.c
49	cc -c proctab.c
50	cc -c tran.c
51	cc -c lib.c
52	cc -c run.c
53	cc -c lex.c
54	cc ytab.o b.o main.o parse.o proctab.o tran.o lib.o run.o lex.o -lm
55
56This produces an executable a.out; you will eventually want to
57move this to some place like /usr/bin/awk.
58
59If your system does not have yacc or bison (the GNU
60equivalent), you must compile the pieces manually.  We have
61included yacc output in ytab.c and ytab.h, and backup copies in
62case you overwrite them.  We have also included a copy of
63proctab.c so you do not need to run maketab.
64
65NOTE: This version uses ANSI C, as you should also.  We have
66compiled this without any changes using gcc -Wall and/or local C
67compilers on a variety of systems, but new systems or compilers
68may raise some new complaint; reports of difficulties are
69welcome.
70
71This also compiles with Visual C++ on all flavors of Windows,
72*if* you provide versions of popen and pclose.  The file
73missing95.c contains versions that can be used to get started
74with, though the underlying support has mysterious properties,
75the symptom of which can be truncated pipe output.  Beware.  The
76file makefile.win gives hints on how to proceed; if you run
77vcvars32.bat, it will set up necessary paths and parameters so
78you can subsequently run nmake -f makefile.win.  Beware also that
79when running on Windows under command.com, various quoting
80conventions are different from Unix systems: single quotes won't
81work around arguments, and various characters like % are
82interpreted within double quotes.
83
84This compiles without change on Macintosh OS X using gcc and
85the standard developer tools.
86
87This is also said to compile on Macintosh OS 9 systems, using the
88file "buildmac" provided by Dan Allen (danallen@microsoft.com),
89to whom many thanks.
90
91The version of malloc that comes with some systems is sometimes
92astonishly slow.  If awk seems slow, you might try fixing that.
93More generally, turning on optimization can significantly improve
94awk's speed, perhaps by 1/3 for highest levels.
95