|
|
1.1 root 1: CHANGES as of July 12:
2:
3: 1. \ddd allowed in regular expressions.
4:
5: 2. exit <expression> causes the expression to
6: to be the status return upon completion.
7:
8: 3. a new builtin called "getline" causes the next
9: input line to be read immediately. Fields, NR, etc.,
10: are all set, but you are left at exactly the same place
11: in the awk program. Getline returns 0 for end of file;
12: 1 for a normal record.
13:
14:
15: CHANGES SINCE MEMO:
16: Update to TM of Sept 1, 1978:
17:
18: 1. A new form of for loop
19: for (i in array)
20: statement
21: is now available. It provides a way to walk
22: along the members of an array, most usefully
23: for associative arrays with non-numeric subscripts.
24: Elements are accessed in an unpredictable order,
25: so don't count on anything.
26: Futhermore, havoc ensues if elements are created
27: during this operation, or if the index variable
28: is fiddled.
29:
30: 2. index(s1, s2) returns the position in s1
31: where s2 first occurs, or 0 if it doesn't.
32:
33: 3. Multi-line records are now supported more
34: conveniently. If the record separator is null
35: RS = ""
36: then a blank line terminates a record, and newline
37: is a default field separator, along with
38: blank and tab.
39:
40: 4. The syntax of split has been changed.
41: n = split(str, arrayname, sep)
42: splits the string str into the array using
43: the separator sep (a single character).
44: If no sep field is given, FS is used instead.
45: The elements are array[1] ... array[n]; n
46: is the function value.
47:
48: 5. some minor bugs have been fixed.
49:
50: IMPLEMENTATION NOTES:
51:
52: Things to watch out for when trying to make awk:
53:
54: 1. The yacc -d business creates a new file y.tab.h
55: with the yacc #defines in it. this is compared to
56: awk.h on each successive compile, and major recompilation
57: is done only if the files differ. (This permits editing
58: the grammar file without causing everything in sight
59: to be recompiled, so long as the definitions don't
60: change.)
61:
62: 2. The program proc.c is compiled into proc, which
63: is used to create proctab.c. proctab.c is the
64: table of function pointers used by run to actually
65: execute things. Don't try to load proc.c with the
66: other .c files; it also contains a "main()".
67:
68: 3. Awk uses structure assignment. Be sure your
69: version of the C compiler has it.
70:
71: 4. The loader flag -lm is used to fetch the standard
72: math library on the Research system. It is more likely
73: that you will want to use -lS on yours.
74: run.c also includes "math.h", which contains sensible
75: definitions for log(), sqrt(), etc. If you don't have this
76: include file, comment the line out, and all will be well
77: anyway.
78:
79: 5. The basic sequence of events (in case make doesn't
80: seem to do the job) is
81: yacc -d awk.g.y
82: cc -O -c y.tab.c
83: mv y.tab.o awk.g.o
84: lex awk.lx.l
85: cc -O -c lex.yy.c
86: mv lex.yy.o awk.lx.o
87: cc -O -c b.c
88: cc -O -c main.c
89: e - <tokenscript
90: cc -O -c token.c
91: cc -O -c tran.c
92: cc -O -c lib.c
93: cc -O -c run.c
94: cc -O -c parse.c
95: cc -O -c proc.c
96: cc -o proc proc.c token.o
97: proc >proctab.c
98: cc -O -c proctab.c
99: cc -i -O awk.g.o awk.lx.o b.o main.o token.o tran.o lib.o run.o parse.o proctab.o -lm
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.