source: trunk/essentials/sys-devel/flex/ONEWS@ 3186

Last change on this file since 3186 was 3043, checked in by bird, 19 years ago

-> essentials

File size: 45.2 KB
Line 
1Changes between release 2.5.4 (11Sep96) and release 2.5.3:
2
3 - Fixed a bug introduced in 2.5.3 that blew it when a call
4 to input() occurred at the end of an input file.
5
6 - Fixed scanner skeleton so the example in the man page of
7 scanning strings using exclusive start conditions works.
8
9 - Minor Makefile tweaks.
10
11
12Changes between release 2.5.3 (29May96) and release 2.5.2:
13
14 - Some serious bugs in yymore() have been fixed. In particular,
15 when using AT&T-lex-compatibility or %array, you can intermix
16 calls to input(), unput(), and yymore(). (This still doesn't
17 work for %pointer, and isn't likely to in the future.)
18
19 - A bug in handling NUL's in the input stream of scanners using
20 REJECT has been fixed.
21
22 - The default main() in libfl.a now repeatedly calls yylex() until
23 it returns 0, rather than just calling it once.
24
25 - Minor tweak for Windows NT Makefile, MISC/NT/Makefile.
26
27
28Changes between release 2.5.2 (25Apr95) and release 2.5.1:
29
30 - The --prefix configuration option now works.
31
32 - A bug that completely broke the "-Cf" table compression
33 option has been fixed.
34
35 - A major headache involving "const" declarators and Solaris
36 systems has been fixed.
37
38 - An octal escape sequence in a flex regular expression must
39 now contain only the digits 0-7.
40
41 - You can now use "--" on the flex command line to mark the
42 end of flex options.
43
44 - You can now specify the filename '-' as a synonym for stdin.
45
46 - By default, the scanners generated by flex no longer
47 statically initialize yyin and yyout to stdin and stdout.
48 This change is necessary because in some ANSI environments,
49 stdin and stdout are not compile-time constant. You can
50 force the initialization using "%option stdinit" in the first
51 section of your flex input.
52
53 - "%option nounput" now correctly omits the unput() routine
54 from the output.
55
56 - "make clean" now removes config.log, config.cache, and the
57 flex binary. The fact that it removes the flex binary means
58 you should take care if making changes to scan.l, to make
59 sure you don't wind up in a bootstrap problem.
60
61 - In general, the Makefile has been reworked somewhat (thanks
62 to Francois Pinard) for added flexibility - more changes will
63 follow in subsequent releases.
64
65 - The .texi and .info files in MISC/texinfo/ have been updated,
66 thanks also to Francois Pinard.
67
68 - The FlexLexer::yylex(istream* new_in, ostream* new_out) method
69 now does not have a default for the first argument, to disambiguate
70 it from FlexLexer::yylex().
71
72 - A bug in destructing a FlexLexer object before doing any scanning
73 with it has been fixed.
74
75 - A problem with including FlexLexer.h multiple times has been fixed.
76
77 - The alloca() chud necessary to accommodate bison has grown
78 even uglier, but hopefully more correct.
79
80 - A portability tweak has been added to accommodate compilers that
81 use char* generic pointers.
82
83 - EBCDIC contact information in the file MISC/EBCDIC has been updated.
84
85 - An OS/2 Makefile and config.h for flex 2.5 is now available in
86 MISC/OS2/, contributed by Kai Uwe Rommel.
87
88 - The descrip.mms file for building flex under VMS has been updated,
89 thanks to Pat Rankin.
90
91 - The notes on building flex for the Amiga have been updated for
92 flex 2.5, contributed by Andreas Scherer.
93
94
95Changes between release 2.5.1 (28Mar95) and release 2.4.7:
96
97 - A new concept of "start condition" scope has been introduced.
98 A start condition scope is begun with:
99
100 <SCs>{
101
102 where SCs is a list of one or more start conditions. Inside
103 the start condition scope, every rule automatically has the
104 prefix <SCs> applied to it, until a '}' which matches the
105 initial '{'. So, for example:
106
107 <ESC>{
108 "\\n" return '\n';
109 "\\r" return '\r';
110 "\\f" return '\f';
111 "\\0" return '\0';
112 }
113
114 is equivalent to:
115
116 <ESC>"\\n" return '\n';
117 <ESC>"\\r" return '\r';
118 <ESC>"\\f" return '\f';
119 <ESC>"\\0" return '\0';
120
121 As indicated in this example, rules inside start condition scopes
122 (and any rule, actually, other than the first) can be indented,
123 to better show the extent of the scope.
124
125 Start condition scopes may be nested.
126
127 - The new %option directive can be used in the first section of
128 a flex scanner to control scanner-generation options. Most
129 options are given simply as names, optionally preceded by the
130 word "no" (with no intervening whitespace) to negate their
131 meaning. Some are equivalent to flex flags, so putting them
132 in your scanner source is equivalent to always specifying
133 the flag (%option's take precedence over flags):
134
135 7bit -7 option
136 8bit -8 option
137 align -Ca option
138 backup -b option
139 batch -B option
140 c++ -+ option
141 caseful opposite of -i option (caseful is the default);
142 case-sensitive same as above
143 caseless -i option;
144 case-insensitive same as above
145 debug -d option
146 default opposite of -s option
147 ecs -Ce option
148 fast -F option
149 full -f option
150 interactive -I option
151 lex-compat -l option
152 meta-ecs -Cm option
153 perf-report -p option
154 read -Cr option
155 stdout -t option
156 verbose -v option
157 warn opposite of -w option (so use "%option nowarn" for -w)
158
159 array equivalent to "%array"
160 pointer equivalent to "%pointer" (default)
161
162 Some provide new features:
163
164 always-interactive generate a scanner which always
165 considers its input "interactive" (no call to isatty()
166 will be made when the scanner runs)
167 main supply a main program for the scanner, which
168 simply calls yylex(). Implies %option noyywrap.
169 never-interactive generate a scanner which never