flexc++ (2.17.00) * Requires bobcat >= 6.07.00 and icmake >= 13.00,03. * Changed ArgConfig::None into ArgConfig::NoArg. * Building uses a SPCH and multi-compilation. * The compiler is called using the value of the ${ICMAKE_CPPSTD} environment variable specifying the C++ standard to use. -- Frank B. Brokken Sun, 12 Jan 2025 21:05:42 +0100 flexc++ (2.16.00) * Repaired a bug in skeletons/flexc++'s switchIstream function causing the new istream to fail. * Building flexc++ using icmake requires icmake >= 12.01.00. Using a SPCH caused confusion by the compiler: there's a Flexc++ class Pattern and a bobcat class Pattern. The ambiguity was resolved by renaming Flexc++'s class Pattern to FPattern. Reflex OK. -- Frank B. Brokken Sat, 22 Jun 2024 16:20:27 +0200 flexc++ (2.15.00) * Repaired a bug in the States initialization causing rules like r{...} never to match when they happened to be specified as the first regular expression in lexer specification files * Added regression test p21 illustrating a{2} as the first regex. * Building flexc++ using icmake requires icmake >= 11.01.02 (the file c++std was removed) -- Frank B. Brokken Sat, 23 Mar 2024 13:21:37 +0100 flexc++ (2.14.00) * Replaced 'typedef' definitions by 'using' declarations, also in generated scanners. -- Frank B. Brokken Thu, 23 Mar 2023 10:12:44 +0100 flexc++ (2.13.01) * Changed leftover links to github into links to gitlab. -- Frank B. Brokken Sat, 18 Mar 2023 10:32:04 +0100 flexc++ (2.13.00) * The in-class implementations of the members of the default ScannerBase::Input class are now located as inline defined members in the file scannerbase.h below the interface of the class ScannerBase. * Updated the description of how to handle a user-defined Input class in the manual and the man-pages. -- Frank B. Brokken Thu, 16 Mar 2023 11:25:08 +0100 flexc++ (2.12.00) * Added new directives %baseclass-preinclude and %input-inline. * Added new option --baseclass-preinclude (-H). * Updated the man-pages' descriptions of how to use a user-define class Input -- Frank B. Brokken Fri, 10 Mar 2023 15:06:27 +0100 flexc++ (2.11.02) * Ready for libbobcat6 * Added 'c++std' defining the c++ standard to use for compilation. Compilation commands also use -Werror -- Frank B. Brokken Sun, 11 Sep 2022 13:53:37 +0200 flexc++ (2.11.01) * Repaired the generator/loop{1,4}.cc files containing leftover calls to d_input. instead of using d_input->, as d_input was changed to a pointer (see Flexc++ 2.10.00's changelog item). * Removed deprecated calls to 'std::bind2nd' * Prevented segfaults with regexes that result in indirect recursive switches to the same grammar states, which may be encountered with overly complex regexes like .*+ * Compilation now uses -Werror in addition to -Wall -- Frank B. Brokken Tue, 23 Aug 2022 21:07:51 +0200 flexc++ (2.11.00) * The 'Scanner(string const &infile, string const &outfile)', 'Scanner(istream &in, ostream &out)', and comparable ScannerBase constructors have received a third parameter, 'keepCwd = true'. See 'man flexc++api' for details. * The build script supports an option 'strip' to strip the binary constructed by 'build {program, oxref, scanner}'. The previously defined '[strip]' options were dropped. * Compilation uses the '--std=c++20' option. -- Frank B. Brokken Tue, 22 Feb 2022 13:29:39 +0100 flexc++ (2.10.01) * Removed -q from flexc++'s build script -- Frank B. Brokken Sat, 26 Jun 2021 14:50:57 +0200 flexc++ (2.10.00) * User-provided Input classes are declared in ScannerBase's protected section. In that case ScannerBase's 'Input *d_input' data member is also declared in ScannerBase's protected section. -- Frank B. Brokken Thu, 22 Apr 2021 15:04:03 +0200 flexc++ (2.09.01) * Added a section about how to handle character constants to the flexc++input(7) man-page. -- Frank B. Brokken Thu, 18 Mar 2021 11:33:54 +0100 flexc++ (2.09.00) * When switching streams the current working directory is changed to the absolute path names of the specified input streams. * After constructing Scanner objects and when their lex() members return the working directory that was active before teir call is restored. * Added the member std::string const &cwd(), returning the working directory that was active then the Scanner's constructor was called. * Removed superfluous '.tar.gz' extensions from the final lines of the man-pages -- Frank B. Brokken Sun, 21 Feb 2021 12:10:49 +0100 flexc++ (2.08.01) * Typo corrections -- Frank B. Brokken Fri, 13 Nov 2020 16:03:23 +0100 flexc++ (2.08.00) * //include filename directives change the current working directory (cwd) to filename's path, returning to the previous cwd at filename's EOF. * The member 'streamStack()[].pushedName' contains the pathname of the current active specification files. [0].pushedName contains the pathname of the initial specification file passed to the lexical scanner. * The documentation was updated accordingly * Fixed a flaw in distinguishing filenames from comment when using //include directives. -- Frank B. Brokken Fri, 13 Nov 2020 13:54:36 +0100 flexc++ (2.07.11) * Oops, the manual's chapters after the introductory chapter were missing: now they're available again. -- Frank B. Brokken Sun, 30 Aug 2020 15:14:11 +0200 flexc++ (2.07.10) * Updated the man(ual)'s description of how the scanner is informed about the tokens expected by the (bisonc++ generated) parser (QUICK START: FLEXC++ and BISONC++) -- Frank B. Brokken Mon, 10 Aug 2020 08:30:47 +0200 flexc++ (2.07.09) * Generated the parser using bisonc++ 6.04.00, Reflex OK * Circular dependencies between the scanner and the parser were removed. * Tim Schoenborn encountered a bug causing flexc++ to segfault. The bug was caused by the d_data shared pointer in the class State which may remain at its default state. The members State::next1 and State::next2 returned, resp. d_data->next1() andd_data->next2(), causing the segfault. Since the 0-initialization is required, the next?() functions now test for d_data == 0, in which case they return 0. * Known typos in de manual were fixed. -- Frank B. Brokken Sat, 18 Apr 2020 15:26:05 +0200 flexc++ (2.07.08) * Oops, the member streamStack should not be available in interactive scanners: it is now only available if the generated scanner is not an interactive scanner. * Updated the man-page to the 'token-path' facility offered by bisconc++. * Updated the icmake/findall function to match the icmake(1) man-page description. -- Frank B. Brokken Fri, 20 Mar 2020 17:28:08 +0100 flexc++ (2.07.07) * Added missing implementation of the member ScannerBase::streamStack() * Minor flexc++api man-page update -- Frank B. Brokken Fri, 17 Jan 2020 22:23:35 +0100 flexc++ (2.07.06) * Parser generated by bisonc++ 6.03.00 -- Frank B. Brokken Thu, 13 Jun 2019 14:48:33 +0200 flexc++ (2.07.05) * Minor flaws in the user manual were fixed. -- Frank B. Brokken Wed, 24 Apr 2019 20:39:41 +0200 flexc++ (2.07.04) * The descriptions of the members pushStream and popStream in the flexc++api man-page and the manual was updated * The file flexc++.xref now also contains flexc++'s function call-tree. -- Frank B. Brokken Thu, 21 Mar 2019 03:36:41 +0100 flexc++ (2.07.03) * Updated the QUICK START sections in bf(flexc++)(1). * Compiling flexc++ itself depends on facilities in the std::filesystem namespace. This requires a recent compiler (e.g., g++-8.2.0 or beyond) when compiling flexc++. * The inline function template 'as' is relocated above the inline functions using 'as', to prevent clang++-7 compilation warnings. -- Frank B. Brokken Sat, 10 Nov 2018 12:06:28 +0100 flexc++ (2.07.02) * [[fallthrough]] requires a final semicolon (cf. C++ std 20, 10.6.5). Flexc++'s internal and generated code is updated accordingly. -- Frank B. Brokken Mon, 25 Jun 2018 13:50:37 +0200 flexc++ (2.07.01) * Migrated Flexc++ from Github to Gitlab. -- Frank B. Brokken Tue, 19 Jun 2018 07:20:14 +0530 flexc++ (2.07.00) * Nested namespace specifications (like my::nested::ns) cannot be used in include-guard specifications. In those cases only the alpha-numeric characters and the underscore of the namespace are used (thanks, avalchev, for bringing this to my attention). * Since identifiers having series of two or more underscores are reserved by the C++ standard, all identifiers ending in two trailing underscores were redefined as identifiers ending in a single underscore. This involves the enums ActionType_, Leave_, StartConditon_, PostEnum_, the members actionType_, continue_, echoCh_, echoFirst_, executeAction_, getRange_, get_, istreamName_, lex_, lop1_, lop2_, lop3_, lop4_, lopf_, matched_, noReturn_, print_, pushFront_, reset_, return_, state_, switchStream_, updateFinals_, and the protected data members d_in_ d_token_ s_finIdx_, s_interactive_ s_maxSizeofStreamStack_, s_nRules_, s_rangeOfEOF_, s_ranges_, s_rf_. Existing code using the previously defined names (ending in two underscores) can easily me updated by replacing the trailing double underscores by single underscores. In practice this will most likely only involve StartCondition_, PostEnum_ and maybe lex_ and print_, as the other identifiers are intended for internal use only. -- Frank B. Brokken Tue, 15 May 2018 12:23:40 +0200 flexc++ (2.06.04) * Replaced (erroneously used) .hh extensions by (intended) .ih extensions in the man-pages and manual. -- Frank B. Brokken Fri, 09 Mar 2018 22:13:56 +0100 flexc++ (2.06.03) * Added C++-17 attributes like [[fallthrough]] and [[maybe_notused]] to flexc++'s and its generated code. * Improved the layout and fixed an error in some generated debug-statements * By implication: g++ >= 7.00.00 is required to compile the generated code. -- Frank B. Brokken Thu, 08 Mar 2018 12:44:31 +0100 flexc++ (2.06.02) * Flexc++'s parser code was generated by bisonc++ V 6.00.00. * The build script now properly recognizes the 'strip' option * By default precompiled headers are used. The option -P (cf. log entry 'flexc++ (2.05.00)' below) is now opertational. Be advised that using -P removes all existing .ih.gch files from the directory containing 'main.ih' and from all its immediate subdirectories. * Removed the --std=c++14 compiler option since that's the standard by now. -- Frank B. Brokken Tue, 18 May 2017 11:19:09 +0200 flexc++ (2.06.01) * Somehow the timestamps of scanner/lexer and scanner/lex.cc were incorrect, resulting in the build process attempting to rebuild lex.cc using flexc++ (which at this point clearly doesn't exist). The timestamps were fixed in this release. -- Frank B. Brokken Sat, 04 Mar 2017 09:17:18 +0100 flexc++ (2.06.00) * Added directive %startcondition-name specifying a non-default name for the StartCondition__ enum. * Updated the man-pages/manual. -- Frank B. Brokken Mon, 27 Feb 2017 12:33:58 +0100 flexc++ (2.05.00) * Precompiled headers are rebuilt when their .h or .ih file have changed. * Added option --own-parser (-P) showing the actions of flexc++'s own parser when parsing a lexer-specification file. * New parser, built by bisonc++ V5.00.00. * Repaired the faulty long-option definitions in main.cc, due to which long options were not properly recognized -- Frank B. Brokken Wed, 13 Apr 2016 12:37:09 +0530 flexc++ (2.04.00) * Carlos Bril and Micha de Rijk detected a curious bug resulting in flexc++ never recognizing its initial character range. E.g, these two rules a .|\n place \t into the 0th character range containing the characters \0 through \t. A scanner generated for these two rules echoed \t to cout as an unrecognized character when running echo '\t' | a.out The bug was caused by flexc++ using range numbers rather than offsets in dfarow/transitions.cc and dfarow/transit.cc (and related files) * Added regression test p19 (regression/p19) to test recurrence of the abovementioned bug. * The bugfix on Fri Mar 13 (!) 2015 of a bug reported by Wopke Hellinga and Mark Redeman reintroduced a problem with handling the lookahead operator, causing regression test p02 to fail since then. This version implements an alternative fix for the bug reported by Wopke and Mark, which does not cause p02 to fail (see parser/lex.cc). * Several inconsistencies in the manual were fixed. * The source file containing main() was renamed to main.cc (was: flexc++.cc); the internal header file for the main program was renamed to main.ih. -- Frank B. Brokken Sun, 06 Mar 2016 18:30:37 +0100 flexc++ (2.03.04) * Fixed a memory leak reported by gendx caused by the missing ScannerBase destructor. * 'build install' supports an optional LOG: argument: the (relative or absolute) path to a installation log file. The environment variable FLEXCPP is no longer used. * Updated the usage info displayed by `./build', altered the procedure to install the files at their final destinations. * Icmake files adapted to icmake 8.00.04 -- Frank B. Brokken Mon, 14 Dec 2015 15:37:58 +0100 flexc++ (2.03.03) * Kevin Brodsky observed that the installation scripts used 'chdir' rather than 'cd'. Fixed in this release. * Kevin Brodsky also observed that the combined size of all precompiled headers might exceed some disks capacities. The option -P was added to the ./build script to prevent the use of precompiled headers. -- Frank B. Brokken Mon, 05 Oct 2015 20:24:26 +0200 flexc++ (2.03.02) * Reimplemented the (un)installation procedures -- Frank B. Brokken Fri, 02 Oct 2015 11:03:20 +0200 flexc++ (2.03.01) * 'build manual' creates the manual when its called. If the manual already exists, it is recreated. Same holds true for 'build man' * Flexc++'s compilation now uses precompiled headers -- Frank B. Brokken Mon, 28 Sep 2015 18:48:43 +0200 flexc++ (2.03.00) * Fixed a bug in handling {0, x} intervals: encountered by Guillaume Endignoux. * Guillaume also detected a bug in handling \x escape sequences in character classes, e.g., [\x30-\x38]. That problem was not caused by handling the escape sequence, but by handling concatenation of regular expressions. The parser/inc/regexoreof file now contains an additional rule _regex_unit, which handles the regex _units, possibly quantified, and their concatenations, while _regex handles a _regex_unit and the operators | and / that can be used to combine regular expressions. * Guillame found an input file causing a continuous loop within flexc++. This bug was fixed by terminating flexc++ at the final end of its input streams. * The //include filename facility was not recognized in previous releases. It's now supported (cf. man flexc++input, FILE SWITCHING) * Added 'build uninstall'. This command only works if, when calling one of the 'build install' alternatives and when calling 'build uninstall' the environment variable FLEXCPP contains the (preferably absolute) filename of a file on which installed files and directories are logged. Note that 'build (dist)clean' does not remove the file pointed at by the FLEXCPP environment variable, unless that file happpens to be in a directory removed by 'build (dist)clean'. See also the file INSTALL. Defining the FLEXCPP environment variable as ~/.flexcpp usually works well. -- Frank B. Brokken Fri, 28 Aug 2015 09:38:44 +0200 flexc++ (2.02.00) * Wopke Hellinga and Mark Redeman noticed that flexc++ reported an error if the last line of a rule definition does not end in a newline. This bug was fixed in this release. * Added the file 'required' to the source distribution summarizing the required software for building flexc++, dropped the file 'build-depends'. -- Frank B. Brokken Fri, 13 Mar 2015 16:40:13 +0100 flexc++ (2.01.00) * The algorithm to determine which rules are viable was changed. Now a rule's viability is determined from the generated DFAs: rules matched at DFA rows are now removed from a set of all rule indices. If any elements remain, then those rules cannot be matched. See also the section about 'Finding non-viable rules' in the manual's technical documentation. * Generating files is prevented when errors in option/declaration specifications are encountered. All errors in option/declaration specifications (instead of just the first error that is encountered) are now reported. * A warning is issued if an existing scanner.h file does not contain 'void postCode(PostEnum__'. The warning also offers an advice to add the required declaration/definition (showing the required code) to the scanner.h file. * References to line numbers of rules should now be correct, and should refer to the line number where the rule's regex is specified. * This version depends on bobcat >= 3.21.01, and uses Bobcat's Iterator class template. -- Frank B. Brokken Sun, 16 Mar 2014 10:14:15 +0100 flexc++ (2.00.00) * Completely re-implemented look-ahead operator (LOP) handling. The LOP is now handled through mini-scanners, the previously used class TailCount and the tail count Flag enum are no longer required and were removed from the implementation. See also parser/README.grammar. * Null-matching patterns using the look-ahead operator (e.g. a*/b) are dangerous, and can take the generated scanner into a non-terminating loop. When flexc++ detects such patterns it generates a warning. These warnings can be suppressed by writing //%nowarn on the line immediately preceding the potentially null-matching pattern using the look-ahead operator. * Raw string literals, as defined by C++11, are supported * NOTE WELL: - when using flexc++ >= 2.00.00 to re-generate lex.cc and ScannerBase.h, existing object files defining and using the Scanner object should be recompiled, as flexc++ 2.00.00 uses a different data-member organization in its ScannerBase class. - new Input-class requirements: size_t Input::nPending() const must return the current number of pending (i.e., pushed back) input characters; void Input::setPending(size_t size) must remove any initial number of pending characters, reducing the number of pending characters to size. The lexical scanner always passes the value received from nPending() to setPending(), without calling Input::get() in between. - Character classes now fully support escape sequences. A \- inside a character class indicates a litteral - and is not used to define a character range. Refer to the man-page (flexc++input(7)) and/or to the manual for further details. * A second (optional) %% line in flexc++'s input file ends input file processing. To specify a regex starting with %% surround it with double quotes or indent it by at least one blank space. * Warnings added in release 1.06.00 (issued when options or directives are specified which are inconsistent with existing files, and which are issued for the `baseclass-header', `class-name', `implementation-header', and `namespace'options/directives) are now reported as errors, as flexc++ cannot simply ignore them since ignoring them may conflict with the contents of the generated 'lex.cc' and 'Scannerbase.h' files. * Repaired a bug introduced in 1.02, causing parser failures for letter and digits in REs in the context of start conditions. Cause: after '>' in parser/inc/msspec multiple letters/digits must be returned as individual characters. Realized by calling d_scanner.multiAsChar() at ms_spec's action block. * Added several new regression tests -- Frank B. Brokken Sun, 09 Feb 2014 13:32:22 +0100 flexc++ (1.08.00) * Added the 'postCode' member to the interface of the class generated by flexc++ * Added the strongly typed PostEnum__ enumeration to the scanner base class generated by flexc++ * Added a chapter `Pre-loading input lines' to the manual * The single flexc++ man-page was split into several more specific man-pages: flexc++ -- general description, and features of flexc++ itself flexc++input -- how to write flexc++'s input files flexc++api -- description of the classes generated by flexc++ -- Frank B. Brokken Sat, 28 Dec 2013 17:41:52 +0100 flexc++ (1.07.00) * --force-* options removed. Use 'rm ...' to remove files if necessary. -- Frank B. Brokken Sun, 11 Aug 2013 11:11:11 +0200 flexc++ (1.06.00) * Added images to the constructed manual * When the `namespace' option/directive is used then the namespace identifier is also used to define the include guards of generated .h files. * Warnings are issued when options or directives are specified wchich are ignored because of an already existing target file (e.g., scanner.h, scanner.ih). These warnings are not issued for lex.cc and scannerbase.h, which are by default rewritten at each flexc++ run. These warnings are issued for the `baseclass-header', `class-name', `implementation-header', and `namespace'options/directives. * Changed the implementation of 'class Options': it now mimics the implementation used by bisonc++ * This version repairs the `joren-bug' (Reported by Joren Heit on June 7, 2013). Joren discovered that in some situations rules using the LA-operator failed to re-scan the tail part of a RE using the LA-operator. -- Frank B. Brokken Tue, 06 Aug 2013 13:46:47 +0200 flexc++ (1.05.00) * Removed the possibility to specify path names for the --baseclass-header, --class-header, --implementation-header, and --lex-source options (and corresponding directives). Alternative path names for generated files should be specified using the target-directory option or directive. * The man-page and manual have been updated accordingly. -- Frank B. Brokken Tue, 28 May 2013 15:43:33 +0200 flexc++ (1.04.00) * FBB::Errno calls are replaced by FBB::Exception calls. * Added a static cast to generator/inputimplementation.cc (line 74) to get rid of a compiler warning. * Added %filenames to the directives in the man-page. * Added a public member 'interactiveLine()' to the scannerbase's interface to refresh the current interactive line buffer with the contents of the next interactive line. * Repaired erroneous ``^' inside regex loses its special meaning' warnings occurring with single line min-scanner REs like this: ^regex * ScannerBase::d_more is initialized to false (removes a (harmless) valgrind warning). -- Frank B. Brokken Fri, 15 Mar 2013 14:26:35 +0100 flexc++ (1.03.01) * Catching FBB::Errno exceptions is replaced by catching std::exception exceptions -- Frank B. Brokken Thu, 24 Jan 2013 21:09:23 +0100 flexc++ (1.03.00) * flexc++ returns 0 when called with the -h or -v flags -- Frank B. Brokken Tue, 27 Nov 2012 21:06:08 +0100 flexc++ (1.02.00) * White space may now follow a rule's mini-scanner specification. E.g., { rules for the comment mini scanner } * Usage info now correctly mentions -T as option character with --own-tokens -- Frank B. Brokken Sun, 25 Nov 2012 11:04:34 +0100 flexc++ (1.01.00) * Removed 'inline' from skeletons/flexc++.cc * Man-page and manual updated * The --interactive option was removed (the %interactive directive remains) -- Frank B. Brokken Mon, 05 Nov 2012 11:05:32 +0100 flexc++ (1.00.01) * Adapted the INSTALL file to flexc++ * Added the file 'build-depends' listing specific software and versions that are used during flexc++'s compilation and by the final program. * Several inconsistencies in the initial sections of flexc++'s user guide were repaired. -- Frank B. Brokken Sat, 27 Oct 2012 14:49:47 +0200 flexc++ (1.00.00) * The following #defines in INSTALL.im can be overruled by defining identically named environment variables: CXX defines the name of the compiler to use. By default `g++' CXXFLAGS the options passed to the compiler. By default `-Wall --std=c++0x -O2 -g' LDFLAGS the options passed to the linker. By default no options are passed to the linker. SKEL the directory where the skeletons are stored * Klaas Winter detected a bug in the skeletons/flexc++.cc file: switchOstream incorrectly changed the name of the *input* file to "-". The assignment to d_filename was removed from the skeleton file. * Klaas Winter detected a bug in CharRange::predefined causing a setfault when requesting a negated set of characters (like [:^space:]. The bug was caused by removing from the set name all characters from ^ to the end of the set name, instead of removing just the ^. Consequently, no character selecting function (for [:) could of course be found. * By now we're well beyond the 1 year beta testing period, which included using flexc++ in bisonc++ and flexc++ itself, as well as the scanner generating tool of choice for Frank's C++ course. Considering this Jean-Paul and I decided to bump flexc++'s version from version 0.98.00 to 1.00.00. Removed d_filename = "-"; from the skeleton file's implementation of switchOstream. -- Frank B. Brokken Sun, 16 Sep 2012 18:55:53 +0200 flexc++ (0.98.00) * Implemented the --case-insensitive option (and directive), generating a scanner ignoring letter casing. * Several cosmetic changes were implemented -- Frank B. Brokken Fri, 11 May 2012 13:59:54 +0200 flexc++ (0.97.30) * This version depends on Bobcat >= 3.00.00 -- Frank B. Brokken Thu, 03 May 2012 21:35:05 +0200 flexc++ (0.97.20) * George Danchev noticed that flexc++ created files even though parsing failed. This flaw's repaired in this release -- Frank B. Brokken Fri, 20 Apr 2012 16:33:01 +0200 flexc++ (0.97.10) * Added missing std:: prefixes to numeric_limits calls in skeletons/flexc++ and generator/tailcount.cc. -- Frank B. Brokken Fri, 20 Apr 2012 14:04:55 +0200 flexc++ (0.97.00) * Added the --regex-calls option showing the order in which elements from regular expressions are processed. * Added the --matched-rules option showing the number of matched rules, just before their actions are executed. * Replaced '#include ' by '#include ' and '..._MAX' constants by 'numeric_limits<...>::max()' calls. The same holds true for flexc++'s skeletons. * The files parser/parserbase.h and parser/parse.cc were added to the archive, and the check for changes in the parser's grammar was removed from 'build program' to remove the program's build process dependency on bisonc++. To recreate the program for a new parser use 'build parser'. * Skeletons can use fields (again) at $insert directives to specifiy subcases. This is documented in generator/insert.cc, and used to generate option specific code for --matched-rules (see skeletons/flexc++.cc at debug.R). * Flexc++ itself now uses a parser defining and using polymorphic semantic values. To recreate the parser (but note that this is *not* required when compiling flexc++ from the source archive), bisonc++ > 4.00.00 is required. -- Frank B. Brokken Sat, 14 Apr 2012 13:44:00 +0200 flexc++ (0.96.00) * Harold Bruintje noticed that rules explicitly assigned to the INITIAL mini scanner are also used by other %s (inclusive) mini scanners. This is in violation of the description given in http://pubs.opengroup.org/onlinepubs/7908799/xcu/lex.html stating `When the generated scanner is in a %s state, patterns with no state specified will be also active' which excludes regex rules. This release implements %s mini scanner handling as described in lex.html. -- Frank B. Brokken Thu, 29 Mar 2012 09:02:57 +0200 flexc++ (0.95.00) * Removed %max-depth again: should only be an option, not a directive * Starting this release all release tags (using names that are identical to the version number, so for this release the tag is 0.95.00) are signed to allow authentication. -- Frank B. Brokken Mon, 27 Feb 2012 13:28:44 +0100 flexc++ (0.94.00) * Added the --max-depth option defining the maximum lexical scanner specification file depth (and %max-depth directive). * Using a vector rather than a a stack to store stacked streams, to allow the Scanner class (read) access to the number of stacked files and their names. -- Frank B. Brokken Thu, 23 Feb 2012 11:53:06 +0100 flexc++ (0.93.00) * Redesigned the interactive scanner: no additional protected data members, an additional member (interactiveLine__) now handles the line-refresh from the input stream. * In interactive mode, lineNr() increments at each next interactive line. -- Frank B. Brokken Mon, 20 Feb 2012 09:58:34 +0100 flexc++ (0.92.00) * Added 'leave(int retValue)' member that can be called from members called from the scanner specification's actions to end the action, returning 'retValue' from 'lex()' * Sanitized switch- and pushStream members for interactive and non-interactive scanners * Added missing d_atBOL = true assignment in pushStream, detected by Jurjen Bokma. * All man-pages combined into one man-page: flexc++(1). * Implemented --filenames, --print-tokens and --own-tokens options/directives * Manual and man-pages updated -- Frank B. Brokken Fri, 17 Feb 2012 14:13:27 +0100 flexc++ (0.91.00) * Jurjen Bokma found a segfault in action blocks at the end of files not ending in '\n'. Caused by Input's d_in == 0 after an earlier EOF detection, and then calling d_in->get(). Repaired by testing for d_in == 0 * Added --target-directory option (and directive) to define where the generated files should be written if not at the default (lexer) location. * The earlier minor versions should have been .9 rather than .09. Same for the 0.08 series of changes. Version now (properly) set to 0.9x.yy. -- Frank B. Brokken Sat, 11 Feb 2012 13:44:10 +0100 flexc++ (0.09.52) * The Scannner(std::string infile, std::string outfile) and switchStreams(std::string infile, std::string outfile) members now also accept outfile == "", in which case std::cerr is used as the scanner's output stream. -- Frank B. Brokken Wed, 08 Feb 2012 11:48:28 +0100 flexc++ (0.09.51) * Rebased release.yo in flexc++'s main directory, and no longer in its parent, where it would contaminate Debian's area outside of flexc++'s build-area. -- Frank B. Brokken Mon, 06 Feb 2012 21:11:42 +0100 flexc++ (0.09.50) * At the beginning of its Debian life-cycle, flexc++'s changelog is maintained again. This changelog does not reflect changes beyond version 0.08.04 and before 0.09.50. Logs for those versions can be obtained using git. Currently (and until further notice) the primary git archive location is http://www.icce.rug.nl/git/flexc++.git. Flexc++'s official web location is http://www.flexcpp.org (badly in need of an update, though). -- Frank B. Brokken Mon, 06 Feb 2012 16:55:18 +0100 flexc++ (0.08.04) * Implemented the %interactive option and --interactive flag to generate an interactive scanner. -- Frank B. Brokken Sun, 15 Jan 2012 13:07:52 +0100 flexc++ (0.08.03) * Repaired Jean-Paul's segfault for a simple scanner: .*/b .* * Standardized the version to format v.mm.ss * This version after merging fbb-wip Sat Jan 14 11:48:38 2012 +0100 (9ecf7b694c7e3f37a1e8f3d46b25e96c5d5e3d90) and master, a.k.a. tag 0.7.1-pre -- Frank B. Brokken Sat, 14 Jan 2012 13:43:22 +0100 flexc++ (0.8.2) * Added ScannerBase::switchStreams(istream &, ostream &) and updated the man-pages accordingly -- Frank B. Brokken Fri, 30 Dec 2011 17:32:16 +0100 flexc++ (0.8.1) * Added missing ' ' and ':' characters to character-classes -- Frank B. Brokken Thu, 29 Dec 2011 22:23:50 +0100 flexc++ (0.8.0) * Rebuilt of flexc++, see the git logs for details. Intermediate version updates not separately logged before this date. -- Frank B. Brokken Mon, 11 Jul 2011 12:58:12 +0200 flexc++ (0.0.0) * Project Start. -- Frank B. Brokken Fri, 18 Apr 2008 23:29:36 +0200