| 1 | Changes 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 |
|
|---|
| 12 | Changes 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 |
|
|---|
| 28 | Changes 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 |
|
|---|
| 95 | Changes 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
|
|---|
|
|---|