⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 news

📁 flex编译器的源代码
💻
📖 第 1 页 / 共 4 页
字号:
	  the header in /usr/local/lib/g++-include instead.


Changes between release 2.4.2 (01Dec93) and release 2.4.1:

	- Fixed bug in libfl.a referring to non-existent "flexfatal" function.

	- Modified to produce both compress'd and gzip'd tar files for
	  distributions (you probably don't care about this change!).


Changes between release 2.4.1 (30Nov93) and release 2.3.8:

	- The new '-+' flag instructs flex to generate a C++ scanner class
	  (thanks to Kent Williams).  flex writes an implementation of the
	  class defined in FlexLexer.h to lex.yy.cc.  You may include
	  multiple scanner classes in your program using the -P flag.  Note
	  that the scanner class also provides a mechanism for creating
	  reentrant scanners.  The scanner class uses C++ streams for I/O
	  instead of FILE*'s (thanks to Tom Epperly).  If the flex executable's
	  name ends in '+' then the '-+' flag is automatically on, so creating
	  a symlink or copy of "flex" to "flex++" results in a version of
	  flex that can be used exclusively for C++ scanners.

	  Note that without the '-+' flag, flex-generated scanners can still
	  be compiled using C++ compilers, though they use FILE*'s for I/O
	  instead of streams.

	  See the "GENERATING C++ SCANNERS" section of flexdoc for details.

	- The new '-l' flag turns on maximum AT&T lex compatibility.  In
	  particular, -l includes support for "yylineno" and makes yytext
	  be an array instead of a pointer.  It does not, however, do away
	  with all incompatibilities.  See the "INCOMPATIBILITIES WITH LEX
	  AND POSIX" section of flexdoc for details.

	- The new '-P' option specifies a prefix to use other than "yy"
	  for the scanner's globally-visible variables, and for the
	  "lex.yy.c" filename.  Using -P you can link together multiple
	  flex scanners in the same executable.

	- The distribution includes a "texinfo" version of flexdoc.1,
	  contributed by Roland Pesch (thanks also to Marq Kole, who
	  contributed another version).  It has not been brought up to
	  date, but reflects version 2.3.  See MISC/flex.texinfo.

	  The flex distribution will soon include G.T. Nicol's flex
	  manual; he is presently bringing it up-to-date for version 2.4.

	- yywrap() is now a function, and you now *must* link flex scanners
	  with libfl.a.

	- Site-configuration is now done via an autoconf-generated
	  "configure" script contributed by Francois Pinard.

	- Scanners now use fread() (or getc(), if interactive) and not
	  read() for input.  A new "table compression" option, -Cr,
	  overrides this change and causes the scanner to use read()
	  (because read() is a bit faster than fread()).  -f and -F
	  are now equivalent to -Cfr and -CFr; i.e., they imply the
	  -Cr option.

	- In the blessed name of POSIX compliance, flex supports "%array"
	  and "%pointer" directives in the definitions (first) section of
	  the scanner specification.  The former specifies that yytext
	  should be an array (of size YYLMAX), the latter, that it should
	  be a pointer.  The array version of yytext is universally slower
	  than the pointer version, but has the advantage that its contents
	  remain unmodified across calls to input() and unput() (the pointer
	  version of yytext is, still, trashed by such calls).

	  "%array" cannot be used with the '-+' C++ scanner class option.

	- The new '-Ca' option directs flex to trade off memory for
	  natural alignment when generating a scanner's tables.  In
	  particular, table entries that would otherwise be "short"
	  become "long".

	- The new '-h' option produces a summary of the flex flags.

	- The new '-V' option reports the flex version number and exits.

	- The new scanner macro YY_START returns an integer value
	  corresponding to the current start condition.  You can return
	  to that start condition by passing the value to a subsequent
	  "BEGIN" action.  You also can implement "start condition stacks"
	  by storing the values in an integer stack.

	- You can now redefine macros such as YY_INPUT by just #define'ing
	  them to some other value in the first section of the flex input;
	  no need to first #undef them.

	- flex now generates warnings for rules that can't be matched.
	  These warnings can be turned off using the new '-w' flag.  If
	  your scanner uses REJECT then you will not get these warnings.

	- If you specify the '-s' flag but the default rule can be matched,
	  flex now generates a warning.

	- "yyleng" is now a global, and may be modified by the user (though
	  doing so and then using yymore() will yield weird results).

	- Name definitions in the first section of a scanner specification
	  can now include a leading '^' or trailing '$' operator.  In this
	  case, the definition is *not* pushed back inside of parentheses.

	- Scanners with compressed tables are now "interactive" (-I option)
	  by default.  You can suppress this attribute (which makes them
	  run slightly slower) using the new '-B' flag.

	- Flex now generates 8-bit scanners by default, unless you use the
	  -Cf or -CF compression options (-Cfe  and -CFe result in 8-bit
	  scanners).  You can force it to generate a 7-bit scanner using
	  the new '-7' flag.  You can build flex to generate 8-bit scanners
	  for -Cf and -CF, too, by adding -DDEFAULT_CSIZE=256 to CFLAGS
	  in the Makefile.

	- You no longer need to call the scanner routine yyrestart() to
	  inform the scanner that you have switched to a new file after
	  having seen an EOF on the current input file.  Instead, just
	  point yyin at the new file and continue scanning.

	- You no longer need to invoke YY_NEW_FILE in an <<EOF>> action
	  to indicate you wish to continue scanning.  Simply point yyin
	  at a new file.

	- A leading '#' no longer introduces a comment in a flex input.

	- flex no longer considers formfeed ('\f') a whitespace character.

	- %t, I'm happy to report, has been nuked.

	- The '-p' option may be given twice ('-pp') to instruct flex to
	  report minor performance problems as well as major ones.

	- The '-v' verbose output no longer includes start/finish time
	  information.

	- Newlines in flex inputs can optionally include leading or
	  trailing carriage-returns ('\r'), in support of several PC/Mac
	  run-time libraries that automatically include these.

	- A start condition of the form "<*>" makes the following rule
	  active in every start condition, whether exclusive or inclusive.

	- The following items have been corrected in the flex documentation:

		- '-C' table compression options *are* cumulative.

		- You may modify yytext but not lengthen it by appending
		  characters to the end.  Modifying its final character
		  will affect '^' anchoring for the next rule matched
		  if the character is changed to or from a newline.

		- The term "backtracking" has been renamed "backing up",
		  since it is a one-time repositioning and not a repeated
		  search.  What used to be the "lex.backtrack" file is now
		  "lex.backup".

		- Unindented "/* ... */" comments are allowed in the first
		  flex input section, but not in the second.

		- yyless() can only be used in the flex input source, not
		  externally.

		- You can use "yyrestart(yyin)" to throw away the
		  current contents of the input buffer.

		- To write high-speed scanners, attempt to match as much
		  text as possible with each rule.  See MISC/fastwc/README
		  for more information.

		- Using the beginning-of-line operator ('^') is fairly
		  cheap.  Using unput() is expensive.  Using yyless() is
		  cheap.

		- An example of scanning strings with embedded escape
		  sequences has been added.

		- The example of backing-up in flexdoc was erroneous; it
		  has been corrected.

	- A flex scanner's internal buffer now dynamically grows if needed
	  to match large tokens.  Note that growing the buffer presently
	  requires rescanning the (large) token, so consuming a lot of
	  text this way is a slow process.  Also note that presently the
	  buffer does *not* grow if you unput() more text than can fit
	  into the buffer.

	- The MISC/ directory has been reorganized; see MISC/README for
	  details.

	- yyless() can now be used in the third (user action) section
	  of a scanner specification, thanks to Ceriel Jacobs.  yyless()
	  remains a macro and cannot be used outside of the scanner source.

	- The skeleton file is no longer opened at run-time, but instead
	  compiled into a large string array (thanks to John Gilmore and
	  friends at Cygnus).  You can still use the -S flag to point flex
	  at a different skeleton file.

	- flex no longer uses a temporary file to store the scanner's
	  actions.

	- A number of changes have been made to decrease porting headaches.
	  In particular, flex no longer uses memset() or ctime(), and
	  provides a single simple mechanism for dealing with C compilers
	  that still define malloc() as returning char* instead of void*.

	- Flex now detects if the scanner specification requires the -8 flag
	  but the flag was not given or on by default.

	- A number of table-expansion fencepost bugs have been fixed,
	  making flex more robust for generating large scanners.

	- flex more consistently identifies the location of errors in
	  its input.

	- YY_USER_ACTION is now invoked only for "real" actions, not for
	  internal actions used by the scanner for things like filling
	  the buffer or handling EOF.

	- The rule "[^]]" now matches any character other than a ']';
	  formerly it matched any character at all followed by a ']'.
	  This change was made for compatibility with AT&T lex.

	- A large number of miscellaneous bugs have been found and fixed
	  thanks to Gerhard Wilhelms.

	- The source code has been heavily reformatted, making patches
	  relative to previous flex releases no longer accurate.


Changes between 2.3 Patch #8 (21Feb93) and 2.3 Patch #7:

	- Fixed bugs in dynamic memory allocation leading to grievous
	  fencepost problems when generating large scanners.
	- Fixed bug causing infinite loops on character classes with 8-bit
	  characters in them.
	- Fixed bug in matching repetitions with a lower bound of 0.
	- Fixed bug in scanning NUL characters using an "interactive" scanner.
	- Fixed bug in using yymore() at the end of a file.
	- Fixed bug in misrecognizing rules with variable trailing context.
	- Fixed bug compiling flex on Suns using gcc 2.
	- Fixed bug in not recognizing that input files with the character
	  ASCII 128 in them require the -8 flag.
	- Fixed bug that could cause an infinite loop writing out
	  error messages.
	- Fixed bug in not recognizing old-style lex % declarations if
	  followed by a tab instead of a space.
	- Fixed potential crash when flex terminated early (usually due
	  to a bad flag) and the -v flag had been given.
	- Added some missing declarations of void functions.
	- Changed to only use '\a' for __STDC__ compilers.
	- Updated mailing addresses.


Changes between 2.3 Patch #7 (28Mar91) and 2.3 Patch #6:

	- Fixed out-of-bounds array access that caused bad tables
	  to be produced on machines where the bad reference happened
	  to yield a 1.  This caused problems installing or running
	  flex on some Suns, in particular.


Changes between 2.3 Patch #6 (29Aug90) and 2.3 Patch #5:

	- Fixed a serious bug in yymore() which basically made it
	  completely broken.  Thanks goes to Jean Christophe of
	  the Nethack development team for finding the problem
	  and passing along the fix.


Changes between 2.3 Patch #5 (16Aug90) and 2.3 Patch #4:

	- An up-to-date version of initscan.c so "make test" will
	  work after applying the previous patches


Changes between 2.3 Patch #4 (14Aug90) and 2.3 Patch #3:

	- Fixed bug in hexadecimal escapes which allowed only digits,
	  not letters, in escapes
	- Fixed bug in previous "Changes" file!


Changes between 2.3 Patch #3 (03Aug90) and 2.3 Patch #2:

	- Correction to patch #2 for gcc compilation; thanks goes to
	  Paul Eggert for catching this.


Changes between 2.3 Patch #2 (02Aug90) and original 2.3 release:

	- Fixed (hopefully) headaches involving declaring malloc()
	  and free() for gcc, which defines __STDC__ but (often) doesn't
	  come with the standard include files such as <stdlib.h>.
	  Reordered #ifdef maze in the scanner skeleton in the hope of
	  getting the declarations right for cfront and g++, too.

	- Note that this patch supercedes patch #1 for release 2.3,
	  which was never announced but was available briefly for

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -