lexical scanner generator generating C++ sources
Flexc++ was designed after `flex'. Flexc++ offers as compared to flex's C++ option a cleaner class-design.
Flexc++ generates a scanner class that is ready for use, as well as a member function producing the lexical scanner tokens (lex()). The class can easily be provided with additional members without the need for polymorphic functions. Consequently, classes generated by flexc++ have no virtual members and actually have but one public member: lex(), replacing the old-style flex and flex++ yylex() function.
Flexc++ offers many options, among which an option to define classes generated by flexc++ in a separate namespace. This allows developers to define additional symbols, even outside of the class generated by flexc++, without encountering name-collision problems. With flexc++, artificial means to prevent name-collisions, like the yy-conventions used by flex and flex++ are no longer required. Flexc++ generates C++ code. If C code is required, flex should be used. Flexc++'s grammar requirements are highly compatible with flex's requirements, so converting a flex grammar into a flexc++ grammar should be fairly simple.
In addition to the flexc++ scanner generator itself and several skeleton files, the package contains an extensive man-page, as well as a full manual rewritten after the original flex manual, and several examples.
To create the program from its sources, either descend into the flexc++ directory, or unpack a created archive, cd into its top-level directory and follow the instructions provided in the INSTALL file found there.
Alternatively, binary ready-to-install versions of flexc++ are available in verious Linux distributions, in particular Debian. See, e.g., https://packages.debian.org/search?keywords=flexc%2B%2B&searchon=names&suite=all§ion=all
Gitlab's web-pages for flexc++ are here: https://fbb-git.gitlab.io/flexcpp/
released on 13 June 2019
OpenPGP public key: http://pgp.surfnet.nl/pks/lookup?op=get&search=0x7DB2A8BEEAE4D8AA
Leaders and contributors
Resources and communication
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the page “GNU Free Documentation License”.
The copyright and license notices on this page only apply to the text on this page. Any software or copyright-licenses or other similar notices described in this text has its own copyright notice and license, which can usually be found in the distribution or license text itself.