RE/flex is the fast lexical analyzer generator with full Unicode support, indent/nodent/dedent anchors, lazy quantifiers, word boundaries, and many other modern features. Supports Flex lexer specification syntax and is compatible with Bison/Yacc parsers. Generates reusable source code that is easy to understand. Supports fast scanning of UTF-8/16/32 files, strings, and streams. The reflex scanner generator tool generates clean lexer class code that is thread-safe. Generates Graphviz files to visualize state machine DFAs. RE/flex also offers a collection of class templates to wrap C++ regex engines in a unified API for scanning and searching large data sources.
1.5.804 Feb 2020 19:45
Added wunput() method; added lex.vim improved Flex and RE/flex Vim syntax highlighting; added yaml.l example; --freespace with --unicode when bracket lists contain a #; character class operators + , - , amp; now accept defined names as first operands and inverted character classes; indent anchor k now matches only when indent level is changed as documented.
1.5.720 Jan 2020 14:45
Expanded file encoding formats to include ISO-8859-2 to 16, MacRoman, KOI8; a in line() and span().
1.5.629 Dec 2019 03:16
Added new option --noindent to speed up pattern matching and lexical analysis by disabling indentation tracking in the input (also disables anchors i, j, and k); speed improvements.
1.4.424 Oct 2019 15:45
Improved option --flex for Flex compatibility; option --token-type with option --flex, now properly defines YY_NULL and yyterminate; AbstractMatcher::buffer(n) for large n; faster find().
1.4.005 Sep 2019 06:05
Added reflex option -S (--find) for efficient searching instead of scanning input (i.e. efficiently ignoring unmatched input) demonstrated with new findfast and findsearch examples, changed --nodefault to throw an exception when option --flex is not used and when the default rule is triggered.
1.3.614 Aug 2019 15:05
Added lexer and matcher buffer(base, size) methods and improved Flex-compatible yy_scan_buffer(base, size), these functions scan memory fast with zero copy overhead, added mmap.l example to scan an mmap-ed file fast with mmap(2) and buffer(base, size), other improvements.
1.3.229 Jul 2019 03:15
Added defined name expansion in bracket lists for the union , intersection amp; amp;, and subtraction -- operations.
1.3.125 Jul 2019 21:24
Added subtractive start condition scoping with ``, added undent ` k` anchor to undo indenting changes ("undenting") with an example in `examples/indent2.l`, improved indent ` i` and dedent ` j` anchors and other improvements.
Added `matcher().tabs(n)` to set tab size, used by `columno()` and indent ` i` and dedent ` j` anchors, new `reflex::Pattern` methods, other improvements.