Blame ONEWS

Packit f00812
Changes between release 2.5.4 (11Sep96) and release 2.5.3:
Packit f00812
Packit f00812
	- Fixed a bug introduced in 2.5.3 that blew it when a call
Packit f00812
	  to input() occurred at the end of an input file.
Packit f00812
Packit f00812
	- Fixed scanner skeleton so the example in the man page of
Packit f00812
	  scanning strings using exclusive start conditions works.
Packit f00812
Packit f00812
	- Minor Makefile tweaks.
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.5.3 (29May96) and release 2.5.2:
Packit f00812
Packit f00812
	- Some serious bugs in yymore() have been fixed.  In particular,
Packit f00812
	  when using AT&T-lex-compatibility or %array, you can intermix
Packit f00812
	  calls to input(), unput(), and yymore().  (This still doesn't
Packit f00812
	  work for %pointer, and isn't likely to in the future.)
Packit f00812
Packit f00812
	- A bug in handling NUL's in the input stream of scanners using
Packit f00812
	  REJECT has been fixed.
Packit f00812
Packit f00812
	- The default main() in libfl.a now repeatedly calls yylex() until
Packit f00812
	  it returns 0, rather than just calling it once.
Packit f00812
Packit f00812
	- Minor tweak for Windows NT Makefile, MISC/NT/Makefile.
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.5.2 (25Apr95) and release 2.5.1:
Packit f00812
Packit f00812
	- The --prefix configuration option now works.
Packit f00812
Packit f00812
	- A bug that completely broke the "-Cf" table compression
Packit f00812
	  option has been fixed.
Packit f00812
Packit f00812
	- A major headache involving "const" declarators and Solaris
Packit f00812
	  systems has been fixed.
Packit f00812
Packit f00812
	- An octal escape sequence in a flex regular expression must
Packit f00812
	  now contain only the digits 0-7.
Packit f00812
Packit f00812
	- You can now use "--" on the flex command line to mark the
Packit f00812
	  end of flex options.
Packit f00812
Packit f00812
	- You can now specify the filename '-' as a synonym for stdin.
Packit f00812
Packit f00812
	- By default, the scanners generated by flex no longer
Packit f00812
	  statically initialize yyin and yyout to stdin and stdout.
Packit f00812
	  This change is necessary because in some ANSI environments,
Packit f00812
	  stdin and stdout are not compile-time constant.  You can
Packit f00812
	  force the initialization using "%option stdinit" in the first
Packit f00812
	  section of your flex input.
Packit f00812
Packit f00812
	- "%option nounput" now correctly omits the unput() routine
Packit f00812
	  from the output.
Packit f00812
Packit f00812
	- "make clean" now removes config.log, config.cache, and the
Packit f00812
	  flex binary.  The fact that it removes the flex binary means
Packit f00812
	  you should take care if making changes to scan.l, to make
Packit f00812
	  sure you don't wind up in a bootstrap problem.
Packit f00812
Packit f00812
	- In general, the Makefile has been reworked somewhat (thanks
Packit f00812
	  to Francois Pinard) for added flexibility - more changes will
Packit f00812
	  follow in subsequent releases.
Packit f00812
Packit f00812
	- The .texi and .info files in MISC/texinfo/ have been updated,
Packit f00812
	  thanks also to Francois Pinard.
Packit f00812
Packit f00812
	- The FlexLexer::yylex(istream* new_in, ostream* new_out) method
Packit f00812
	  now does not have a default for the first argument, to disambiguate
Packit f00812
	  it from FlexLexer::yylex().
Packit f00812
Packit f00812
	- A bug in destructing a FlexLexer object before doing any scanning
Packit f00812
	  with it has been fixed.
Packit f00812
Packit f00812
	- A problem with including FlexLexer.h multiple times has been fixed.
Packit f00812
Packit f00812
	- The alloca() chud necessary to accommodate bison has grown
Packit f00812
	  even uglier, but hopefully more correct.
Packit f00812
Packit f00812
	- A portability tweak has been added to accommodate compilers that
Packit f00812
	  use char* generic pointers.
Packit f00812
Packit f00812
	- EBCDIC contact information in the file MISC/EBCDIC has been updated.
Packit f00812
Packit f00812
	- An OS/2 Makefile and config.h for flex 2.5 is now available in
Packit f00812
	  MISC/OS2/, contributed by Kai Uwe Rommel.
Packit f00812
Packit f00812
	- The descrip.mms file for building flex under VMS has been updated,
Packit f00812
	  thanks to Pat Rankin.
Packit f00812
Packit f00812
	- The notes on building flex for the Amiga have been updated for
Packit f00812
	  flex 2.5, contributed by Andreas Scherer.
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.5.1 (28Mar95) and release 2.4.7:
Packit f00812
Packit f00812
	- A new concept of "start condition" scope has been introduced.
Packit f00812
	  A start condition scope is begun with:
Packit f00812
Packit f00812
		<SCs>{
Packit f00812
Packit f00812
	  where SCs is a list of one or more start conditions.  Inside
Packit f00812
	  the start condition scope, every rule automatically has the
Packit f00812
	  prefix <SCs> applied to it, until a '}' which matches the
Packit f00812
	  initial '{'.  So, for example:
Packit f00812
Packit f00812
		<ESC>{
Packit f00812
			"\\n"	return '\n';
Packit f00812
			"\\r"	return '\r';
Packit f00812
			"\\f"	return '\f';
Packit f00812
			"\\0"	return '\0';
Packit f00812
		}
Packit f00812
Packit f00812
	  is equivalent to:
Packit f00812
Packit f00812
		<ESC>"\\n"	return '\n';
Packit f00812
		<ESC>"\\r"	return '\r';
Packit f00812
		<ESC>"\\f"	return '\f';
Packit f00812
		<ESC>"\\0"	return '\0';
Packit f00812
Packit f00812
	  As indicated in this example, rules inside start condition scopes
Packit f00812
	  (and any rule, actually, other than the first) can be indented,
Packit f00812
	  to better show the extent of the scope.
Packit f00812
Packit f00812
	  Start condition scopes may be nested.
Packit f00812
Packit f00812
	- The new %option directive can be used in the first section of
Packit f00812
	  a flex scanner to control scanner-generation options.  Most
Packit f00812
	  options are given simply as names, optionally preceded by the
Packit f00812
	  word "no" (with no intervening whitespace) to negate their
Packit f00812
	  meaning.  Some are equivalent to flex flags, so putting them
Packit f00812
	  in your scanner source is equivalent to always specifying
Packit f00812
	  the flag (%option's take precedence over flags):
Packit f00812
Packit f00812
		7bit	-7 option
Packit f00812
		8bit	-8 option
Packit f00812
		align	-Ca option
Packit f00812
		backup	-b option
Packit f00812
		batch	-B option
Packit f00812
		c++	-+ option
Packit f00812
		caseful	opposite of -i option (caseful is the default);
Packit f00812
		case-sensitive	same as above
Packit f00812
		caseless	-i option;
Packit f00812
		case-insensitive	same as above
Packit f00812
		debug	-d option
Packit f00812
		default	opposite of -s option
Packit f00812
		ecs	-Ce option
Packit f00812
		fast	-F option
Packit f00812
		full	-f option
Packit f00812
		interactive	-I option
Packit f00812
		lex-compat	-l option
Packit f00812
		meta-ecs	-Cm option
Packit f00812
		perf-report	-p option
Packit f00812
		read	-Cr option
Packit f00812
		stdout	-t option
Packit f00812
		verbose	-v option
Packit f00812
		warn	opposite of -w option (so use "%option nowarn" for -w)
Packit f00812
Packit f00812
		array	equivalent to "%array"
Packit f00812
		pointer	equivalent to "%pointer" (default)
Packit f00812
Packit f00812
	  Some provide new features:
Packit f00812
Packit f00812
		always-interactive	generate a scanner which always
Packit f00812
			considers its input "interactive" (no call to isatty()
Packit f00812
			will be made when the scanner runs)
Packit f00812
		main	supply a main program for the scanner, which
Packit f00812
			simply calls yylex().  Implies %option noyywrap.
Packit f00812
		never-interactive	generate a scanner which never
Packit f00812
			considers its input "interactive" (no call to isatty()
Packit f00812
			will be made when the scanner runs)
Packit f00812
		stack	if set, enable start condition stacks (see below)
Packit f00812
		stdinit	if unset ("%option nostdinit"), initialize yyin
Packit f00812
			and yyout statically to nil FILE* pointers, instead
Packit f00812
			of stdin and stdout
Packit f00812
		yylineno	if set, keep track of the current line
Packit f00812
			number in global yylineno (this option is expensive
Packit f00812
			in terms of performance).  The line number is available
Packit f00812
			to C++ scanning objects via the new member function
Packit f00812
			lineno().
Packit f00812
		yywrap	if unset ("%option noyywrap"), scanner does not
Packit f00812
			call yywrap() upon EOF but simply assumes there
Packit f00812
			are no more files to scan
Packit f00812
Packit f00812
	  Flex scans your rule actions to determine whether you use the
Packit f00812
	  REJECT or yymore features (this is not new).  Two %options can be
Packit f00812
	  used to override its decision, either by setting them to indicate
Packit f00812
	  the feature is indeed used, or unsetting them to indicate it
Packit f00812
	  actually is not used:
Packit f00812
Packit f00812
		reject
Packit f00812
		yymore
Packit f00812
Packit f00812
	  Three %option's take string-delimited values, offset with '=':
Packit f00812
Packit f00812
		outfile="<name>"	equivalent to -o<name>
Packit f00812
		prefix="<name>"		equivalent to -P<name>
Packit f00812
		yyclass="<name>"	set the name of the C++ scanning class
Packit f00812
					(see below)
Packit f00812
Packit f00812
	  A number of %option's are available for lint purists who
Packit f00812
	  want to suppress the appearance of unneeded routines in
Packit f00812
	  the generated scanner.  Each of the following, if unset,
Packit f00812
	  results in the corresponding routine not appearing in the
Packit f00812
	  generated scanner:
Packit f00812
Packit f00812
		input, unput
Packit f00812
		yy_push_state, yy_pop_state, yy_top_state
Packit f00812
		yy_scan_buffer, yy_scan_bytes, yy_scan_string
Packit f00812
Packit f00812
	  You can specify multiple options with a single %option directive,
Packit f00812
	  and multiple directives in the first section of your flex input file.
Packit f00812
Packit f00812
	- The new function:
Packit f00812
Packit f00812
		YY_BUFFER_STATE yy_scan_string( const char *str )
Packit f00812
Packit f00812
	  returns a YY_BUFFER_STATE (which also becomes the current input
Packit f00812
	  buffer) for scanning the given string, which occurs starting
Packit f00812
	  with the next call to yylex().  The string must be NUL-terminated.
Packit f00812
	  A related function:
Packit f00812
Packit f00812
		YY_BUFFER_STATE yy_scan_bytes( const char *bytes, int len )
Packit f00812
Packit f00812
	  creates a buffer for scanning "len" bytes (including possibly NUL's)
Packit f00812
	  starting at location "bytes".
Packit f00812
Packit f00812
	  Note that both of these functions create and scan a *copy* of
Packit f00812
	  the string/bytes.  (This may be desirable, since yylex() modifies
Packit f00812
	  the contents of the buffer it is scanning.)  You can avoid the
Packit f00812
	  copy by using:
Packit f00812
Packit f00812
		YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
Packit f00812
Packit f00812
	  which scans in place the buffer starting at "base", consisting
Packit f00812
	  of "size" bytes, the last two bytes of which *must* be
Packit f00812
	  YY_END_OF_BUFFER_CHAR (these bytes are not scanned; thus, scanning
Packit f00812
	  consists of base[0] through base[size-2], inclusive).  If you
Packit f00812
	  fail to set up "base" in this manner, yy_scan_buffer returns a
Packit f00812
	  nil pointer instead of creating a new input buffer.
Packit f00812
Packit f00812
	  The type yy_size_t is an integral type to which you can cast
Packit f00812
	  an integer expression reflecting the size of the buffer.
Packit f00812
Packit f00812
	- Three new routines are available for manipulating stacks of
Packit f00812
	  start conditions:
Packit f00812
Packit f00812
		void yy_push_state( int new_state )
Packit f00812
Packit f00812
	  pushes the current start condition onto the top of the stack
Packit f00812
	  and BEGIN's "new_state" (recall that start condition names are
Packit f00812
	  also integers).
Packit f00812
Packit f00812
		void yy_pop_state()
Packit f00812
Packit f00812
	  pops the top of the stack and BEGIN's to it, and
Packit f00812
Packit f00812
		int yy_top_state()
Packit f00812
Packit f00812
	  returns the top of the stack without altering the stack's
Packit f00812
	  contents.
Packit f00812
Packit f00812
	  The start condition stack grows dynamically and so has no built-in
Packit f00812
	  size limitation.  If memory is exhausted, program execution
Packit f00812
	  is aborted.
Packit f00812
Packit f00812
	  To use start condition stacks, your scanner must include
Packit f00812
	  a "%option stack" directive.
Packit f00812
Packit f00812
	- flex now supports POSIX character class expressions.  These
Packit f00812
	  are expressions enclosed inside "[:" and ":]" delimiters (which
Packit f00812
	  themselves must appear between the '[' and ']' of a character
Packit f00812
	  class; other elements may occur inside the character class, too).
Packit f00812
	  The expressions flex recognizes are:
Packit f00812
Packit f00812
		[:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:]	
Packit f00812
		[:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:]
Packit f00812
Packit f00812
	  These expressions all designate a set of characters equivalent to
Packit f00812
	  the corresponding isXXX function (for example, [:alnum:] designates
Packit f00812
	  those characters for which isalnum() returns true - i.e., any
Packit f00812
	  alphabetic or numeric).  Some systems don't provide isblank(),
Packit f00812
	  so flex defines [:blank:] as a blank or a tab.
Packit f00812
Packit f00812
	  For example, the following character classes are all equivalent:
Packit f00812
Packit f00812
		[[:alnum:]]
Packit f00812
		[[:alpha:][:digit:]
Packit f00812
		[[:alpha:]0-9]
Packit f00812
		[a-zA-Z0-9]
Packit f00812
Packit f00812
	  If your scanner is case-insensitive (-i flag), then [:upper:]
Packit f00812
	  and [:lower:] are equivalent to [:alpha:].
Packit f00812
Packit f00812
	- The promised rewrite of the C++ FlexLexer class has not yet
Packit f00812
	  been done.  Support for FlexLexer is limited at the moment to
Packit f00812
	  fixing show-stopper bugs, so, for example, the new functions
Packit f00812
	  yy_scan_string() & friends are not available to FlexLexer
Packit f00812
	  objects.
Packit f00812
Packit f00812
	- The new macro
Packit f00812
Packit f00812
		yy_set_interactive(is_interactive)
Packit f00812
Packit f00812
	  can be used to control whether the current buffer is considered
Packit f00812
	  "interactive".  An interactive buffer is processed more slowly,
Packit f00812
	  but must be used when the scanner's input source is indeed
Packit f00812
	  interactive to avoid problems due to waiting to fill buffers
Packit f00812
	  (see the discussion of the -I flag in flex.1).  A non-zero value
Packit f00812
	  in the macro invocation marks the buffer as interactive, a zero
Packit f00812
	  value as non-interactive.  Note that use of this macro overrides
Packit f00812
	  "%option always-interactive" or "%option never-interactive".
Packit f00812
Packit f00812
	  yy_set_interactive() must be invoked prior to beginning to
Packit f00812
	  scan the buffer.
Packit f00812
Packit f00812
	- The new macro
Packit f00812
Packit f00812
		yy_set_bol(at_bol)
Packit f00812
Packit f00812
	  can be used to control whether the current buffer's scanning
Packit f00812
	  context for the next token match is done as though at the
Packit f00812
	  beginning of a line (non-zero macro argument; makes '^' anchored
Packit f00812
	  rules active) or not at the beginning of a line (zero argument,
Packit f00812
	  '^' rules inactive).
Packit f00812
Packit f00812
	- Related to this change, the mechanism for determining when a scan is
Packit f00812
	  starting at the beginning of a line has changed.  It used to be
Packit f00812
	  that '^' was active iff the character prior to that at which the
Packit f00812
	  scan started was a newline.  The mechanism now is that '^' is
Packit f00812
	  active iff the last token ended in a newline (or the last call to
Packit f00812
	  input() returned a newline).  For most users, the difference in
Packit f00812
	  mechanisms is negligible.  Where it will make a difference,
Packit f00812
	  however, is if unput() or yyless() is used to alter the input
Packit f00812
	  stream.  When in doubt, use yy_set_bol().
Packit f00812
Packit f00812
	- The new beginning-of-line mechanism involved changing some fairly
Packit f00812
	  twisted code, so it may have introduced bugs - beware ...
Packit f00812
Packit f00812
	- The macro YY_AT_BOL() returns true if the next token scanned from
Packit f00812
	  the current buffer will have '^' rules active, false otherwise.
Packit f00812
Packit f00812
	- The new function
Packit f00812
Packit f00812
		void yy_flush_buffer( struct yy_buffer_state* b )
Packit f00812
Packit f00812
	  flushes the contents of the current buffer (i.e., next time
Packit f00812
	  the scanner attempts to match a token using b as the current
Packit f00812
	  buffer, it will begin by invoking YY_INPUT to fill the buffer).
Packit f00812
	  This routine is also available to C++ scanners (unlike some
Packit f00812
	  of the other new routines).
Packit f00812
Packit f00812
	  The related macro
Packit f00812
Packit f00812
		YY_FLUSH_BUFFER
Packit f00812
Packit f00812
	  flushes the contents of the current buffer.
Packit f00812
Packit f00812
	- A new "-ooutput" option writes the generated scanner to "output".
Packit f00812
	  If used with -t, the scanner is still written to stdout, but
Packit f00812
	  its internal #line directives (see previous item) use "output".
Packit f00812
Packit f00812
	- Flex now generates #line directives relating the code it
Packit f00812
	  produces to the output file; this means that error messages
Packit f00812
	  in the flex-generated code should be correctly pinpointed.
Packit f00812
Packit f00812
	- When generating #line directives, filenames with embedded '\'s
Packit f00812
	  have those characters escaped (i.e., turned into '\\').  This
Packit f00812
	  feature helps with reporting filenames for some MS-DOS and OS/2
Packit f00812
	  systems.
Packit f00812
Packit f00812
	- The FlexLexer class includes two new public member functions:
Packit f00812
Packit f00812
		virtual void switch_streams( istream* new_in = 0,
Packit f00812
						ostream* new_out = 0 )
Packit f00812
Packit f00812
	  reassigns yyin to new_in (if non-nil) and yyout to new_out
Packit f00812
	  (ditto), deleting the previous input buffer if yyin is
Packit f00812
	  reassigned.  It is used by:
Packit f00812
Packit f00812
		int yylex( istream* new_in = 0, ostream* new_out = 0 )
Packit f00812
Packit f00812
	  which first calls switch_streams() and then returns the value
Packit f00812
	  of calling yylex().
Packit f00812
Packit f00812
	- C++ scanners now have yy_flex_debug as a member variable of
Packit f00812
	  FlexLexer rather than a global, and member functions for testing
Packit f00812
	  and setting it.
Packit f00812
Packit f00812
	- When generating a C++ scanning class, you can now use
Packit f00812
Packit f00812
		%option yyclass="foo"
Packit f00812
Packit f00812
	  to inform flex that you have derived "foo" as a subclass of
Packit f00812
	  yyFlexLexer, so flex will place your actions in the member
Packit f00812
	  function foo::yylex() instead of yyFlexLexer::yylex().  It also
Packit f00812
	  generates a yyFlexLexer::yylex() member function that generates a
Packit f00812
	  run-time error if called (by invoking yyFlexLexer::LexerError()).
Packit f00812
	  This feature is necessary if your subclass "foo" introduces some
Packit f00812
	  additional member functions or variables that you need to access
Packit f00812
	  from yylex().
Packit f00812
Packit f00812
	- Current texinfo files in MISC/texinfo, contributed by Francois
Packit f00812
	  Pinard.
Packit f00812
Packit f00812
	- You can now change the name "flex" to something else (e.g., "lex")
Packit f00812
	  by redefining $(FLEX) in the Makefile.
Packit f00812
Packit f00812
	- Two bugs (one serious) that could cause "bigcheck" to fail have
Packit f00812
	  been fixed.
Packit f00812
Packit f00812
	- A number of portability/configuration changes have been made
Packit f00812
	  for easier portability.
Packit f00812
Packit f00812
	- You can use "YYSTATE" in your scanner as an alias for YY_START
Packit f00812
	  (for AT&T lex compatibility).
Packit f00812
Packit f00812
	- input() now maintains yylineno.
Packit f00812
Packit f00812
	- input() no longer trashes yytext.
Packit f00812
Packit f00812
	- interactive scanners now read characters in YY_INPUT up to a
Packit f00812
	  newline, a large performance gain.
Packit f00812
Packit f00812
	- C++ scanner objects now work with the -P option.  You include
Packit f00812
	  <FlexLexer.h> once per scanner - see comments in <FlexLexer.h>
Packit f00812
	  (or flex.1) for details.
Packit f00812
Packit f00812
	- C++ FlexLexer objects now use the "cerr" stream to report -d output
Packit f00812
	  instead of stdio.
Packit f00812
Packit f00812
	- The -c flag now has its full glorious POSIX interpretation (do
Packit f00812
	  nothing), rather than being interpreted as an old-style -C flag.
Packit f00812
Packit f00812
	- Scanners generated by flex now include two #define's giving
Packit f00812
	  the major and minor version numbers (YY_FLEX_MAJOR_VERSION,
Packit f00812
	  YY_FLEX_MINOR_VERSION).  These can then be tested to see
Packit f00812
	  whether certain flex features are available.
Packit f00812
Packit f00812
	- Scanners generated using -l lex compatibility now have the symbol
Packit f00812
	  YY_FLEX_LEX_COMPAT #define'd.
Packit f00812
Packit f00812
	- When initializing (i.e., yy_init is non-zero on entry to yylex()),
Packit f00812
	  generated scanners now set yy_init to zero before executing
Packit f00812
	  YY_USER_INIT.  This means that you can set yy_init back to a
Packit f00812
	  non-zero value in YY_USER_INIT if you need the scanner to be
Packit f00812
	  reinitialized on the next call.
Packit f00812
Packit f00812
	- You can now use "#line" directives in the first section of your
Packit f00812
	  scanner specification.
Packit f00812
Packit f00812
	- When generating full-table scanners (-Cf), flex now puts braces
Packit f00812
	  around each row of the 2-d array initialization, to silence warnings
Packit f00812
	  on over-zealous compilers.
Packit f00812
Packit f00812
	- Improved support for MS-DOS.  The flex sources have been successfully
Packit f00812
	  built, unmodified, for Borland 4.02 (all that's required is a
Packit f00812
	  Borland Makefile and config.h file, which are supplied in
Packit f00812
	  MISC/Borland - contributed by Terrence O Kane).
Packit f00812
Packit f00812
	- Improved support for Macintosh using Think C - the sources should
Packit f00812
	  build for this platform "out of the box".  Contributed by Scott
Packit f00812
	  Hofmann.
Packit f00812
Packit f00812
	- Improved support for VMS, in MISC/VMS/, contributed by Pat Rankin.
Packit f00812
Packit f00812
	- Support for the Amiga, in MISC/Amiga/, contributed by Andreas
Packit f00812
	  Scherer.  Note that the contributed files were developed for
Packit f00812
	  flex 2.4 and have not been tested with flex 2.5.
Packit f00812
Packit f00812
	- Some notes on support for the NeXT, in MISC/NeXT, contributed
Packit f00812
	  by Raf Schietekat.
Packit f00812
Packit f00812
	- The MISC/ directory now includes a preformatted version of flex.1
Packit f00812
	  in flex.man, and pre-yacc'd versions of parse.y in parse.{c,h}.
Packit f00812
Packit f00812
	- The flex.1 and flexdoc.1 manual pages have been merged.  There
Packit f00812
	  is now just one document, flex.1, which includes an overview
Packit f00812
	  at the beginning to help you find the section you need.
Packit f00812
Packit f00812
	- Documentation now clarifies that start conditions persist across
Packit f00812
	  switches to new input files or different input buffers.  If you
Packit f00812
	  want to e.g., return to INITIAL, you must explicitly do so.
Packit f00812
Packit f00812
	- The "Performance Considerations" section of the manual has been
Packit f00812
	  updated.
Packit f00812
Packit f00812
	- Documented the "yy_act" variable, which when YY_USER_ACTION is
Packit f00812
	  invoked holds the number of the matched rule, and added an
Packit f00812
	  example of using yy_act to profile how often each rule is matched.
Packit f00812
Packit f00812
	- Added YY_NUM_RULES, a definition that gives the total number
Packit f00812
	  of rules in the file, including the default rule (even if you
Packit f00812
	  use -s).
Packit f00812
Packit f00812
	- Documentation now clarifies that you can pass a nil FILE* pointer
Packit f00812
	  to yy_create_buffer() or yyrestart() if you've arrange YY_INPUT
Packit f00812
	  to not need yyin.
Packit f00812
Packit f00812
	- Documentation now clarifies that YY_BUFFER_STATE is a pointer to
Packit f00812
	  an opaque "struct yy_buffer_state".
Packit f00812
Packit f00812
	- Documentation now stresses that you gain the benefits of removing
Packit f00812
	  backing-up states only if you remove *all* of them.
Packit f00812
Packit f00812
	- Documentation now points out that traditional lex allows you
Packit f00812
	  to put the action on a separate line from the rule pattern if
Packit f00812
	  the pattern has trailing whitespace (ugh!), but flex doesn't
Packit f00812
	  support this.
Packit f00812
Packit f00812
	- A broken example in documentation of the difference between
Packit f00812
	  inclusive and exclusive start conditions is now fixed.
Packit f00812
Packit f00812
	- Usage (-h) report now goes to stdout.
Packit f00812
Packit f00812
	- Version (-V) info now goes to stdout.
Packit f00812
Packit f00812
	- More #ifdef chud has been added to the parser in attempt to
Packit f00812
	  deal with bison's use of alloca().
Packit f00812
Packit f00812
	- "make clean" no longer deletes emacs backup files (*~).
Packit f00812
Packit f00812
	- Some memory leaks have been fixed.
Packit f00812
Packit f00812
	- A bug was fixed in which dynamically-expanded buffers were
Packit f00812
	  reallocated a couple of bytes too small.
Packit f00812
Packit f00812
	- A bug was fixed which could cause flex to read and write beyond
Packit f00812
	  the end of the input buffer.
Packit f00812
Packit f00812
	- -S will not be going away.
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.4.7 (03Aug94) and release 2.4.6:
Packit f00812
Packit f00812
	- Fixed serious bug in reading multiple files.
Packit f00812
Packit f00812
	- Fixed bug in scanning NUL's.
Packit f00812
Packit f00812
	- Fixed bug in input() returning 8-bit characters.
Packit f00812
Packit f00812
	- Fixed bug in matching text with embedded NUL's when
Packit f00812
	  using %array or lex compatibility.
Packit f00812
Packit f00812
	- Fixed multiple invocations of YY_USER_ACTION when using '|'
Packit f00812
	  continuation action.
Packit f00812
Packit f00812
	- Minor prototyping fixes.
Packit f00812
Packit f00812
Changes between release 2.4.6 (04Jan94) and release 2.4.5:
Packit f00812
Packit f00812
	- Linking with -lfl no longer required if your program includes
Packit f00812
	  its own yywrap() and main() functions.  (This change will cause
Packit f00812
	  problems if you have a non-ANSI compiler on a system for which
Packit f00812
	  sizeof(int) != sizeof(void*) or sizeof(int) != sizeof(size_t).)
Packit f00812
Packit f00812
	- The use of 'extern "C++"' in FlexLexer.h has been modified to
Packit f00812
	  get around an incompatibility with g++'s header files.
Packit f00812
Packit f00812
Changes between release 2.4.5 (11Dec93) and release 2.4.4:
Packit f00812
Packit f00812
	- Fixed bug breaking C++ scanners that use REJECT or variable
Packit f00812
	  trailing context.
Packit f00812
Packit f00812
	- Fixed serious input problem for interactive scanners on
Packit f00812
	  systems for which char is unsigned.
Packit f00812
Packit f00812
	- Fixed bug in incorrectly treating '$' operator as variable
Packit f00812
	  trailing context.
Packit f00812
Packit f00812
	- Fixed bug in -CF table representation that could lead to
Packit f00812
	  corrupt tables.
Packit f00812
Packit f00812
	- Fixed fairly benign memory leak.
Packit f00812
Packit f00812
	- Added `extern "C++"' wrapper to FlexLexer.h header.  This
Packit f00812
	  should overcome the g++ 2.5.X problems mentioned in the
Packit f00812
	  NEWS for release 2.4.3.
Packit f00812
Packit f00812
	- Changed #include of FlexLexer.h to use <> instead of "".
Packit f00812
Packit f00812
	- Added feature to control whether the scanner attempts to
Packit f00812
	  refill the input buffer once it's exhausted.  This feature
Packit f00812
	  will be documented in the 2.5 release.
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.4.4 (07Dec93) and release 2.4.3:
Packit f00812
Packit f00812
	- Fixed two serious bugs in scanning 8-bit characters.
Packit f00812
Packit f00812
	- Fixed bug in YY_USER_ACTION that caused it to be executed
Packit f00812
	  inappropriately (on the scanner's own internal actions, and
Packit f00812
	  with incorrect yytext/yyleng values).
Packit f00812
Packit f00812
	- Fixed bug in pointing yyin at a new file and resuming scanning.
Packit f00812
Packit f00812
	- Portability fix regarding min/max/abs macros conflicting with
Packit f00812
	  function definitions in standard header files.
Packit f00812
Packit f00812
	- Added a virtual LexerError() method to the C++ yyFlexLexer class
Packit f00812
	  for reporting error messages instead of always using cerr.
Packit f00812
Packit f00812
	- Added warning in flexdoc that the C++ scanning class is presently
Packit f00812
	  experimental and subject to considerable change between major
Packit f00812
	  releases.
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.4.3 (03Dec93) and release 2.4.2:
Packit f00812
Packit f00812
	- Fixed bug causing fatal scanner messages to fail to print.
Packit f00812
Packit f00812
	- Fixed things so FlexLexer.h can be included in other C++
Packit f00812
	  sources.  One side-effect of this change is that -+ and -CF
Packit f00812
	  are now incompatible.
Packit f00812
Packit f00812
	- libfl.a now supplies private versions of the the <string.h>/
Packit f00812
	  <strings.h> string routines needed by flex and the scanners
Packit f00812
	  it generates, to enhance portability to some BSD systems.
Packit f00812
Packit f00812
	- More robust solution to 2.4.2's flexfatal() bug fix.
Packit f00812
Packit f00812
	- Added ranlib of installed libfl.a.
Packit f00812
Packit f00812
	- Some lint tweaks.
Packit f00812
Packit f00812
	- NOTE: problems have been encountered attempting to build flex
Packit f00812
	  C++ scanners using g++ version 2.5.X.  The problem is due to an
Packit f00812
	  unfortunate heuristic in g++ 2.5.X that attempts to discern between
Packit f00812
	  C and C++ headers.  Because FlexLexer.h is installed (by default)
Packit f00812
	  in /usr/local/include and not /usr/local/lib/g++-include, g++ 2.5.X
Packit f00812
	  decides that it's a C header :-(.  So if you have problems, install
Packit f00812
	  the header in /usr/local/lib/g++-include instead.
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.4.2 (01Dec93) and release 2.4.1:
Packit f00812
Packit f00812
	- Fixed bug in libfl.a referring to non-existent "flexfatal" function.
Packit f00812
Packit f00812
	- Modified to produce both compress'd and gzip'd tar files for
Packit f00812
	  distributions (you probably don't care about this change!).
Packit f00812
Packit f00812
Packit f00812
Changes between release 2.4.1 (30Nov93) and release 2.3.8:
Packit f00812
Packit f00812
	- The new '-+' flag instructs flex to generate a C++ scanner class
Packit f00812
	  (thanks to Kent Williams).  flex writes an implementation of the
Packit f00812
	  class defined in FlexLexer.h to lex.yy.cc.  You may include
Packit f00812
	  multiple scanner classes in your program using the -P flag.  Note
Packit f00812
	  that the scanner class also provides a mechanism for creating
Packit f00812
	  reentrant scanners.  The scanner class uses C++ streams for I/O
Packit f00812
	  instead of FILE*'s (thanks to Tom Epperly).  If the flex executable's
Packit f00812
	  name ends in '+' then the '-+' flag is automatically on, so creating
Packit f00812
	  a symlink or copy of "flex" to "flex++" results in a version of
Packit f00812
	  flex that can be used exclusively for C++ scanners.
Packit f00812
Packit f00812
	  Note that without the '-+' flag, flex-generated scanners can still
Packit f00812
	  be compiled using C++ compilers, though they use FILE*'s for I/O
Packit f00812
	  instead of streams.
Packit f00812
Packit f00812
	  See the "GENERATING C++ SCANNERS" section of flexdoc for details.
Packit f00812
Packit f00812
	- The new '-l' flag turns on maximum AT&T lex compatibility.  In
Packit f00812
	  particular, -l includes support for "yylineno" and makes yytext
Packit f00812
	  be an array instead of a pointer.  It does not, however, do away
Packit f00812
	  with all incompatibilities.  See the "INCOMPATIBILITIES WITH LEX
Packit f00812
	  AND POSIX" section of flexdoc for details.
Packit f00812
Packit f00812
	- The new '-P' option specifies a prefix to use other than "yy"
Packit f00812
	  for the scanner's globally-visible variables, and for the
Packit f00812
	  "lex.yy.c" filename.  Using -P you can link together multiple
Packit f00812
	  flex scanners in the same executable.
Packit f00812
Packit f00812
	- The distribution includes a "texinfo" version of flexdoc.1,
Packit f00812
	  contributed by Roland Pesch (thanks also to Marq Kole, who
Packit f00812
	  contributed another version).  It has not been brought up to
Packit f00812
	  date, but reflects version 2.3.  See MISC/flex.texinfo.
Packit f00812
Packit f00812
	  The flex distribution will soon include G.T. Nicol's flex
Packit f00812
	  manual; he is presently bringing it up-to-date for version 2.4.
Packit f00812
Packit f00812
	- yywrap() is now a function, and you now *must* link flex scanners
Packit f00812
	  with libfl.a.
Packit f00812
Packit f00812
	- Site-configuration is now done via an autoconf-generated
Packit f00812
	  "configure" script contributed by Francois Pinard.
Packit f00812
Packit f00812
	- Scanners now use fread() (or getc(), if interactive) and not
Packit f00812
	  read() for input.  A new "table compression" option, -Cr,
Packit f00812
	  overrides this change and causes the scanner to use read()
Packit f00812
	  (because read() is a bit faster than fread()).  -f and -F
Packit f00812
	  are now equivalent to -Cfr and -CFr; i.e., they imply the
Packit f00812
	  -Cr option.
Packit f00812
Packit f00812
	- In the blessed name of POSIX compliance, flex supports "%array"
Packit f00812
	  and "%pointer" directives in the definitions (first) section of
Packit f00812
	  the scanner specification.  The former specifies that yytext
Packit f00812
	  should be an array (of size YYLMAX), the latter, that it should
Packit f00812
	  be a pointer.  The array version of yytext is universally slower
Packit f00812
	  than the pointer version, but has the advantage that its contents
Packit f00812
	  remain unmodified across calls to input() and unput() (the pointer
Packit f00812
	  version of yytext is, still, trashed by such calls).
Packit f00812
Packit f00812
	  "%array" cannot be used with the '-+' C++ scanner class option.
Packit f00812
Packit f00812
	- The new '-Ca' option directs flex to trade off memory for
Packit f00812
	  natural alignment when generating a scanner's tables.  In
Packit f00812
	  particular, table entries that would otherwise be "short"
Packit f00812
	  become "long".
Packit f00812
Packit f00812
	- The new '-h' option produces a summary of the flex flags.
Packit f00812
Packit f00812
	- The new '-V' option reports the flex version number and exits.
Packit f00812
Packit f00812
	- The new scanner macro YY_START returns an integer value
Packit f00812
	  corresponding to the current start condition.  You can return
Packit f00812
	  to that start condition by passing the value to a subsequent
Packit f00812
	  "BEGIN" action.  You also can implement "start condition stacks"
Packit f00812
	  by storing the values in an integer stack.
Packit f00812
Packit f00812
	- You can now redefine macros such as YY_INPUT by just #define'ing
Packit f00812
	  them to some other value in the first section of the flex input;
Packit f00812
	  no need to first #undef them.
Packit f00812
Packit f00812
	- flex now generates warnings for rules that can't be matched.
Packit f00812
	  These warnings can be turned off using the new '-w' flag.  If
Packit f00812
	  your scanner uses REJECT then you will not get these warnings.
Packit f00812
Packit f00812
	- If you specify the '-s' flag but the default rule can be matched,
Packit f00812
	  flex now generates a warning.
Packit f00812
Packit f00812
	- "yyleng" is now a global, and may be modified by the user (though
Packit f00812
	  doing so and then using yymore() will yield weird results).
Packit f00812
Packit f00812
	- Name definitions in the first section of a scanner specification
Packit f00812
	  can now include a leading '^' or trailing '$' operator.  In this
Packit f00812
	  case, the definition is *not* pushed back inside of parentheses.
Packit f00812
Packit f00812
	- Scanners with compressed tables are now "interactive" (-I option)
Packit f00812
	  by default.  You can suppress this attribute (which makes them
Packit f00812
	  run slightly slower) using the new '-B' flag.
Packit f00812
Packit f00812
	- Flex now generates 8-bit scanners by default, unless you use the
Packit f00812
	  -Cf or -CF compression options (-Cfe  and -CFe result in 8-bit
Packit f00812
	  scanners).  You can force it to generate a 7-bit scanner using
Packit f00812
	  the new '-7' flag.  You can build flex to generate 8-bit scanners
Packit f00812
	  for -Cf and -CF, too, by adding -DDEFAULT_CSIZE=256 to CFLAGS
Packit f00812
	  in the Makefile.
Packit f00812
Packit f00812
	- You no longer need to call the scanner routine yyrestart() to
Packit f00812
	  inform the scanner that you have switched to a new file after
Packit f00812
	  having seen an EOF on the current input file.  Instead, just
Packit f00812
	  point yyin at the new file and continue scanning.
Packit f00812
Packit f00812
	- You no longer need to invoke YY_NEW_FILE in an <<EOF>> action
Packit f00812
	  to indicate you wish to continue scanning.  Simply point yyin
Packit f00812
	  at a new file.
Packit f00812
Packit f00812
	- A leading '#' no longer introduces a comment in a flex input.
Packit f00812
Packit f00812
	- flex no longer considers formfeed ('\f') a whitespace character.
Packit f00812
Packit f00812
	- %t, I'm happy to report, has been nuked.
Packit f00812
Packit f00812
	- The '-p' option may be given twice ('-pp') to instruct flex to
Packit f00812
	  report minor performance problems as well as major ones.
Packit f00812
Packit f00812
	- The '-v' verbose output no longer includes start/finish time
Packit f00812
	  information.
Packit f00812
Packit f00812
	- Newlines in flex inputs can optionally include leading or
Packit f00812
	  trailing carriage-returns ('\r'), in support of several PC/Mac
Packit f00812
	  run-time libraries that automatically include these.
Packit f00812
Packit f00812
	- A start condition of the form "<*>" makes the following rule
Packit f00812
	  active in every start condition, whether exclusive or inclusive.
Packit f00812
Packit f00812
	- The following items have been corrected in the flex documentation:
Packit f00812
Packit f00812
		- '-C' table compression options *are* cumulative.
Packit f00812
Packit f00812
		- You may modify yytext but not lengthen it by appending
Packit f00812
		  characters to the end.  Modifying its final character
Packit f00812
		  will affect '^' anchoring for the next rule matched
Packit f00812
		  if the character is changed to or from a newline.
Packit f00812
Packit f00812
		- The term "backtracking" has been renamed "backing up",
Packit f00812
		  since it is a one-time repositioning and not a repeated
Packit f00812
		  search.  What used to be the "lex.backtrack" file is now
Packit f00812
		  "lex.backup".
Packit f00812
Packit f00812
		- Unindented "/* ... */" comments are allowed in the first
Packit f00812
		  flex input section, but not in the second.
Packit f00812
Packit f00812
		- yyless() can only be used in the flex input source, not
Packit f00812
		  externally.
Packit f00812
Packit f00812
		- You can use "yyrestart(yyin)" to throw away the
Packit f00812
		  current contents of the input buffer.
Packit f00812
Packit f00812
		- To write high-speed scanners, attempt to match as much
Packit f00812
		  text as possible with each rule.  See MISC/fastwc/README
Packit f00812
		  for more information.
Packit f00812
Packit f00812
		- Using the beginning-of-line operator ('^') is fairly
Packit f00812
		  cheap.  Using unput() is expensive.  Using yyless() is
Packit f00812
		  cheap.
Packit f00812
Packit f00812
		- An example of scanning strings with embedded escape
Packit f00812
		  sequences has been added.
Packit f00812
Packit f00812
		- The example of backing-up in flexdoc was erroneous; it
Packit f00812
		  has been corrected.
Packit f00812
Packit f00812
	- A flex scanner's internal buffer now dynamically grows if needed
Packit f00812
	  to match large tokens.  Note that growing the buffer presently
Packit f00812
	  requires rescanning the (large) token, so consuming a lot of
Packit f00812
	  text this way is a slow process.  Also note that presently the
Packit f00812
	  buffer does *not* grow if you unput() more text than can fit
Packit f00812
	  into the buffer.
Packit f00812
Packit f00812
	- The MISC/ directory has been reorganized; see MISC/README for
Packit f00812
	  details.
Packit f00812
Packit f00812
	- yyless() can now be used in the third (user action) section
Packit f00812
	  of a scanner specification, thanks to Ceriel Jacobs.  yyless()
Packit f00812
	  remains a macro and cannot be used outside of the scanner source.
Packit f00812
Packit f00812
	- The skeleton file is no longer opened at run-time, but instead
Packit f00812
	  compiled into a large string array (thanks to John Gilmore and
Packit f00812
	  friends at Cygnus).  You can still use the -S flag to point flex
Packit f00812
	  at a different skeleton file.
Packit f00812
Packit f00812
	- flex no longer uses a temporary file to store the scanner's
Packit f00812
	  actions.
Packit f00812
Packit f00812
	- A number of changes have been made to decrease porting headaches.
Packit f00812
	  In particular, flex no longer uses memset() or ctime(), and
Packit f00812
	  provides a single simple mechanism for dealing with C compilers
Packit f00812
	  that still define malloc() as returning char* instead of void*.
Packit f00812
Packit f00812
	- Flex now detects if the scanner specification requires the -8 flag
Packit f00812
	  but the flag was not given or on by default.
Packit f00812
Packit f00812
	- A number of table-expansion fencepost bugs have been fixed,
Packit f00812
	  making flex more robust for generating large scanners.
Packit f00812
Packit f00812
	- flex more consistently identifies the location of errors in
Packit f00812
	  its input.
Packit f00812
Packit f00812
	- YY_USER_ACTION is now invoked only for "real" actions, not for
Packit f00812
	  internal actions used by the scanner for things like filling
Packit f00812
	  the buffer or handling EOF.
Packit f00812
Packit f00812
	- The rule "[^]]" now matches any character other than a ']';
Packit f00812
	  formerly it matched any character at all followed by a ']'.
Packit f00812
	  This change was made for compatibility with AT&T lex.
Packit f00812
Packit f00812
	- A large number of miscellaneous bugs have been found and fixed
Packit f00812
	  thanks to Gerhard Wilhelms.
Packit f00812
Packit f00812
	- The source code has been heavily reformatted, making patches
Packit f00812
	  relative to previous flex releases no longer accurate.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 Patch #8 (21Feb93) and 2.3 Patch #7:
Packit f00812
Packit f00812
	- Fixed bugs in dynamic memory allocation leading to grievous
Packit f00812
	  fencepost problems when generating large scanners.
Packit f00812
	- Fixed bug causing infinite loops on character classes with 8-bit
Packit f00812
	  characters in them.
Packit f00812
	- Fixed bug in matching repetitions with a lower bound of 0.
Packit f00812
	- Fixed bug in scanning NUL characters using an "interactive" scanner.
Packit f00812
	- Fixed bug in using yymore() at the end of a file.
Packit f00812
	- Fixed bug in misrecognizing rules with variable trailing context.
Packit f00812
	- Fixed bug compiling flex on Suns using gcc 2.
Packit f00812
	- Fixed bug in not recognizing that input files with the character
Packit f00812
	  ASCII 128 in them require the -8 flag.
Packit f00812
	- Fixed bug that could cause an infinite loop writing out
Packit f00812
	  error messages.
Packit f00812
	- Fixed bug in not recognizing old-style lex % declarations if
Packit f00812
	  followed by a tab instead of a space.
Packit f00812
	- Fixed potential crash when flex terminated early (usually due
Packit f00812
	  to a bad flag) and the -v flag had been given.
Packit f00812
	- Added some missing declarations of void functions.
Packit f00812
	- Changed to only use '\a' for __STDC__ compilers.
Packit f00812
	- Updated mailing addresses.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 Patch #7 (28Mar91) and 2.3 Patch #6:
Packit f00812
Packit f00812
	- Fixed out-of-bounds array access that caused bad tables
Packit f00812
	  to be produced on machines where the bad reference happened
Packit f00812
	  to yield a 1.  This caused problems installing or running
Packit f00812
	  flex on some Suns, in particular.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 Patch #6 (29Aug90) and 2.3 Patch #5:
Packit f00812
Packit f00812
	- Fixed a serious bug in yymore() which basically made it
Packit f00812
	  completely broken.  Thanks goes to Jean Christophe of
Packit f00812
	  the Nethack development team for finding the problem
Packit f00812
	  and passing along the fix.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 Patch #5 (16Aug90) and 2.3 Patch #4:
Packit f00812
Packit f00812
	- An up-to-date version of initscan.c so "make test" will
Packit f00812
	  work after applying the previous patches
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 Patch #4 (14Aug90) and 2.3 Patch #3:
Packit f00812
Packit f00812
	- Fixed bug in hexadecimal escapes which allowed only digits,
Packit f00812
	  not letters, in escapes
Packit f00812
	- Fixed bug in previous "Changes" file!
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 Patch #3 (03Aug90) and 2.3 Patch #2:
Packit f00812
Packit f00812
	- Correction to patch #2 for gcc compilation; thanks goes to
Packit f00812
	  Paul Eggert for catching this.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 Patch #2 (02Aug90) and original 2.3 release:
Packit f00812
Packit f00812
	- Fixed (hopefully) headaches involving declaring malloc()
Packit f00812
	  and free() for gcc, which defines __STDC__ but (often) doesn't
Packit f00812
	  come with the standard include files such as <stdlib.h>.
Packit f00812
	  Reordered #ifdef maze in the scanner skeleton in the hope of
Packit f00812
	  getting the declarations right for cfront and g++, too.
Packit f00812
Packit f00812
	- Note that this patch supercedes patch #1 for release 2.3,
Packit f00812
	  which was never announced but was available briefly for
Packit f00812
	  anonymous ftp.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.3 (full) release of 28Jun90 and 2.2 (alpha) release:
Packit f00812
Packit f00812
User-visible:
Packit f00812
Packit f00812
	- A lone <<EOF>> rule (that is, one which is not qualified with
Packit f00812
	  a list of start conditions) now specifies the EOF action for
Packit f00812
	  *all* start conditions which haven't already had <<EOF>> actions
Packit f00812
	  given.  To specify an end-of-file action for just the initial
Packit f00812
	  state, use <INITIAL><<EOF>>.
Packit f00812
Packit f00812
	- -d debug output is now contigent on the global yy_flex_debug
Packit f00812
	  being set to a non-zero value, which it is by default.
Packit f00812
Packit f00812
	- A new macro, YY_USER_INIT, is provided for the user to specify
Packit f00812
	  initialization action to be taken on the first call to the
Packit f00812
	  scanner.  This action is done before the scanner does its
Packit f00812
	  own initialization.
Packit f00812
Packit f00812
	- yy_new_buffer() has been added as an alias for yy_create_buffer()
Packit f00812
Packit f00812
	- Comments beginning with '#' and extending to the end of the line
Packit f00812
	  now work, but have been deprecated (in anticipation of making
Packit f00812
	  flex recognize #line directives).
Packit f00812
Packit f00812
	- The funky restrictions on when semi-colons could follow the
Packit f00812
	  YY_NEW_FILE and yyless macros have been removed.  They now
Packit f00812
	  behave identically to functions.
Packit f00812
Packit f00812
	- A bug in the sample redefinition of YY_INPUT in the documentation
Packit f00812
	  has been corrected.
Packit f00812
Packit f00812
	- A bug in the sample simple tokener in the documentation has
Packit f00812
	  been corrected.
Packit f00812
Packit f00812
	- The documentation on the incompatibilities between flex and
Packit f00812
	  lex has been reordered so that the discussion of yylineno
Packit f00812
	  and input() come first, as it's anticipated that these will
Packit f00812
	  be the most common source of headaches.
Packit f00812
Packit f00812
Packit f00812
Things which didn't used to be documented but now are:
Packit f00812
Packit f00812
	- flex interprets "^foo|bar" differently from lex.  flex interprets
Packit f00812
	  it as "match either a 'foo' or a 'bar', providing it comes at the
Packit f00812
	  beginning of a line", whereas lex interprets it as "match either
Packit f00812
	  a 'foo' at the beginning of a line, or a 'bar' anywhere".
Packit f00812
Packit f00812
	- flex initializes the global "yyin" on the first call to the
Packit f00812
	  scanner, while lex initializes it at compile-time.
Packit f00812
Packit f00812
	- yy_switch_to_buffer() can be used in the yywrap() macro/routine.
Packit f00812
Packit f00812
	- flex scanners do not use stdio for their input, and hence when
Packit f00812
	  writing an interactive scanner one must explictly call fflush()
Packit f00812
	  after writing out a prompt.
Packit f00812
Packit f00812
	- flex scanner can be made reentrant (after a fashion) by using
Packit f00812
	  "yyrestart( yyin );".  This is useful for interactive scanners
Packit f00812
	  which have interrupt handlers that long-jump out of the scanner.
Packit f00812
Packit f00812
	- a defense of why yylineno is not supported is included, along
Packit f00812
	  with a suggestion on how to convert scanners which rely on it.
Packit f00812
Packit f00812
Packit f00812
Other changes:
Packit f00812
Packit f00812
	- Prototypes and proper declarations of void routines have
Packit f00812
	  been added to the flex source code, courtesy of Kevin B. Kenny.
Packit f00812
Packit f00812
	- Routines dealing with memory allocation now use void* pointers
Packit f00812
	  instead of char* - see Makefile for porting implications.
Packit f00812
Packit f00812
	- Error-checking is now done when flex closes a file.
Packit f00812
Packit f00812
	- Various lint tweaks were added to reduce the number of gripes.
Packit f00812
Packit f00812
	- Makefile has been further parameterized to aid in porting.
Packit f00812
Packit f00812
	- Support for SCO Unix added.
Packit f00812
Packit f00812
	- Flex now sports the latest & greatest UC copyright notice
Packit f00812
	  (which is only slightly different from the previous one).
Packit f00812
Packit f00812
	- A note has been added to flexdoc.1 mentioning work in progress
Packit f00812
	  on modifying flex to generate straight C code rather than a
Packit f00812
	  table-driven automaton, with an email address of whom to contact
Packit f00812
	  if you are working along similar lines.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.2 Patch #3 (30Mar90) and 2.2 Patch #2:
Packit f00812
Packit f00812
	- fixed bug which caused -I scanners to bomb
Packit f00812
Packit f00812
Packit f00812
Changes between 2.2 Patch #2 (27Mar90) and 2.2 Patch #1:
Packit f00812
Packit f00812
	- fixed bug writing past end of input buffer in yyunput()
Packit f00812
	- fixed bug detecting NUL's at the end of a buffer
Packit f00812
Packit f00812
Packit f00812
Changes between 2.2 Patch #1 (23Mar90) and 2.2 (alpha) release:
Packit f00812
Packit f00812
	- Makefile fixes: definition of MAKE variable for systems
Packit f00812
	  which don't have it; installation of flexdoc.1 along with
Packit f00812
	  flex.1; fixed two bugs which could cause "bigtest" to fail.
Packit f00812
Packit f00812
	- flex.skel fix for compiling with g++.
Packit f00812
Packit f00812
	- README and flexdoc.1 no longer list an out-of-date BITNET address
Packit f00812
	  for contacting me.
Packit f00812
Packit f00812
	- minor typos and formatting changes to flex.1 and flexdoc.1.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.2 (alpha) release of March '90 and previous release:
Packit f00812
Packit f00812
User-visible:
Packit f00812
Packit f00812
	- Full user documentation now available.
Packit f00812
Packit f00812
	- Support for 8-bit scanners.
Packit f00812
Packit f00812
	- Scanners now accept NUL's.
Packit f00812
Packit f00812
	- A facility has been added for dealing with multiple
Packit f00812
	  input buffers.
Packit f00812
Packit f00812
	- Two manual entries now.  One which fully describes flex
Packit f00812
	  (rather than just its differences from lex), and the
Packit f00812
	  other for quick(er) reference.
Packit f00812
Packit f00812
	- A number of changes to bring flex closer into compliance
Packit f00812
	  with the latest POSIX lex draft:
Packit f00812
Packit f00812
		%t support
Packit f00812
		flex now accepts multiple input files and concatenates
Packit f00812
		    them together to form its input
Packit f00812
		previous -c (compress) flag renamed -C
Packit f00812
		do-nothing -c and -n flags added
Packit f00812
		Any indented code or code within %{}'s in section 2 is
Packit f00812
		    now copied to the output
Packit f00812
Packit f00812
	- yyleng is now a bona fide global integer.
Packit f00812
Packit f00812
	- -d debug information now gives the line number of the
Packit f00812
	  matched rule instead of which number rule it was from
Packit f00812
	  the beginning of the file.
Packit f00812
Packit f00812
	- -v output now includes a summary of the flags used to generate
Packit f00812
	  the scanner.
Packit f00812
Packit f00812
	- unput() and yyrestart() are now globally callable.
Packit f00812
Packit f00812
	- yyrestart() no longer closes the previous value of yyin.
Packit f00812
Packit f00812
	- C++ support; generated scanners can be compiled with C++ compiler.
Packit f00812
Packit f00812
	- Primitive -lfl library added, containing default main()
Packit f00812
	  which calls yylex().  A number of routines currently living
Packit f00812
	  in the scanner skeleton will probably migrate to here
Packit f00812
	  in the future (in particular, yywrap() will probably cease
Packit f00812
	  to be a macro and instead be a function in the -lfl library).
Packit f00812
Packit f00812
	- Hexadecimal (\x) escape sequences added.
Packit f00812
Packit f00812
	- Support for MS-DOS, VMS, and Turbo-C integrated.
Packit f00812
Packit f00812
	- The %used/%unused operators have been deprecated.  They
Packit f00812
	  may go away soon.
Packit f00812
Packit f00812
Packit f00812
Other changes:
Packit f00812
Packit f00812
	- Makefile enhanced for easier testing and installation.
Packit f00812
	- The parser has been tweaked to detect some erroneous
Packit f00812
	  constructions which previously were missed.
Packit f00812
	- Scanner input buffer overflow is now detected.
Packit f00812
	- Bugs with missing "const" declarations fixed.
Packit f00812
	- Out-of-date Minix/Atari patches provided.
Packit f00812
	- Scanners no longer require printf() unless FLEX_DEBUG is being used.
Packit f00812
	- A subtle input() bug has been fixed.
Packit f00812
	- Line numbers for "continued action" rules (those following
Packit f00812
	  the special '|' action) are now correct.
Packit f00812
	- unput() bug fixed; had been causing problems porting flex to VMS.
Packit f00812
	- yymore() handling rewritten to fix bug with interaction
Packit f00812
	  between yymore() and trailing context.
Packit f00812
	- EOF in actions now generates an error message.
Packit f00812
	- Bug involving -CFe and generating equivalence classes fixed.
Packit f00812
	- Bug which made -CF be treated as -Cf fixed.
Packit f00812
	- Support for SysV tmpnam() added.
Packit f00812
	- Unused #define's for scanner no longer generated.
Packit f00812
	- Error messages which are associated with a particular input
Packit f00812
	  line are now all identified with their input line in standard
Packit f00812
	  format.
Packit f00812
	- % directives which are valid to lex but not to flex are
Packit f00812
	  now ignored instead of generating warnings.
Packit f00812
	- -DSYS_V flag can now also be specified -DUSG for System V
Packit f00812
	  compilation.
Packit f00812
Packit f00812
Packit f00812
Changes between 2.1 beta-test release of June '89 and previous release:
Packit f00812
Packit f00812
User-visible:
Packit f00812
Packit f00812
	- -p flag generates a performance report to stderr.  The report
Packit f00812
	  consists of comments regarding features of the scanner rules
Packit f00812
	  which result in slower scanners.
Packit f00812
Packit f00812
	- -b flag generates backtracking information to lex.backtrack.
Packit f00812
	  This is a list of scanner states which require backtracking
Packit f00812
	  and the characters on which they do so.  By adding rules
Packit f00812
	  one can remove backtracking states.  If all backtracking states
Packit f00812
	  are eliminated, the generated scanner will run faster.
Packit f00812
	  Backtracking is not yet documented in the manual entry.
Packit f00812
Packit f00812
	- Variable trailing context now works, i.e., one can have
Packit f00812
	  rules like "(foo)*/[ \t]*bletch".  Some trailing context
Packit f00812
	  patterns still cannot be properly matched and generate
Packit f00812
	  error messages.  These are patterns where the ending of the
Packit f00812
	  first part of the rule matches the beginning of the second
Packit f00812
	  part, such as "zx*/xy*", where the 'x*' matches the 'x' at
Packit f00812
	  the beginning of the trailing context.  Lex won't get these
Packit f00812
	  patterns right either.
Packit f00812
Packit f00812
	- Faster scanners.
Packit f00812
Packit f00812
	- End-of-file rules.  The special rule "<<EOF>>" indicates
Packit f00812
	  actions which are to be taken when an end-of-file is
Packit f00812
	  encountered and yywrap() returns non-zero (i.e., indicates
Packit f00812
	  no further files to process).  See manual entry for example.
Packit f00812
Packit f00812
	- The -r (reject used) flag is gone.  flex now scans the input
Packit f00812
	  for occurrences of the string "REJECT" to determine if the
Packit f00812
	  action is needed.  It tries to be intelligent about this but
Packit f00812
	  can be fooled.  One can force the presence or absence of
Packit f00812
	  REJECT by adding a line in the first section of the form
Packit f00812
	  "%used REJECT" or "%unused REJECT".
Packit f00812
Packit f00812
	- yymore() has been implemented.  Similarly to REJECT, flex
Packit f00812
	  detects the use of yymore(), which can be overridden using
Packit f00812
	  "%used" or "%unused".
Packit f00812
Packit f00812
	- Patterns like "x{0,3}" now work (i.e., with lower-limit == 0).
Packit f00812
Packit f00812
	- Removed '\^x' for ctrl-x misfeature.
Packit f00812
Packit f00812
	- Added '\a' and '\v' escape sequences.
Packit f00812
Packit f00812
	- \<digits> now works for octal escape sequences; previously
Packit f00812
	  \0<digits> was required.
Packit f00812
Packit f00812
	- Better error reporting; line numbers are associated with rules.
Packit f00812
Packit f00812
	- yyleng is a macro; it cannot be accessed outside of the
Packit f00812
	  scanner source file.
Packit f00812
Packit f00812
	- yytext and yyleng should not be modified within a flex action.
Packit f00812
Packit f00812
	- Generated scanners #define the name FLEX_SCANNER.
Packit f00812
Packit f00812
	- Rules are internally separated by YY_BREAK in lex.yy.c rather
Packit f00812
	  than break, to allow redefinition.
Packit f00812
Packit f00812
	- The macro YY_USER_ACTION can be redefined to provide an action
Packit f00812
	  which is always executed prior to the matched rule's action.
Packit f00812
	
Packit f00812
	- yyrestart() is a new action which can be used to restart
Packit f00812
	  the scanner after it has seen an end-of-file (a "real" one,
Packit f00812
	  that is, one for which yywrap() returned non-zero).  It takes
Packit f00812
	  a FILE* argument indicating a new file to scan and sets
Packit f00812
	  things up so that a subsequent call to yylex() will start
Packit f00812
	  scanning that file.
Packit f00812
Packit f00812
	- Internal scanner names all preceded by "yy_"
Packit f00812
Packit f00812
	- lex.yy.c is deleted if errors are encountered during processing.
Packit f00812
Packit f00812
	- Comments may be put in the first section of the input by preceding
Packit f00812
	  them with '#'.
Packit f00812
Packit f00812
Packit f00812
Packit f00812
Other changes:
Packit f00812
Packit f00812
	- Some portability-related bugs fixed, in particular for machines
Packit f00812
	  with unsigned characters or sizeof( int* ) != sizeof( int ).
Packit f00812
	  Also, tweaks for VMS and Microsoft C (MS-DOS), and identifiers all
Packit f00812
	  trimmed to be 31 or fewer characters.  Shortened file names
Packit f00812
	  for dinosaur OS's.  Checks for allocating > 64K memory
Packit f00812
	  on 16 bit'ers.  Amiga tweaks.  Compiles using gcc on a Sun-3.
Packit f00812
	- Compressed and fast scanner skeletons merged.
Packit f00812
	- Skeleton header files done away with.
Packit f00812
	- Generated scanner uses prototypes and "const" for __STDC__.
Packit f00812
	- -DSV flag is now -DSYS_V for System V compilation.
Packit f00812
	- Removed all references to FTL language.
Packit f00812
	- Software now covered by BSD Copyright.
Packit f00812
	- flex will replace lex in subsequent BSD releases.