From f49e9de2b13edb776a5745365d06c99005b87a5e Mon Sep 17 00:00:00 2001 From: Robert van Engelen Date: Sat, 28 Dec 2019 16:54:56 -0500 Subject: [PATCH] released 1.5.6 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 --- README.md | 30 +- bin/win32/reflex.exe | Bin 636928 -> 636928 bytes bin/win64/reflex.exe | Bin 751616 -> 751616 bytes build.sh | 4 +- doc/html/abslexer_8h.html | 4 +- doc/html/absmatcher_8h.html | 4 +- doc/html/annotated.html | 4 +- doc/html/bits_8h.html | 4 +- doc/html/boostmatcher_8h.html | 4 +- doc/html/class_reflex-members.html | 4 +- doc/html/class_reflex.html | 4 +- doc/html/classes.html | 4 +- ...lassreflex_1_1_abstract_lexer-members.html | 4 +- doc/html/classreflex_1_1_abstract_lexer.html | 4 +- ..._1_abstract_lexer_1_1_matcher-members.html | 4 +- ...reflex_1_1_abstract_lexer_1_1_matcher.html | 4 +- ...ssreflex_1_1_abstract_matcher-members.html | 4 +- .../classreflex_1_1_abstract_matcher.html | 4 +- ...abstract_matcher_1_1_iterator-members.html | 4 +- ...lex_1_1_abstract_matcher_1_1_iterator.html | 4 +- ...bstract_matcher_1_1_operation-members.html | 4 +- ...ex_1_1_abstract_matcher_1_1_operation.html | 4 +- doc/html/classreflex_1_1_bits-members.html | 4 +- doc/html/classreflex_1_1_bits.html | 4 +- ...classreflex_1_1_boost_matcher-members.html | 4 +- doc/html/classreflex_1_1_boost_matcher.html | 4 +- ...reflex_1_1_boost_perl_matcher-members.html | 4 +- .../classreflex_1_1_boost_perl_matcher.html | 4 +- ...eflex_1_1_boost_posix_matcher-members.html | 4 +- .../classreflex_1_1_boost_posix_matcher.html | 4 +- ...lassreflex_1_1_buffered_input-members.html | 4 +- doc/html/classreflex_1_1_buffered_input.html | 4 +- ...fered_input_1_1dos__streambuf-members.html | 4 +- ..._1_1_buffered_input_1_1dos__streambuf.html | 4 +- ...1_buffered_input_1_1streambuf-members.html | 4 +- ...eflex_1_1_buffered_input_1_1streambuf.html | 4 +- .../classreflex_1_1_flex_lexer-members.html | 4 +- doc/html/classreflex_1_1_flex_lexer.html | 4 +- ...ex_1_1_flex_lexer_1_1_matcher-members.html | 4 +- ...lassreflex_1_1_flex_lexer_1_1_matcher.html | 4 +- doc/html/classreflex_1_1_input-members.html | 4 +- doc/html/classreflex_1_1_input.html | 4 +- ...x_1_1_input_1_1dos__streambuf-members.html | 4 +- ...assreflex_1_1_input_1_1dos__streambuf.html | 4 +- ...reflex_1_1_input_1_1streambuf-members.html | 4 +- .../classreflex_1_1_input_1_1streambuf.html | 4 +- doc/html/classreflex_1_1_matcher-members.html | 14 +- doc/html/classreflex_1_1_matcher.html | 96 +--- .../classreflex_1_1_o_ranges-members.html | 4 +- doc/html/classreflex_1_1_o_ranges.html | 4 +- doc/html/classreflex_1_1_pattern-members.html | 6 +- doc/html/classreflex_1_1_pattern.html | 92 +++- ...assreflex_1_1_pattern_matcher-members.html | 4 +- doc/html/classreflex_1_1_pattern_matcher.html | 4 +- ...ssreflex_1_1_posix_1_1_tables-members.html | 4 +- .../classreflex_1_1_posix_1_1_tables.html | 4 +- doc/html/classreflex_1_1_ranges-members.html | 4 +- doc/html/classreflex_1_1_ranges.html | 4 +- ...ssreflex_1_1_std_ecma_matcher-members.html | 4 +- .../classreflex_1_1_std_ecma_matcher.html | 4 +- .../classreflex_1_1_std_matcher-members.html | 4 +- doc/html/classreflex_1_1_std_matcher.html | 4 +- ...sreflex_1_1_std_posix_matcher-members.html | 4 +- .../classreflex_1_1_std_posix_matcher.html | 4 +- ...reflex_1_1_unicode_1_1_tables-members.html | 4 +- .../classreflex_1_1_unicode_1_1_tables.html | 4 +- .../classreflex_1_1regex__error-members.html | 4 +- doc/html/classreflex_1_1regex__error.html | 4 +- doc/html/convert_8h.html | 4 +- doc/html/debug_8h.html | 4 +- doc/html/dir_000002_000000.html | 4 +- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 4 +- .../dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html | 4 +- .../dir_d44c64559bbebec7f509842c48db8b23.html | 4 +- doc/html/error_8h.html | 4 +- doc/html/files.html | 4 +- doc/html/flexlexer_8h.html | 4 +- doc/html/functions.html | 4 +- doc/html/functions_0x7e.html | 4 +- doc/html/functions_b.html | 4 +- doc/html/functions_c.html | 4 +- doc/html/functions_d.html | 4 +- doc/html/functions_e.html | 4 +- doc/html/functions_enum.html | 4 +- doc/html/functions_eval.html | 4 +- doc/html/functions_f.html | 4 +- doc/html/functions_func.html | 4 +- doc/html/functions_func_0x7e.html | 4 +- doc/html/functions_func_b.html | 4 +- doc/html/functions_func_c.html | 4 +- doc/html/functions_func_d.html | 4 +- doc/html/functions_func_e.html | 4 +- doc/html/functions_func_f.html | 4 +- doc/html/functions_func_g.html | 4 +- doc/html/functions_func_h.html | 4 +- doc/html/functions_func_i.html | 4 +- doc/html/functions_func_l.html | 4 +- doc/html/functions_func_m.html | 4 +- doc/html/functions_func_n.html | 4 +- doc/html/functions_func_o.html | 4 +- doc/html/functions_func_p.html | 6 +- doc/html/functions_func_r.html | 4 +- doc/html/functions_func_s.html | 4 +- doc/html/functions_func_t.html | 4 +- doc/html/functions_func_u.html | 4 +- doc/html/functions_func_v.html | 4 +- doc/html/functions_func_w.html | 4 +- doc/html/functions_func_x.html | 4 +- doc/html/functions_func_y.html | 4 +- doc/html/functions_g.html | 4 +- doc/html/functions_h.html | 4 +- doc/html/functions_i.html | 4 +- doc/html/functions_k.html | 4 +- doc/html/functions_l.html | 4 +- doc/html/functions_m.html | 4 +- doc/html/functions_n.html | 4 +- doc/html/functions_o.html | 4 +- doc/html/functions_p.html | 6 +- doc/html/functions_q.html | 4 +- doc/html/functions_r.html | 4 +- doc/html/functions_rela.html | 4 +- doc/html/functions_s.html | 4 +- doc/html/functions_t.html | 4 +- doc/html/functions_type.html | 4 +- doc/html/functions_u.html | 4 +- doc/html/functions_v.html | 4 +- doc/html/functions_vars.html | 4 +- doc/html/functions_vars_b.html | 4 +- doc/html/functions_vars_c.html | 4 +- doc/html/functions_vars_d.html | 4 +- doc/html/functions_vars_e.html | 4 +- doc/html/functions_vars_f.html | 4 +- doc/html/functions_vars_g.html | 4 +- doc/html/functions_vars_h.html | 4 +- doc/html/functions_vars_i.html | 4 +- doc/html/functions_vars_k.html | 4 +- doc/html/functions_vars_l.html | 4 +- doc/html/functions_vars_m.html | 4 +- doc/html/functions_vars_n.html | 4 +- doc/html/functions_vars_o.html | 4 +- doc/html/functions_vars_p.html | 4 +- doc/html/functions_vars_q.html | 4 +- doc/html/functions_vars_r.html | 4 +- doc/html/functions_vars_s.html | 4 +- doc/html/functions_vars_t.html | 4 +- doc/html/functions_vars_u.html | 4 +- doc/html/functions_vars_v.html | 4 +- doc/html/functions_vars_w.html | 4 +- doc/html/functions_vars_x.html | 4 +- doc/html/functions_vars_z.html | 4 +- doc/html/functions_w.html | 4 +- doc/html/functions_x.html | 4 +- doc/html/functions_y.html | 4 +- doc/html/functions_z.html | 4 +- doc/html/globals.html | 4 +- doc/html/globals_defs.html | 4 +- doc/html/globals_func.html | 4 +- doc/html/globals_vars.html | 4 +- doc/html/graph_legend.html | 4 +- doc/html/hierarchy.html | 4 +- doc/html/index.html | 20 +- doc/html/index_8md.html | 4 +- doc/html/inherits.html | 4 +- doc/html/input_8h.html | 4 +- doc/html/matcher_8h.html | 4 +- doc/html/namespacemembers.html | 4 +- doc/html/namespacemembers_func.html | 4 +- doc/html/namespacemembers_type.html | 4 +- doc/html/namespacemembers_vars.html | 4 +- doc/html/namespacereflex.html | 4 +- doc/html/namespacereflex_1_1_posix.html | 4 +- doc/html/namespacereflex_1_1_unicode.html | 4 +- .../namespacereflex_1_1convert__flag.html | 4 +- doc/html/namespaces.html | 4 +- doc/html/pattern_8h.html | 4 +- doc/html/posix_8h.html | 4 +- doc/html/ranges_8h.html | 4 +- doc/html/reflex_8cpp.html | 4 +- doc/html/reflex_8h.html | 8 +- doc/html/setop_8h.html | 4 +- doc/html/stdmatcher_8h.html | 4 +- doc/html/struct_reflex_1_1_code-members.html | 4 +- doc/html/struct_reflex_1_1_code.html | 4 +- .../struct_reflex_1_1_library-members.html | 4 +- doc/html/struct_reflex_1_1_library.html | 4 +- doc/html/struct_reflex_1_1_rule-members.html | 4 +- doc/html/struct_reflex_1_1_rule.html | 4 +- ..._1_abstract_matcher_1_1_const-members.html | 4 +- ...reflex_1_1_abstract_matcher_1_1_const.html | 4 +- ...1_abstract_matcher_1_1_option-members.html | 4 +- ...eflex_1_1_abstract_matcher_1_1_option.html | 4 +- ...uctreflex_1_1_bits_1_1_bitref-members.html | 4 +- .../structreflex_1_1_bits_1_1_bitref.html | 4 +- ...x_1_1_input_1_1file__encoding-members.html | 4 +- ...uctreflex_1_1_input_1_1file__encoding.html | 4 +- ...treflex_1_1_matcher_1_1_f_s_m-members.html | 4 +- .../structreflex_1_1_matcher_1_1_f_s_m.html | 4 +- ...treflex_1_1_pattern_1_1_const-members.html | 4 +- .../structreflex_1_1_pattern_1_1_const.html | 4 +- ...reflex_1_1_pattern_1_1_option-members.html | 4 +- .../structreflex_1_1_pattern_1_1_option.html | 4 +- ...flex_1_1_pattern_1_1_position-members.html | 4 +- ...structreflex_1_1_pattern_1_1_position.html | 4 +- ...treflex_1_1_pattern_1_1_state-members.html | 4 +- .../structreflex_1_1_pattern_1_1_state.html | 4 +- ...ex_1_1_posix_1_1_tables_1_1lt-members.html | 4 +- ...ructreflex_1_1_posix_1_1_tables_1_1lt.html | 4 +- .../structreflex_1_1_type_op-members.html | 4 +- doc/html/structreflex_1_1_type_op.html | 4 +- ...1_type_op_3_01const_01_t_01_4-members.html | 4 +- ...eflex_1_1_type_op_3_01const_01_t_01_4.html | 4 +- ...treflex_1_1lazy__intersection-members.html | 4 +- .../structreflex_1_1lazy__intersection.html | 4 +- ...azy__intersection_1_1iterator-members.html | 4 +- ...lex_1_1lazy__intersection_1_1iterator.html | 4 +- .../structreflex_1_1lazy__union-members.html | 4 +- doc/html/structreflex_1_1lazy__union.html | 4 +- ...ex_1_1lazy__union_1_1iterator-members.html | 4 +- ...ructreflex_1_1lazy__union_1_1iterator.html | 4 +- ...tructreflex_1_1range__compare-members.html | 4 +- doc/html/structreflex_1_1range__compare.html | 4 +- doc/html/timer_8h.html | 4 +- doc/html/traits_8h.html | 4 +- doc/html/unicode_8h.html | 4 +- doc/html/utf8_8h.html | 4 +- doc/index.md | 41 +- doc/man/reflex.1 | 2 +- include/reflex/matcher.h | 504 +++++++++++++++--- include/reflex/pattern.h | 52 ++ lib/matcher.cpp | 463 ++-------------- lib/pattern.cpp | 5 +- src/reflex.cpp | 4 + src/reflex.h | 2 +- 233 files changed, 1114 insertions(+), 1093 deletions(-) diff --git a/README.md b/README.md index 834466fa6..a10d9ae55 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,17 @@ The regex-centric, fast lexical analyzer generator for C++ with full Unicode support. Flex reimagined: fast, flexible, adds Boost 💪 -[RE/flex][reflex-url] is faster than Flex while providing a wealth of new -features. RE/flex is also much faster than regex libraries such as +[RE/flex][reflex-url] is as fast or faster than Flex while providing a wealth +of new features. RE/flex is also much faster than regex libraries such as Boost.Regex, C++11 std::regex, PCRE2 and RE2. For example, tokenizing a 2 KB -representative C source code file into 244 tokens takes only 10 microseconds: +representative C source code file into 244 tokens takes only 8 microseconds: - + + - + @@ -28,11 +29,17 @@ representative C source code file into 244 tokens takes only 10 microseconds:
Command / FunctionSoftwareTime (μs)
reflex --fastRE/flex 1.3.610
reflex --fast --noindentRE/flex 1.5.68
reflex --fastRE/flex 1.5.69
flex -+ --fullFlex 2.5.3517
reflex --fullRE/flex 1.3.619
reflex --fullRE/flex 1.5.618
boost::spirit::lex::lexertl::actor_lexer::iterator_typeBoost.Spirit.Lex 1.66.040
hs_compile_multi(), hs_scan()Hyperscan 5.1.0209
reflex -m=boost-perlBoost.Regex 1.66.0230
std::cregex_iterator()C++11 std::regex5979
-Note: *Best times of 10 tests with average time in microseconds over 100 runs -(using clang 9.0.0 with -O2, 2.9 GHz Intel Core i7, 16 GB 2133 MHz LPDDR3). -Hyperscan disqualifies as a potential scanner due to its "All matches reported" +Note: *Best times of 30 tests with average time in microseconds over 100 runs +using Mac OS X 10.12.6 clang 9.0.0 -O2, 2.9 GHz Intel Core i7, 16 GB 2133 MHz +LPDDR3. Hyperscan disqualifies as a scanner due to its "All matches reported" semantics resulting in 1915 matches for this test, and due to its event handler requirements.* [Download the tests](https://www.genivia.com/files/perfcomp.zip) +*Timings on other platforms may differ, though in the worst cases tested, +reflex ran equally fast than the best times of Flex.* + +The RE/flex matcher tracks line numbers, column numbers, and indentations, +whereas Flex does not (option noyylineno) and neither do the other regex +matchers compared. Tracking this information incurs some overhead. Features @@ -100,7 +107,7 @@ Step** in MSVC++ as follows: `$(VC_IncludePath);$(WindowsSDK_IncludePath);C:\Users\YourUserName\Documents\reflex\include` (this assumes the `reflex` source package is in your **Documents** folder). -3. enter `"C:\Users\YourUserName\Documents\reflex\bin\reflex.exe" --header-file +3. enter `"C:\Users\YourUserName\Documents\reflex\bin\win32\reflex.exe" --header-file "C:\Users\YourUserName\Documents\mylexer.l"` in the **Command Line** property under **Custom Build Step** (this assumes `mylexer.l` is in your **Documents** folder); @@ -330,7 +337,7 @@ Use C++11 range-based loops with RE/flex iterators: ```{.cpp} #include // reflex::StdMatcher, reflex::Input, std::regex -// use a StdMatcher with std::regex to to search for words in a sentence +// use a StdMatcher with std::regex to search for words in a sentence reflex::StdMatcher matcher("\\w+", "How now brown cow."); for (auto& match : matcher.find) std::cout << "Found " << match.text() << std::endl; @@ -473,7 +480,8 @@ Changelog - Nov 12, 2019: 1.5.2 fixed an internal buffer allocation issue that may cause a crash when input lines are longer than 16KB (regression bug that crept into in 1.5.0). - Nov 21, 2019: 1.5.3 added `lineno_end()` and `columno_end()` methods, updated `columns()` with clarifications in the updated documentation; expanded the documentation with additional error reporting and handling techniques with RE/flex and Bison bridge and complete configurations; FSM code generation improvements. - Nov 22, 2019: 1.5.4 added `flexexample11xx` example with Flex specification and Bison complete parser; minor improvements. -- Dec 23, 2019: 1.5.5 expanded the `skip(c)` methods with a `wchar_t` wide character parameter and a UTF-8 string parameter to to skip input; added new option `--token-eof`. +- Dec 23, 2019: 1.5.5 expanded the `skip(c)` methods with a `wchar_t` wide character parameter and a UTF-8 string parameter to skip input; added new option `--token-eof`. +- Dec 28, 2019: 1.5.6 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. [logo-url]: https://www.genivia.com/images/reflex-logo.png [reflex-url]: https://www.genivia.com/reflex.html diff --git a/bin/win32/reflex.exe b/bin/win32/reflex.exe index 1e0586f948a24514da6d35438a81b282018b4983..c7e7df860c5e0d85390dbfa3f1a99738a7e35b1b 100755 GIT binary patch delta 98433 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 delta 98441 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 diff --git a/bin/win64/reflex.exe b/bin/win64/reflex.exe index 9a3fa502d1dc5bcd17d7fca6f92b33895e8e794d..1a52ac439cf4167de9dfa38ed444bf0e1e7e602c 100755 GIT binary patch delta 156592 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≥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

kKyE#EVZ46ABtyRKA|rQ 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⪚ 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 diff --git a/build.sh b/build.sh index 1ea703604..05edd5057 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,7 @@ #!/bin/sh echo echo "Building reflex" -cd lib; make -f Make; cd - -cd src; make -f Make; cd - +cd lib; make -f Make || exit 1; cd - +cd src; make -f Make || exit 1; cd - echo echo "OK" diff --git a/doc/html/abslexer_8h.html b/doc/html/abslexer_8h.html index 3de2e96d8..2012f97fd 100644 --- a/doc/html/abslexer_8h.html +++ b/doc/html/abslexer_8h.html @@ -21,7 +21,7 @@

abslexer.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -109,7 +109,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/absmatcher_8h.html b/doc/html/absmatcher_8h.html index 074b39210..0059b61fd 100644 --- a/doc/html/absmatcher_8h.html +++ b/doc/html/absmatcher_8h.html @@ -21,7 +21,7 @@
absmatcher.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -269,7 +269,7 @@

Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/annotated.html b/doc/html/annotated.html index a4dd698ba..5dca72fbd 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -21,7 +21,7 @@
Class List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -109,7 +109,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/bits_8h.html b/doc/html/bits_8h.html index 530b66329..af3c9aece 100644 --- a/doc/html/bits_8h.html +++ b/doc/html/bits_8h.html @@ -21,7 +21,7 @@
bits.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/boostmatcher_8h.html b/doc/html/boostmatcher_8h.html index 82a3c44c6..ec7f98388 100644 --- a/doc/html/boostmatcher_8h.html +++ b/doc/html/boostmatcher_8h.html @@ -21,7 +21,7 @@
boostmatcher.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -102,7 +102,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/class_reflex-members.html b/doc/html/class_reflex-members.html index f5747d2ab..a9e0bb095 100644 --- a/doc/html/class_reflex-members.html +++ b/doc/html/class_reflex-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -142,7 +142,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/class_reflex.html b/doc/html/class_reflex.html index e665f96e4..7f6b16f33 100644 --- a/doc/html/class_reflex.html +++ b/doc/html/class_reflex.html @@ -21,7 +21,7 @@
Reflex Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -2472,7 +2472,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classes.html b/doc/html/classes.html index ea32e586c..59e4bb8bc 100644 --- a/doc/html/classes.html +++ b/doc/html/classes.html @@ -21,7 +21,7 @@
Class Index

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -92,7 +92,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer-members.html b/doc/html/classreflex_1_1_abstract_lexer-members.html index dc2b35fdb..40516a4bf 100644 --- a/doc/html/classreflex_1_1_abstract_lexer-members.html +++ b/doc/html/classreflex_1_1_abstract_lexer-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -113,7 +113,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer.html b/doc/html/classreflex_1_1_abstract_lexer.html index 6b5c2456c..fd11eccf2 100644 --- a/doc/html/classreflex_1_1_abstract_lexer.html +++ b/doc/html/classreflex_1_1_abstract_lexer.html @@ -21,7 +21,7 @@
reflex::AbstractLexer< M > Class Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1842,7 +1842,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html index 0dadb37b0..44f578dcf 100644 --- a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html +++ b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html index 6566027a3..40d9cf0a1 100644 --- a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html +++ b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html @@ -21,7 +21,7 @@
reflex::AbstractLexer< M >::Matcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -295,7 +295,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher-members.html b/doc/html/classreflex_1_1_abstract_matcher-members.html index 9d5c0c0ca..b1d9c1e4c 100644 --- a/doc/html/classreflex_1_1_abstract_matcher-members.html +++ b/doc/html/classreflex_1_1_abstract_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -170,7 +170,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher.html b/doc/html/classreflex_1_1_abstract_matcher.html index 539f47982..4d966f097 100644 --- a/doc/html/classreflex_1_1_abstract_matcher.html +++ b/doc/html/classreflex_1_1_abstract_matcher.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -3416,7 +3416,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html index 9be4ecbaf..403e85635 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html index 3663d64b6..b309ebd06 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Iterator< T > Class Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -539,7 +539,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html index ffe1decad..011843e8f 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -69,7 +69,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html index 90e06000a..94d39af86 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Operation Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -379,7 +379,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_bits-members.html b/doc/html/classreflex_1_1_bits-members.html index d24ab6af6..39bee05fe 100644 --- a/doc/html/classreflex_1_1_bits-members.html +++ b/doc/html/classreflex_1_1_bits-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -105,7 +105,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_bits.html b/doc/html/classreflex_1_1_bits.html index f4cda6e04..b2de3ee59 100644 --- a/doc/html/classreflex_1_1_bits.html +++ b/doc/html/classreflex_1_1_bits.html @@ -21,7 +21,7 @@
reflex::Bits Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1659,7 +1659,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_matcher-members.html b/doc/html/classreflex_1_1_boost_matcher-members.html index 6a74004d1..99e46c1e6 100644 --- a/doc/html/classreflex_1_1_boost_matcher-members.html +++ b/doc/html/classreflex_1_1_boost_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -198,7 +198,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_matcher.html b/doc/html/classreflex_1_1_boost_matcher.html index 9cf574b93..c6c35745e 100644 --- a/doc/html/classreflex_1_1_boost_matcher.html +++ b/doc/html/classreflex_1_1_boost_matcher.html @@ -21,7 +21,7 @@
reflex::BoostMatcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1183,7 +1183,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_perl_matcher-members.html b/doc/html/classreflex_1_1_boost_perl_matcher-members.html index 8f738690e..8ceb89da7 100644 --- a/doc/html/classreflex_1_1_boost_perl_matcher-members.html +++ b/doc/html/classreflex_1_1_boost_perl_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -201,7 +201,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_perl_matcher.html b/doc/html/classreflex_1_1_boost_perl_matcher.html index eb5cd0ead..dd95f3976 100644 --- a/doc/html/classreflex_1_1_boost_perl_matcher.html +++ b/doc/html/classreflex_1_1_boost_perl_matcher.html @@ -21,7 +21,7 @@
reflex::BoostPerlMatcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -692,7 +692,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_posix_matcher-members.html b/doc/html/classreflex_1_1_boost_posix_matcher-members.html index a4041ee62..3afc8913f 100644 --- a/doc/html/classreflex_1_1_boost_posix_matcher-members.html +++ b/doc/html/classreflex_1_1_boost_posix_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -201,7 +201,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_posix_matcher.html b/doc/html/classreflex_1_1_boost_posix_matcher.html index bc95fe46c..00e3ff51d 100644 --- a/doc/html/classreflex_1_1_boost_posix_matcher.html +++ b/doc/html/classreflex_1_1_boost_posix_matcher.html @@ -21,7 +21,7 @@
reflex::BoostPosixMatcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -739,7 +739,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input-members.html b/doc/html/classreflex_1_1_buffered_input-members.html index 83b2ff7b8..f46e90c6a 100644 --- a/doc/html/classreflex_1_1_buffered_input-members.html +++ b/doc/html/classreflex_1_1_buffered_input-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -120,7 +120,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input.html b/doc/html/classreflex_1_1_buffered_input.html index 4914bd665..8df9588ff 100644 --- a/doc/html/classreflex_1_1_buffered_input.html +++ b/doc/html/classreflex_1_1_buffered_input.html @@ -21,7 +21,7 @@
reflex::BufferedInput Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -712,7 +712,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html index d897d2d71..4e90acc4e 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -70,7 +70,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html index 09e45e7dd..c6fbee225 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html @@ -21,7 +21,7 @@
reflex::BufferedInput::dos_streambuf Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -357,7 +357,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html b/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html index 84c7049c4..d50c8f805 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html b/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html index e839eb76d..faaaec438 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html @@ -21,7 +21,7 @@
reflex::BufferedInput::streambuf Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -288,7 +288,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer-members.html b/doc/html/classreflex_1_1_flex_lexer-members.html index 1a7e36b0f..ff3f66c5b 100644 --- a/doc/html/classreflex_1_1_flex_lexer-members.html +++ b/doc/html/classreflex_1_1_flex_lexer-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -126,7 +126,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer.html b/doc/html/classreflex_1_1_flex_lexer.html index c0eaf14b1..43660e790 100644 --- a/doc/html/classreflex_1_1_flex_lexer.html +++ b/doc/html/classreflex_1_1_flex_lexer.html @@ -21,7 +21,7 @@
reflex::FlexLexer< M > Class Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -767,7 +767,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html index 17af96cff..2b59de914 100644 --- a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html +++ b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html index cba7748d1..8cc69997d 100644 --- a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html +++ b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html @@ -21,7 +21,7 @@
reflex::FlexLexer< M >::Matcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -319,7 +319,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input-members.html b/doc/html/classreflex_1_1_input-members.html index 0dc832531..da9392423 100644 --- a/doc/html/classreflex_1_1_input-members.html +++ b/doc/html/classreflex_1_1_input-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -108,7 +108,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input.html b/doc/html/classreflex_1_1_input.html index e183f5a88..5bea8fdc9 100644 --- a/doc/html/classreflex_1_1_input.html +++ b/doc/html/classreflex_1_1_input.html @@ -21,7 +21,7 @@
reflex::Input Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1590,7 +1590,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html b/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html index 7f0e50e67..a032b6c82 100644 --- a/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html +++ b/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -69,7 +69,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1dos__streambuf.html b/doc/html/classreflex_1_1_input_1_1dos__streambuf.html index f3679e6df..22c19944c 100644 --- a/doc/html/classreflex_1_1_input_1_1dos__streambuf.html +++ b/doc/html/classreflex_1_1_input_1_1dos__streambuf.html @@ -21,7 +21,7 @@
reflex::Input::dos_streambuf Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -330,7 +330,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1streambuf-members.html b/doc/html/classreflex_1_1_input_1_1streambuf-members.html index 02f91dc57..a5f0aa9ac 100644 --- a/doc/html/classreflex_1_1_input_1_1streambuf-members.html +++ b/doc/html/classreflex_1_1_input_1_1streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1streambuf.html b/doc/html/classreflex_1_1_input_1_1streambuf.html index 28fd61db8..76b375109 100644 --- a/doc/html/classreflex_1_1_input_1_1streambuf.html +++ b/doc/html/classreflex_1_1_input_1_1streambuf.html @@ -21,7 +21,7 @@
reflex::Input::streambuf Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -283,7 +283,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_matcher-members.html b/doc/html/classreflex_1_1_matcher-members.html index 4ea29eeae..15e25a77a 100644 --- a/doc/html/classreflex_1_1_matcher-members.html +++ b/doc/html/classreflex_1_1_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -73,7 +73,7 @@ bol()reflex::AbstractMatcherinline bol_reflex::AbstractMatcherprotected border()reflex::AbstractMatcherinline - boyer_moore_init(const char *pat, size_t len)reflex::Matcherinlineprotected + boyer_moore_init(const char *pat, size_t len)reflex::Matcherprotected buf_reflex::AbstractMatcherprotected buffer(size_t blk=0)reflex::AbstractMatcherinline buffer(char *base, size_t size)reflex::AbstractMatcherinline @@ -155,7 +155,7 @@ lno_reflex::AbstractMatcherprotected lpb_reflex::AbstractMatcherprotected mat_reflex::AbstractMatcherprotected - match(Method method)reflex::Matcherprotectedvirtual + match(Method method)reflex::Matcherinlineprotectedvirtual Matcher()reflex::Matcherinline Matcher(const P *pattern, const Input &input=Input(), const char *opt=NULL)reflex::Matcherinline Matcher(const P &pattern, const Input &input=Input(), const char *opt=NULL)reflex::Matcherinline @@ -203,8 +203,6 @@ peek_more()reflex::AbstractMatcherinlineprotected pop_stops()reflex::Matcherinline pos_reflex::AbstractMatcherprotected - predict_match(const Pattern::Pred pmh[], const char *s, size_t n)reflex::Matcherinlineprotectedstatic - predict_match(const Pattern::Pred pma[], const char *s)reflex::Matcherinlineprotectedstatic push_stops()reflex::Matcherinline reset(const char *opt=NULL)reflex::Matcherinlinevirtual reset_text()reflex::AbstractMatcherinlineprotected @@ -222,8 +220,8 @@ span()reflex::AbstractMatcherinline splitreflex::AbstractMatcher stk_reflex::Matcherprotected - stops()reflex::Matcherinline - Stops typedefreflex::Matcherprotected + Stops typedefreflex::Matcherprotected + stops()reflex::Matcherinline str() const reflex::AbstractMatcherinline tab_reflex::Matcherprotected tabs(char n)reflex::AbstractMatcherinline @@ -244,7 +242,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_matcher.html b/doc/html/classreflex_1_1_matcher.html index 353640ad7..937c83207 100644 --- a/doc/html/classreflex_1_1_matcher.html +++ b/doc/html/classreflex_1_1_matcher.html @@ -21,7 +21,7 @@
reflex::Matcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -56,7 +56,6 @@ Static Public Member Functions | Protected Types | Protected Member Functions | -Static Protected Member Functions | Protected Attributes | List of all members
@@ -557,15 +556,6 @@  Update the newline count, column count, and character count when shifting the buffer. More...
  - - - - - - - -

-Static Protected Member Functions

static bool predict_match (const Pattern::Pred pmh[], const char *s, size_t n)
 Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4). More...
 
static size_t predict_match (const Pattern::Pred pma[], const char *s)
 Returns zero when match is predicted or nonzero shift value, based on s[0..3]. More...
 
@@ -945,7 +935,7 @@

Member Function Documentation

Protected Attributes

size_t ded_
-inlineprotected +protected
@@ -1900,7 +1890,7 @@

Member Function Documentation

-protectedvirtual +inlineprotectedvirtual
@@ -2027,84 +2017,6 @@

Member Function Documentation

Pop indent stops.

-
- - -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static bool reflex::Matcher::predict_match (const Pattern::Pred pmh[],
const char * s,
size_t n 
)
-
-inlinestaticprotected
-
- -

Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4).

- -
-
- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static size_t reflex::Matcher::predict_match (const Pattern::Pred pma[],
const char * s 
)
-
-inlinestaticprotected
-
- -

Returns zero when match is predicted or nonzero shift value, based on s[0..3].

-
@@ -2413,7 +2325,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_o_ranges-members.html b/doc/html/classreflex_1_1_o_ranges-members.html index 492f48701..8a023fa4d 100644 --- a/doc/html/classreflex_1_1_o_ranges-members.html +++ b/doc/html/classreflex_1_1_o_ranges-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -103,7 +103,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_o_ranges.html b/doc/html/classreflex_1_1_o_ranges.html index 11b0d8218..4941ea6be 100644 --- a/doc/html/classreflex_1_1_o_ranges.html +++ b/doc/html/classreflex_1_1_o_ranges.html @@ -21,7 +21,7 @@
reflex::ORanges< T > Class Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1051,7 +1051,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern-members.html b/doc/html/classreflex_1_1_pattern-members.html index 32d5b9ce6..5f78c4d8c 100644 --- a/doc/html/classreflex_1_1_pattern-members.html +++ b/doc/html/classreflex_1_1_pattern-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -186,6 +186,8 @@ posix(size_t index, Chars &chars) const reflex::Patternprivate pre_reflex::Patternprivate Pred typedefreflex::Pattern + predict_match(const Pattern::Pred pmh[], const char *s, size_t n)reflex::Patterninlinestatic + predict_match(const Pattern::Pred pma[], const char *s)reflex::Patterninlinestatic predict_match_dfa(State &start)reflex::Patternprivate reachable(Index choice) const reflex::Patterninline reversecase(Char c)reflex::Patterninlineprivatestatic @@ -208,7 +210,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern.html b/doc/html/classreflex_1_1_pattern.html index 08bec512c..b4736ec68 100644 --- a/doc/html/classreflex_1_1_pattern.html +++ b/doc/html/classreflex_1_1_pattern.html @@ -21,7 +21,7 @@
reflex::Pattern Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -54,6 +54,7 @@ Classes | Public Types | Public Member Functions | +Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | @@ -220,6 +221,15 @@  Get elapsed code words assembly time. More...
  + + + + + + + +

+Static Public Member Functions

static bool predict_match (const Pattern::Pred pmh[], const char *s, size_t n)
 Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4). More...
 
static size_t predict_match (const Pattern::Pred pma[], const char *s)
 Returns zero when match is predicted or nonzero shift value, based on s[0..3]. More...
 
@@ -3588,6 +3598,84 @@

Member Function Documentation

Protected Member Functions

virtual void error (regex_error_type code, size_t pos=0) const
+
+ + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static bool reflex::Pattern::predict_match (const Pattern::Pred pmh[],
const char * s,
size_t n 
)
+
+inlinestatic
+
+ +

Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4).

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static size_t reflex::Pattern::predict_match (const Pattern::Pred pma[],
const char * s 
)
+
+inlinestatic
+
+ +

Returns zero when match is predicted or nonzero shift value, based on s[0..3].

+
@@ -4374,7 +4462,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern_matcher-members.html b/doc/html/classreflex_1_1_pattern_matcher-members.html index 0bb7194dc..9ad35b4de 100644 --- a/doc/html/classreflex_1_1_pattern_matcher-members.html +++ b/doc/html/classreflex_1_1_pattern_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -187,7 +187,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern_matcher.html b/doc/html/classreflex_1_1_pattern_matcher.html index 93faa5fe4..fb636faca 100644 --- a/doc/html/classreflex_1_1_pattern_matcher.html +++ b/doc/html/classreflex_1_1_pattern_matcher.html @@ -21,7 +21,7 @@
reflex::PatternMatcher< P > Class Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1145,7 +1145,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_posix_1_1_tables-members.html b/doc/html/classreflex_1_1_posix_1_1_tables-members.html index 753dbc89a..e9fa61233 100644 --- a/doc/html/classreflex_1_1_posix_1_1_tables-members.html +++ b/doc/html/classreflex_1_1_posix_1_1_tables-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_posix_1_1_tables.html b/doc/html/classreflex_1_1_posix_1_1_tables.html index bb0be8f25..d791d656d 100644 --- a/doc/html/classreflex_1_1_posix_1_1_tables.html +++ b/doc/html/classreflex_1_1_posix_1_1_tables.html @@ -21,7 +21,7 @@
reflex::Posix::Tables Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -144,7 +144,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_ranges-members.html b/doc/html/classreflex_1_1_ranges-members.html index af5bc4c73..8c78c21e2 100644 --- a/doc/html/classreflex_1_1_ranges-members.html +++ b/doc/html/classreflex_1_1_ranges-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -89,7 +89,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_ranges.html b/doc/html/classreflex_1_1_ranges.html index c6541db55..d4942e448 100644 --- a/doc/html/classreflex_1_1_ranges.html +++ b/doc/html/classreflex_1_1_ranges.html @@ -21,7 +21,7 @@
reflex::Ranges< T > Class Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1104,7 +1104,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_ecma_matcher-members.html b/doc/html/classreflex_1_1_std_ecma_matcher-members.html index 10a41f6ac..4f72d3794 100644 --- a/doc/html/classreflex_1_1_std_ecma_matcher-members.html +++ b/doc/html/classreflex_1_1_std_ecma_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -204,7 +204,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_ecma_matcher.html b/doc/html/classreflex_1_1_std_ecma_matcher.html index 32a4d6462..2567d0bfb 100644 --- a/doc/html/classreflex_1_1_std_ecma_matcher.html +++ b/doc/html/classreflex_1_1_std_ecma_matcher.html @@ -21,7 +21,7 @@
reflex::StdEcmaMatcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -880,7 +880,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_matcher-members.html b/doc/html/classreflex_1_1_std_matcher-members.html index 5156c296a..d2f4ab773 100644 --- a/doc/html/classreflex_1_1_std_matcher-members.html +++ b/doc/html/classreflex_1_1_std_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -200,7 +200,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_matcher.html b/doc/html/classreflex_1_1_std_matcher.html index 193465eb3..edae26abc 100644 --- a/doc/html/classreflex_1_1_std_matcher.html +++ b/doc/html/classreflex_1_1_std_matcher.html @@ -21,7 +21,7 @@
reflex::StdMatcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1183,7 +1183,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_posix_matcher-members.html b/doc/html/classreflex_1_1_std_posix_matcher-members.html index c4deb61d7..67616db14 100644 --- a/doc/html/classreflex_1_1_std_posix_matcher-members.html +++ b/doc/html/classreflex_1_1_std_posix_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -204,7 +204,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_posix_matcher.html b/doc/html/classreflex_1_1_std_posix_matcher.html index 16ae641e4..564c862c1 100644 --- a/doc/html/classreflex_1_1_std_posix_matcher.html +++ b/doc/html/classreflex_1_1_std_posix_matcher.html @@ -21,7 +21,7 @@
reflex::StdPosixMatcher Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -926,7 +926,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_unicode_1_1_tables-members.html b/doc/html/classreflex_1_1_unicode_1_1_tables-members.html index 6bf7d28bb..c777cd6de 100644 --- a/doc/html/classreflex_1_1_unicode_1_1_tables-members.html +++ b/doc/html/classreflex_1_1_unicode_1_1_tables-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_unicode_1_1_tables.html b/doc/html/classreflex_1_1_unicode_1_1_tables.html index 2c80aef45..60381c6de 100644 --- a/doc/html/classreflex_1_1_unicode_1_1_tables.html +++ b/doc/html/classreflex_1_1_unicode_1_1_tables.html @@ -21,7 +21,7 @@
reflex::Unicode::Tables Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -198,7 +198,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1regex__error-members.html b/doc/html/classreflex_1_1regex__error-members.html index ba83b1b44..f90548ffc 100644 --- a/doc/html/classreflex_1_1regex__error-members.html +++ b/doc/html/classreflex_1_1regex__error-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -85,7 +85,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1regex__error.html b/doc/html/classreflex_1_1regex__error.html index a1544346b..d1418d84b 100644 --- a/doc/html/classreflex_1_1regex__error.html +++ b/doc/html/classreflex_1_1regex__error.html @@ -21,7 +21,7 @@
reflex::regex_error Class Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -787,7 +787,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/convert_8h.html b/doc/html/convert_8h.html index eb7562386..f00b59d5f 100644 --- a/doc/html/convert_8h.html +++ b/doc/html/convert_8h.html @@ -21,7 +21,7 @@
convert.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -151,7 +151,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/debug_8h.html b/doc/html/debug_8h.html index 34c7d0344..f5440a187 100644 --- a/doc/html/debug_8h.html +++ b/doc/html/debug_8h.html @@ -21,7 +21,7 @@
debug.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -225,7 +225,7 @@

Example

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/dir_000002_000000.html b/doc/html/dir_000002_000000.html index 231903452..1ec8d7f93 100644 --- a/doc/html/dir_000002_000000.html +++ b/doc/html/dir_000002_000000.html @@ -21,7 +21,7 @@
src -> include Relation

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -46,7 +46,7 @@

src → include Relation

File in srcIncludes file in include
reflex.hreflex / convert.h
reflex.hreflex / error.h
reflex.hreflex / input.h
reflex.hreflex / pattern.h
reflex.hreflex / utf8.h
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index c9216eac9..8754fab1b 100644 --- a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -21,7 +21,7 @@
src Directory Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -76,7 +76,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html b/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html index 6775f6f34..8f962fd85 100644 --- a/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html +++ b/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html @@ -21,7 +21,7 @@
reflex Directory Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -117,7 +117,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html index fd40774a2..57fa7ad8d 100644 --- a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -21,7 +21,7 @@
include Directory Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -62,7 +62,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/error_8h.html b/doc/html/error_8h.html index 618f0bd5b..3f60d4813 100644 --- a/doc/html/error_8h.html +++ b/doc/html/error_8h.html @@ -21,7 +21,7 @@
error.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -111,7 +111,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/files.html b/doc/html/files.html index 651cf4d12..6a79bc2ae 100644 --- a/doc/html/files.html +++ b/doc/html/files.html @@ -21,7 +21,7 @@
File List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -77,7 +77,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/flexlexer_8h.html b/doc/html/flexlexer_8h.html index e653ae762..83b51b912 100644 --- a/doc/html/flexlexer_8h.html +++ b/doc/html/flexlexer_8h.html @@ -21,7 +21,7 @@
flexlexer.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -1054,7 +1054,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/functions.html b/doc/html/functions.html index 6f90ef676..c9b94d3c9 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -175,7 +175,7 @@

- a -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html index e4d72efa2..323d48802 100644 --- a/doc/html/functions_0x7e.html +++ b/doc/html/functions_0x7e.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -109,7 +109,7 @@

- ~ -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_b.html b/doc/html/functions_b.html index 96e9848f9..3e0c96d52 100644 --- a/doc/html/functions_b.html +++ b/doc/html/functions_b.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -173,7 +173,7 @@

- b -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_c.html b/doc/html/functions_c.html index fcd10c9bf..8cd169539 100644 --- a/doc/html/functions_c.html +++ b/doc/html/functions_c.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -276,7 +276,7 @@

- c -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_d.html b/doc/html/functions_d.html index 6bb2225fa..144cf7172 100644 --- a/doc/html/functions_d.html +++ b/doc/html/functions_d.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -128,7 +128,7 @@

- d -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_e.html b/doc/html/functions_e.html index 8872f43fa..4dc3bf9b1 100644 --- a/doc/html/functions_e.html +++ b/doc/html/functions_e.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -186,7 +186,7 @@

- e -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html index b2eee88cf..688b5e25b 100644 --- a/doc/html/functions_enum.html +++ b/doc/html/functions_enum.html @@ -21,7 +21,7 @@
Class Members - Enumerations

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -65,7 +65,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html index 7a25c642a..267de74f8 100644 --- a/doc/html/functions_eval.html +++ b/doc/html/functions_eval.html @@ -21,7 +21,7 @@
Class Members - Enumerator

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -107,7 +107,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_f.html b/doc/html/functions_f.html index 6011534a4..5611c01a7 100644 --- a/doc/html/functions_f.html +++ b/doc/html/functions_f.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -243,7 +243,7 @@

- f -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html index 03e5abc3c..3b7221486 100644 --- a/doc/html/functions_func.html +++ b/doc/html/functions_func.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -153,7 +153,7 @@

- a -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html index 61a5575e8..7edf0451b 100644 --- a/doc/html/functions_func_0x7e.html +++ b/doc/html/functions_func_0x7e.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -106,7 +106,7 @@

- ~ -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_b.html b/doc/html/functions_func_b.html index 99e73d684..9999981e9 100644 --- a/doc/html/functions_func_b.html +++ b/doc/html/functions_func_b.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -134,7 +134,7 @@

- b -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_c.html b/doc/html/functions_func_c.html index 0502006f4..2de23b8e1 100644 --- a/doc/html/functions_func_c.html +++ b/doc/html/functions_func_c.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -168,7 +168,7 @@

- c -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_d.html b/doc/html/functions_func_d.html index 20482a2b4..f2b6bd3eb 100644 --- a/doc/html/functions_func_d.html +++ b/doc/html/functions_func_d.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -113,7 +113,7 @@

- d -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_e.html b/doc/html/functions_func_e.html index 9b978be88..d66fd5f8f 100644 --- a/doc/html/functions_func_e.html +++ b/doc/html/functions_func_e.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -145,7 +145,7 @@

- e -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_f.html b/doc/html/functions_func_f.html index 8376befab..e50833536 100644 --- a/doc/html/functions_func_f.html +++ b/doc/html/functions_func_f.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -209,7 +209,7 @@

- f -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_g.html b/doc/html/functions_func_g.html index 82354d81e..233973be7 100644 --- a/doc/html/functions_func_g.html +++ b/doc/html/functions_func_g.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -152,7 +152,7 @@

- g -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_h.html b/doc/html/functions_func_h.html index 4f43f6924..afb71cc17 100644 --- a/doc/html/functions_func_h.html +++ b/doc/html/functions_func_h.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -109,7 +109,7 @@

- h -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_i.html b/doc/html/functions_func_i.html index fbae71daa..1ed19602c 100644 --- a/doc/html/functions_func_i.html +++ b/doc/html/functions_func_i.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -191,7 +191,7 @@

- i -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_l.html b/doc/html/functions_func_l.html index 0c916bc14..29b6642a6 100644 --- a/doc/html/functions_func_l.html +++ b/doc/html/functions_func_l.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -152,7 +152,7 @@

- l -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_m.html b/doc/html/functions_func_m.html index 27490849a..b9bab6b32 100644 --- a/doc/html/functions_func_m.html +++ b/doc/html/functions_func_m.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -117,7 +117,7 @@

- m -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_n.html b/doc/html/functions_func_n.html index 143ffe908..04532b363 100644 --- a/doc/html/functions_func_n.html +++ b/doc/html/functions_func_n.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -117,7 +117,7 @@

- n -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_o.html b/doc/html/functions_func_o.html index 5a713b075..fd9c6b1ff 100644 --- a/doc/html/functions_func_o.html +++ b/doc/html/functions_func_o.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -277,7 +277,7 @@

- o -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_p.html b/doc/html/functions_func_p.html index 82d3f8047..f30ff3c1a 100644 --- a/doc/html/functions_func_p.html +++ b/doc/html/functions_func_p.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -166,7 +166,7 @@

- p -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_r.html b/doc/html/functions_func_r.html index 8268c540d..dfdb2c3b8 100644 --- a/doc/html/functions_func_r.html +++ b/doc/html/functions_func_r.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -124,7 +124,7 @@

- r -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_s.html b/doc/html/functions_func_s.html index 563b34a93..880d3e106 100644 --- a/doc/html/functions_func_s.html +++ b/doc/html/functions_func_s.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -179,7 +179,7 @@

- s -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_t.html b/doc/html/functions_func_t.html index 2cf9f836a..56979400a 100644 --- a/doc/html/functions_func_t.html +++ b/doc/html/functions_func_t.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -114,7 +114,7 @@

- t -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_u.html b/doc/html/functions_func_u.html index 8c7255e41..dbbb5b57f 100644 --- a/doc/html/functions_func_u.html +++ b/doc/html/functions_func_u.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -119,7 +119,7 @@

- u -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_v.html b/doc/html/functions_func_v.html index 63fc74423..71513b744 100644 --- a/doc/html/functions_func_v.html +++ b/doc/html/functions_func_v.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -94,7 +94,7 @@

- v -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_w.html b/doc/html/functions_func_w.html index 42224fc7d..90f4ddb7c 100644 --- a/doc/html/functions_func_w.html +++ b/doc/html/functions_func_w.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -195,7 +195,7 @@

- w -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_x.html b/doc/html/functions_func_x.html index 103565aff..5bf78e8a5 100644 --- a/doc/html/functions_func_x.html +++ b/doc/html/functions_func_x.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -97,7 +97,7 @@

- x -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_y.html b/doc/html/functions_func_y.html index c37b4decf..e4ce3f453 100644 --- a/doc/html/functions_func_y.html +++ b/doc/html/functions_func_y.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -103,7 +103,7 @@

- y -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_g.html b/doc/html/functions_g.html index 9f568351f..d9f3be879 100644 --- a/doc/html/functions_g.html +++ b/doc/html/functions_g.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -164,7 +164,7 @@

- g -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_h.html b/doc/html/functions_h.html index 9ee346ef3..ec9bcdb14 100644 --- a/doc/html/functions_h.html +++ b/doc/html/functions_h.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -124,7 +124,7 @@

- h -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_i.html b/doc/html/functions_i.html index 85f11af6d..365fe872b 100644 --- a/doc/html/functions_i.html +++ b/doc/html/functions_i.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -290,7 +290,7 @@

- i -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_k.html b/doc/html/functions_k.html index 3c046d006..5d3f4156d 100644 --- a/doc/html/functions_k.html +++ b/doc/html/functions_k.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- k -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_l.html b/doc/html/functions_l.html index be6dfe433..a26b18388 100644 --- a/doc/html/functions_l.html +++ b/doc/html/functions_l.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -210,7 +210,7 @@

- l -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_m.html b/doc/html/functions_m.html index bd15f0045..bdf2e71fc 100644 --- a/doc/html/functions_m.html +++ b/doc/html/functions_m.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -226,7 +226,7 @@

- m -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_n.html b/doc/html/functions_n.html index 2164d333f..f128bb7e7 100644 --- a/doc/html/functions_n.html +++ b/doc/html/functions_n.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -152,7 +152,7 @@

- n -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_o.html b/doc/html/functions_o.html index 3d10a7a80..654ef6a72 100644 --- a/doc/html/functions_o.html +++ b/doc/html/functions_o.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -304,7 +304,7 @@

- o -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_p.html b/doc/html/functions_p.html index 854982d40..7812db7a6 100644 --- a/doc/html/functions_p.html +++ b/doc/html/functions_p.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -215,7 +215,7 @@

- p -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_q.html b/doc/html/functions_q.html index b00cd44bc..7fed0ad85 100644 --- a/doc/html/functions_q.html +++ b/doc/html/functions_q.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -97,7 +97,7 @@

- q -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_r.html b/doc/html/functions_r.html index 1d180566c..2758ab7b8 100644 --- a/doc/html/functions_r.html +++ b/doc/html/functions_r.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -157,7 +157,7 @@

- r -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html index 1d5bb1dd9..790c66290 100644 --- a/doc/html/functions_rela.html +++ b/doc/html/functions_rela.html @@ -21,7 +21,7 @@
Class Members - Related Functions

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_s.html b/doc/html/functions_s.html index 1665ed6f7..c5a6cb43e 100644 --- a/doc/html/functions_s.html +++ b/doc/html/functions_s.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -268,7 +268,7 @@

- s -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_t.html b/doc/html/functions_t.html index 29fd2342f..abb6bd0c4 100644 --- a/doc/html/functions_t.html +++ b/doc/html/functions_t.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -136,7 +136,7 @@

- t -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html index 48c9e2ab6..a53ef6660 100644 --- a/doc/html/functions_type.html +++ b/doc/html/functions_type.html @@ -21,7 +21,7 @@
Class Members - Typedefs

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -295,7 +295,7 @@

- v -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_u.html b/doc/html/functions_u.html index 68396d94b..00f792751 100644 --- a/doc/html/functions_u.html +++ b/doc/html/functions_u.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -152,7 +152,7 @@

- u -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_v.html b/doc/html/functions_v.html index 7d9e23b11..6843b8ecf 100644 --- a/doc/html/functions_v.html +++ b/doc/html/functions_v.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -115,7 +115,7 @@

- v -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index f0bb5aaaf..1b415c76d 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -107,7 +107,7 @@

- a -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_b.html b/doc/html/functions_vars_b.html index 267457f66..c605a78c5 100644 --- a/doc/html/functions_vars_b.html +++ b/doc/html/functions_vars_b.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -126,7 +126,7 @@

- b -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_c.html b/doc/html/functions_vars_c.html index ae2540aa0..d928a18cf 100644 --- a/doc/html/functions_vars_c.html +++ b/doc/html/functions_vars_c.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -172,7 +172,7 @@

- c -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_d.html b/doc/html/functions_vars_d.html index 7828d1a7c..d0a969315 100644 --- a/doc/html/functions_vars_d.html +++ b/doc/html/functions_vars_d.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- d -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_e.html b/doc/html/functions_vars_e.html index 0d45bfbf0..97a4bc207 100644 --- a/doc/html/functions_vars_e.html +++ b/doc/html/functions_vars_e.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -129,7 +129,7 @@

- e -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_f.html b/doc/html/functions_vars_f.html index df8f89295..ee493d18d 100644 --- a/doc/html/functions_vars_f.html +++ b/doc/html/functions_vars_f.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -120,7 +120,7 @@

- f -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_g.html b/doc/html/functions_vars_g.html index bcc4dc6b4..8a8069f6a 100644 --- a/doc/html/functions_vars_g.html +++ b/doc/html/functions_vars_g.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -98,7 +98,7 @@

- g -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_h.html b/doc/html/functions_vars_h.html index 5a66ba501..a84a73abe 100644 --- a/doc/html/functions_vars_h.html +++ b/doc/html/functions_vars_h.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -98,7 +98,7 @@

- h -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_i.html b/doc/html/functions_vars_i.html index 7357f5007..34eae6b71 100644 --- a/doc/html/functions_vars_i.html +++ b/doc/html/functions_vars_i.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -176,7 +176,7 @@

- i -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_k.html b/doc/html/functions_vars_k.html index e37df6ddb..4ecc8d1fe 100644 --- a/doc/html/functions_vars_k.html +++ b/doc/html/functions_vars_k.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- k -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_l.html b/doc/html/functions_vars_l.html index 03b7a7077..0252fe139 100644 --- a/doc/html/functions_vars_l.html +++ b/doc/html/functions_vars_l.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -142,7 +142,7 @@

- l -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_m.html b/doc/html/functions_vars_m.html index e20ef2383..aa812d079 100644 --- a/doc/html/functions_vars_m.html +++ b/doc/html/functions_vars_m.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -135,7 +135,7 @@

- m -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_n.html b/doc/html/functions_vars_n.html index 5fc1f0eb2..a169db547 100644 --- a/doc/html/functions_vars_n.html +++ b/doc/html/functions_vars_n.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -122,7 +122,7 @@

- n -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_o.html b/doc/html/functions_vars_o.html index 7a11a2831..f0f289fd4 100644 --- a/doc/html/functions_vars_o.html +++ b/doc/html/functions_vars_o.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -115,7 +115,7 @@

- o -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_p.html b/doc/html/functions_vars_p.html index abdd01d96..afaca9024 100644 --- a/doc/html/functions_vars_p.html +++ b/doc/html/functions_vars_p.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -128,7 +128,7 @@

- p -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_q.html b/doc/html/functions_vars_q.html index 6fc1603c7..d883cd72e 100644 --- a/doc/html/functions_vars_q.html +++ b/doc/html/functions_vars_q.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- q -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_r.html b/doc/html/functions_vars_r.html index cf9b03a16..6a614e992 100644 --- a/doc/html/functions_vars_r.html +++ b/doc/html/functions_vars_r.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -113,7 +113,7 @@

- r -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_s.html b/doc/html/functions_vars_s.html index dba7ff568..6cc93a928 100644 --- a/doc/html/functions_vars_s.html +++ b/doc/html/functions_vars_s.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -158,7 +158,7 @@

- s -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_t.html b/doc/html/functions_vars_t.html index 5868c1051..cdd8b3d9f 100644 --- a/doc/html/functions_vars_t.html +++ b/doc/html/functions_vars_t.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -107,7 +107,7 @@

- t -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_u.html b/doc/html/functions_vars_u.html index d86e99f8c..328c4692f 100644 --- a/doc/html/functions_vars_u.html +++ b/doc/html/functions_vars_u.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -122,7 +122,7 @@

- u -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_v.html b/doc/html/functions_vars_v.html index e5d28c4c6..6350d0c6d 100644 --- a/doc/html/functions_vars_v.html +++ b/doc/html/functions_vars_v.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- v -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_w.html b/doc/html/functions_vars_w.html index b60c66129..5884f6626 100644 --- a/doc/html/functions_vars_w.html +++ b/doc/html/functions_vars_w.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- w -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_x.html b/doc/html/functions_vars_x.html index 71b0b5939..f27b23c34 100644 --- a/doc/html/functions_vars_x.html +++ b/doc/html/functions_vars_x.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- x -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_z.html b/doc/html/functions_vars_z.html index d6426222c..c7e623b2a 100644 --- a/doc/html/functions_vars_z.html +++ b/doc/html/functions_vars_z.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- z -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_w.html b/doc/html/functions_w.html index 259e6428b..a2fee0c33 100644 --- a/doc/html/functions_w.html +++ b/doc/html/functions_w.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -207,7 +207,7 @@

- w -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_x.html b/doc/html/functions_x.html index a355fa934..ecabed18c 100644 --- a/doc/html/functions_x.html +++ b/doc/html/functions_x.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -103,7 +103,7 @@

- x -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_y.html b/doc/html/functions_y.html index 8b43d0954..61b555841 100644 --- a/doc/html/functions_y.html +++ b/doc/html/functions_y.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -106,7 +106,7 @@

- y -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/functions_z.html b/doc/html/functions_z.html index fb6181f70..c4b6d46a6 100644 --- a/doc/html/functions_z.html +++ b/doc/html/functions_z.html @@ -21,7 +21,7 @@
Class Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -97,7 +97,7 @@

- z -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/globals.html b/doc/html/globals.html index 88ca9e826..28b02fec7 100644 --- a/doc/html/globals.html +++ b/doc/html/globals.html @@ -21,7 +21,7 @@
File Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -338,7 +338,7 @@

- y -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html index a613850de..fce7cc6fe 100644 --- a/doc/html/globals_defs.html +++ b/doc/html/globals_defs.html @@ -21,7 +21,7 @@
File Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -286,7 +286,7 @@

- y -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html index 6d242c598..1a729683a 100644 --- a/doc/html/globals_func.html +++ b/doc/html/globals_func.html @@ -21,7 +21,7 @@
File Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -76,7 +76,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/globals_vars.html b/doc/html/globals_vars.html index f833c5b7e..1737f8d12 100644 --- a/doc/html/globals_vars.html +++ b/doc/html/globals_vars.html @@ -21,7 +21,7 @@
File Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html index 4c84b6961..3c6a7fb6e 100644 --- a/doc/html/graph_legend.html +++ b/doc/html/graph_legend.html @@ -21,7 +21,7 @@
Graph Legend

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -75,7 +75,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html index 5bd3fe390..81f29d747 100644 --- a/doc/html/hierarchy.html +++ b/doc/html/hierarchy.html @@ -21,7 +21,7 @@
Class Hierarchy

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -117,7 +117,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/index.html b/doc/html/index.html index e021d6f52..2b7185b96 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -21,7 +21,7 @@
RE/flex user guide

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -156,12 +156,12 @@ the essential features or qualities of something else." – Oxford Dictionary

What is RE/flex?

-

RE/flex is the regex-centric, fast lexical analyzer generator with full Unicode support, indent/nodent/dedent anchors, lazy quantifiers, word boundaries, and many other modern features. RE/flex also includes a fast regex engine written in C++ with options to generate finite state machine tables or direct code to match input more efficiently. RE/flex includes a smart input class to normalize input from files, streams, strings, and memory. RE/flex is compatible with Bison/Yacc and accepts Flex lexer specifications.

+

RE/flex is the regex-centric, fast lexical analyzer generator with full Unicode support, indentation anchors, lazy quantifiers, word boundaries, and many other modern features. RE/flex also includes a fast regex engine written in C++ with options to generate finite state machine tables or direct code to match input more efficiently. RE/flex includes a smart input class to normalize input from files, streams, strings, and memory. RE/flex is compatible with Bison/Yacc and accepts Flex lexer specifications.

Features:

  • includes a flexible library of regex classes that is extensible;
  • -
  • the scanner generator is compatible with Flex/Lex lexer specifications;
  • -
  • works with Bison, supports reentrant, C++, bison-bridge and bison-locations;
  • +
  • the scanner generator accepts Flex/Lex lexer specifications;
  • +
  • works with Bison, supports reentrant, C++, bridge and locations;
  • generates source code that is easy to understand;
  • generates scanners that are thread-safe by default;
  • generates search engines for optimal searching large files (new option -S);
  • @@ -204,7 +204,7 @@

    Both Lex and Flex are popular to develop tokenizers in which the user-defined actions emit or return a token when the corresponding pattern matches. These tokenizers are typically implemented to scan and tokenize the source code for a compiler or an interpreter of a programming language. The regular expression patterns in a tokenizer define the make-up of identifiers, constants, keywords, punctuation, and to skip over white space in the source code that is scanned.

    Consider for example the following patterns and associated actions defined in a lexer specification:

    %%
    /* PATTERN */ /* ACTION */
    "if" return KEYWORD_IF;
    "*" return OP_MUL;
    "=" return OP_ASSIGN;
    [a-zA-Z_][a-zA-Z0-9_]* return ASCII_IDENTIFIER;
    [0-9]+ return CONST_NUMBER;
    \"([^\\"]|\\")*\" return CONST_STRING;
    [ \t\r\n] /* no action: ignore all white space */
    %%

    When the tokenizer matches a pattern, the corresponding action is invoked. The example above returns tokens to the compiler's parser, which repeatedly invokes the tokenizer for more tokens until the tokenizer reaches the end of the input. The tokenizer returns zero (0) when the end of the input is reached.

    -

    Lex and Flex have remained relatively stable (inert) tools while the demand has increased for tokenizing Unicode texts encoded in common wide character formats such as UTF-8, UCS/UTF-16, and UTF-32. Flex/Lex still use 8-bit character sets for regex patterns. Regex pattern syntax in Flex/Lex is also limited. No lazy repetitions. No word boundary anchors. No indent and dedent matching.

    +

    Lex and Flex have remained relatively stable (inert) tools while the demand has increased for tokenizing Unicode texts encoded in common wide character formats such as UTF-8, UCS/UTF-16, and UTF-32. Flex/Lex still use 8-bit character sets for regex patterns. Regex pattern syntax in Flex/Lex is also limited. No lazy repetitions. No word boundary anchors. No indentation matching with indent or dedent anchors in patterns.

    It is possible, but not trivial to implement scanners with Flex/Lex to tokenize the source code of more modern programming languages with Unicode-based lexical structures, such as Java, C#, and C++11.

    A possible approach is to use UTF-8 in patterns and reformat the input to UTF-8 for matching. However, the UTF-8 patterns for common Unicode character classes are unrecognizable by humans and are prone to errors when written by hand. The UTF-8 pattern to match a Unicode letter \p{L} is hundreds of lines long!

    Furthermore, the regular expression syntax in Flex/Lex is limited to meet POSIX mode matching constraints. Scanners should use POSIX mode matching, as we will explain below. To make things even more interesting, scanners should avoid the "greedy trap" when matching input.

    @@ -215,7 +215,7 @@

    We may claim our intricate pattern trophies as high achievements to the project team, but our team will quickly point out that a regex <!−−.*?−−> suffices to match HTML comments with the lazy repetition X*? construct, also known as a non-greedy repeat. The ? is a lazy quantifier that modifies the behavior of the X*? repeat to match only X repeately if the rest of the pattern does not match. Therefore, the regex <!−−.*?−−> matches HTML comments and nothing more.

    But Flex/Lex does not permit us to be lazy!

    Not surprising, even the Flex manual shows ad-hoc code rather than a pattern to scan over C/C++ source code input to match multiline comments that start with a /* and end with the first occurrence of a */. The Flex manual recommends:

    -
    "/*" { /* skip multiline comments */
    int c;
    while ((c = yyinput()) != 0)
    {
    if (c == '\n')
    ++mylineno;
    else if (c == '*')
    {
    if ((c = yyinput()) == '/')
    break;
    unput(c);
    }
    }
    }

    Another argument to use this code with Flex is that the internal Flex buffer is limited to 16KB. By contrast, RE/flex buffers are dynamically resized and will never run out to accept long matches.

    +
    "/*" { /* skip multiline comments */
    int c;
    while ((c = yyinput()) != 0)
    {
    if (c == '\n')
    ++mylineno;
    else if (c == '*')
    {
    if ((c = yyinput()) == '/')
    break;
    unput(c);
    }
    }
    }

    Another argument to use this code with Flex is that the internal Flex buffer is limited to 16KB. By contrast, RE/flex buffers are dynamically resized and will never run out of buffer space to accept long matches.

    Workarounds such as these are not necessary with RE/flex. The RE/flex scanners use regex libraries with expressive pattern syntax. We can use lazy repetition to write a regex pattern for multiline comments as follows:

    "/*"(.|\n)*?"*/" /* no action: ignore multiline comments */

    Most regex libraries support syntaxes and features that we have come to rely on for pattern matching. A regex with lazy quantifiers can be much easier to read and comprehend compared to a greedy variant. Most regex libraries that support lazy quantifiers run in Perl mode, using backtracking over the input. Scanners use POSIX mode matching, meaning that the leftmost longest match is found. The difference is important as we saw earlier and even more so when we consider the problems with Perl mode matching when specifying patterns to tokenize input, as we will explain next.

    Consider the lexer specification example shown earlier. Suppose the input text to tokenize is iflag = 1. In POSIX mode we return ASCII_IDENTIFIER for the name iflag, OP_ASSIGN for =, and NUMBER for 1. In Perl mode, we find that iflag matches if and the rest of the name is not consumed, which gives KEYWORD_IF for if, ASCII_IDENTIFIER for lag, OP_ASSIGN for =, and a NUMBER for 1. Perl mode matching greedely returns leftmost matches.

    @@ -591,6 +591,8 @@

    -i, −−case-insensitive

    This option ignores case in patterns. Patterns match lower and upper case letters in the ASCII range only.

    -I, −−interactive, −−always-interactive

    This option generates an interactive scanner and permits console input by sacrificing speed. By contrast, the default buffered input strategy is more efficient.

    +

    −−indent and −−noindent

    +

    This option enables or disables support for indentation matching with anchors \i, \j, and \k. Indentation matching is enabled by default. Matching speed may be improved by disabling indentation matching, but should only be disabled when none of the indentation anchors is used in any of the patterns.

    -m reflex, −−matcher=reflex

    This option generates a scanner that uses the RE/flex reflex::Matcher class with a POSIX matcher engine. This is the default matcher for scanning. This option is best for Flex compatibility. This matcher supports lazy quantifiers, Unicode mode, Anchors and boundaries, Indent/nodent/dedent matching, and supports FSM output for visualization with Graphviz.

    -m boost, −−matcher=boost

    @@ -647,7 +649,7 @@

    -L, −−noline

    -P NAME, −−prefix=NAME

    This option specifies NAME as a prefix for the generated yyFlexLexer class to replace the default yy prefix. Also renames the prefix of yylex(). Generates lex.NAME.cpp file instead of lex.yy.cpp, and generates lex.NAME.h with option −−header-file.

    −−nostdinit

    -

    This option initializes input to std::cin instead of using stdin. Automatic UTF decoding is not supported. Use stdin for automatic UTF BOM detection and UTF decoding.

    +

    This option initializes input to std::cin instead of using stdin. Automatic UTF decoding is not supported. Use stdin for automatic UTF BOM detection and UTF decoding of standard input streams, not std::cin.

    −−bison

    This option generates a scanner that works with Bison parsers, by defining global (i.e. non-thread-safe and non-reentrant) "yy" variables and functions. See Interfacing with Bison/Yacc for more details. Use option −−noyywrap to remove the dependency on the global yywrap() function. Use option −−bison-locations to support the Bison %locations feature.

    −−bison-bridge

    @@ -665,7 +667,7 @@

    −−bison-locations

    -R, −−reentrant

    This option generates additional Flex-compatible yylex() reentrant scanner functions. RE/flex scanners are always reentrant, assuming that %class variables are used instead of the user declaring global variables. This is a Flex-compatibility option and should only be used with options −−flex and −−bison. With this option enabled, most Flex functions take a yyscan_t scanner as an extra last argument. See Reentrant scanners and also Interfacing with Bison/Yacc .

    −−yywrap and −−noyywrap

    -

    Option −−yywrap generates a scanner that calls the global int yywrap() function when EOF is reached. Only applicable when −−flex is used for compatibility and when −−flex and −−bison are used together. Use −−noyywrap to disable the dependence on this global function. This option has no effect for C++ lexer classes, which have a virtual int wrap() (or yywrap() with option −−flex) method that may be overridden.

    +

    Option −−yywrap generates a scanner that calls the global int yywrap() function when EOF is reached. This option is only applicable when −−flex is used for compatibility and when −−flex and −−bison are used together. Wrapping is enabled by default. Use −−noyywrap to disable the dependence on this global function. This option has no effect for C++ lexer classes, which have a virtual int wrap() (or yywrap() with option −−flex) method that may be overridden.

    −−exception=VALUE

    This option defines the exception to be thrown by the generated scanner's default rule when no rule matches the input. This option generates a default rule with action throw VALUE and replaces the standard default rule that echoes all unmatched input text when no rule matches. This option has no effect when option -S (or −−find) is specified. See also option -s (or −−nodefault). Care should be taken to advance the input explicitly in the exception handler, for example by calling lexer.matcher().winput() when lexer.size() is zero.

    −−token-type=NAME

    @@ -3166,7 +3168,7 @@

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/index_8md.html b/doc/html/index_8md.html index 3710b973b..0166f1199 100644 --- a/doc/html/index_8md.html +++ b/doc/html/index_8md.html @@ -21,7 +21,7 @@
index.md File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -52,7 +52,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/inherits.html b/doc/html/inherits.html index 506c19f36..a6457623f 100644 --- a/doc/html/inherits.html +++ b/doc/html/inherits.html @@ -21,7 +21,7 @@
Class Hierarchy

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -240,7 +240,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/input_8h.html b/doc/html/input_8h.html index 4e7d407b8..42055edde 100644 --- a/doc/html/input_8h.html +++ b/doc/html/input_8h.html @@ -21,7 +21,7 @@
input.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -127,7 +127,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/matcher_8h.html b/doc/html/matcher_8h.html index 5c5b7b8a6..4f306b2dd 100644 --- a/doc/html/matcher_8h.html +++ b/doc/html/matcher_8h.html @@ -21,7 +21,7 @@
matcher.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -104,7 +104,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html index 5fff57491..9d66aebda 100644 --- a/doc/html/namespacemembers.html +++ b/doc/html/namespacemembers.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -209,7 +209,7 @@

- w -

+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html index e2bf54041..37450ac1c 100644 --- a/doc/html/namespacemembers_func.html +++ b/doc/html/namespacemembers_func.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -98,7 +98,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_type.html b/doc/html/namespacemembers_type.html index 6c074d7bc..bf3046b4e 100644 --- a/doc/html/namespacemembers_type.html +++ b/doc/html/namespacemembers_type.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html index 489974217..a6a42a04d 100644 --- a/doc/html/namespacemembers_vars.html +++ b/doc/html/namespacemembers_vars.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -88,7 +88,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex.html b/doc/html/namespacereflex.html index 05e71088f..96a89c68d 100644 --- a/doc/html/namespacereflex.html +++ b/doc/html/namespacereflex.html @@ -21,7 +21,7 @@
reflex Namespace Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -934,7 +934,7 @@

Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1_posix.html b/doc/html/namespacereflex_1_1_posix.html index f13df283f..6f0950132 100644 --- a/doc/html/namespacereflex_1_1_posix.html +++ b/doc/html/namespacereflex_1_1_posix.html @@ -21,7 +21,7 @@
reflex::Posix Namespace Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -87,7 +87,7 @@

Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1_unicode.html b/doc/html/namespacereflex_1_1_unicode.html index 9b3577c2e..126a1fae4 100644 --- a/doc/html/namespacereflex_1_1_unicode.html +++ b/doc/html/namespacereflex_1_1_unicode.html @@ -21,7 +21,7 @@
reflex::Unicode Namespace Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -87,7 +87,7 @@

Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1convert__flag.html b/doc/html/namespacereflex_1_1convert__flag.html index 29eb724fc..35ec933b9 100644 --- a/doc/html/namespacereflex_1_1convert__flag.html +++ b/doc/html/namespacereflex_1_1convert__flag.html @@ -21,7 +21,7 @@
reflex::convert_flag Namespace Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -233,7 +233,7 @@

Variable Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html index 6dc958ac4..75aa1ae0a 100644 --- a/doc/html/namespaces.html +++ b/doc/html/namespaces.html @@ -21,7 +21,7 @@
Namespace List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -60,7 +60,7 @@
+Converted on Sat Dec 28 2019 16:37:56 by Doxygen 1.8.11
diff --git a/doc/html/pattern_8h.html b/doc/html/pattern_8h.html index 0cb9845c4..1c7d83ecb 100644 --- a/doc/html/pattern_8h.html +++ b/doc/html/pattern_8h.html @@ -21,7 +21,7 @@
pattern.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -130,7 +130,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/posix_8h.html b/doc/html/posix_8h.html index 28dd6f3fa..fee54d741 100644 --- a/doc/html/posix_8h.html +++ b/doc/html/posix_8h.html @@ -21,7 +21,7 @@
posix.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -104,7 +104,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/ranges_8h.html b/doc/html/ranges_8h.html index b3da52fc1..fcf65eb99 100644 --- a/doc/html/ranges_8h.html +++ b/doc/html/ranges_8h.html @@ -21,7 +21,7 @@
ranges.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -104,7 +104,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/reflex_8cpp.html b/doc/html/reflex_8cpp.html index 466dad5e5..f9125807a 100644 --- a/doc/html/reflex_8cpp.html +++ b/doc/html/reflex_8cpp.html @@ -21,7 +21,7 @@
reflex.cpp File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -399,7 +399,7 @@

Variable Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/reflex_8h.html b/doc/html/reflex_8h.html index baab3d005..9098fff90 100644 --- a/doc/html/reflex_8h.html +++ b/doc/html/reflex_8h.html @@ -21,7 +21,7 @@
reflex.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -118,7 +118,7 @@ Macros

#define PLATFORM   ""   -#define REFLEX_VERSION   "1.5.5" +#define REFLEX_VERSION   "1.5.6"  

Detailed Description

@@ -145,7 +145,7 @@
- +
#define REFLEX_VERSION   "1.5.5"#define REFLEX_VERSION   "1.5.6"
@@ -155,7 +155,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/setop_8h.html b/doc/html/setop_8h.html index e2de1fcfe..2ddca30f4 100644 --- a/doc/html/setop_8h.html +++ b/doc/html/setop_8h.html @@ -21,7 +21,7 @@
setop.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -134,7 +134,7 @@

Example

std::set<int> s1;
s1.insert(1);
assert(reflex::is_in_set(1, s1) == true);
std::set<int> s2;
s2.insert(1);
s2.insert(2);
assert(reflex::is_disjoint(s1, s2) == false);
assert(reflex::is_subset(s1, s2) == true);
reflex::lazy_union< std::set<int>,std::set<int> > U(s1, s2);
for (reflex::lazy_union< std::set<int>,std::set<int> >::iterator i = U.begin(); i != U.end(); ++i)
std::cout << *i << std::endl; // prints 1 and 2
reflex::lazy_intersection< std::set<int>,std::set<int> > I(s1, s2);
for (reflex::lazy_intersection< std::set<int>,std::set<int> >::iterator i = I.begin(); i != I.end(); ++i)
std::cout << *i << std::endl; // prints 1
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/stdmatcher_8h.html b/doc/html/stdmatcher_8h.html index d2948bf79..158d5915d 100644 --- a/doc/html/stdmatcher_8h.html +++ b/doc/html/stdmatcher_8h.html @@ -21,7 +21,7 @@
stdmatcher.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -102,7 +102,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_code-members.html b/doc/html/struct_reflex_1_1_code-members.html index 688033e9d..50f0fe814 100644 --- a/doc/html/struct_reflex_1_1_code-members.html +++ b/doc/html/struct_reflex_1_1_code-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_code.html b/doc/html/struct_reflex_1_1_code.html index 0ee437200..1eca93040 100644 --- a/doc/html/struct_reflex_1_1_code.html +++ b/doc/html/struct_reflex_1_1_code.html @@ -21,7 +21,7 @@
Reflex::Code Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -173,7 +173,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_library-members.html b/doc/html/struct_reflex_1_1_library-members.html index 75c2fb5d7..a8f2daeb0 100644 --- a/doc/html/struct_reflex_1_1_library-members.html +++ b/doc/html/struct_reflex_1_1_library-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -65,7 +65,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_library.html b/doc/html/struct_reflex_1_1_library.html index e86e133ca..d46a5031d 100644 --- a/doc/html/struct_reflex_1_1_library.html +++ b/doc/html/struct_reflex_1_1_library.html @@ -21,7 +21,7 @@
Reflex::Library Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -160,7 +160,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_rule-members.html b/doc/html/struct_reflex_1_1_rule-members.html index b4f8dad7b..02e1cd335 100644 --- a/doc/html/struct_reflex_1_1_rule-members.html +++ b/doc/html/struct_reflex_1_1_rule-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_rule.html b/doc/html/struct_reflex_1_1_rule.html index 3333873fa..89a22b4e6 100644 --- a/doc/html/struct_reflex_1_1_rule.html +++ b/doc/html/struct_reflex_1_1_rule.html @@ -21,7 +21,7 @@
Reflex::Rule Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -154,7 +154,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html index 40e8087f5..d939315e8 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -70,7 +70,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html index 44cb92f16..9fc6b8f9c 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Const Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -325,7 +325,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html index 848966776..33194525a 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html index 9f60e67d7..fd4b8f7fd 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Option Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -156,7 +156,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_bits_1_1_bitref-members.html b/doc/html/structreflex_1_1_bits_1_1_bitref-members.html index 702c010ec..ab0835409 100644 --- a/doc/html/structreflex_1_1_bits_1_1_bitref-members.html +++ b/doc/html/structreflex_1_1_bits_1_1_bitref-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -68,7 +68,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_bits_1_1_bitref.html b/doc/html/structreflex_1_1_bits_1_1_bitref.html index 92a33c818..623afb740 100644 --- a/doc/html/structreflex_1_1_bits_1_1_bitref.html +++ b/doc/html/structreflex_1_1_bits_1_1_bitref.html @@ -21,7 +21,7 @@
reflex::Bits::Bitref Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -329,7 +329,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_input_1_1file__encoding-members.html b/doc/html/structreflex_1_1_input_1_1file__encoding-members.html index 3140b3474..aa8bbd1a1 100644 --- a/doc/html/structreflex_1_1_input_1_1file__encoding-members.html +++ b/doc/html/structreflex_1_1_input_1_1file__encoding-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -81,7 +81,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_input_1_1file__encoding.html b/doc/html/structreflex_1_1_input_1_1file__encoding.html index 937dd32cd..51f421f49 100644 --- a/doc/html/structreflex_1_1_input_1_1file__encoding.html +++ b/doc/html/structreflex_1_1_input_1_1file__encoding.html @@ -21,7 +21,7 @@
reflex::Input::file_encoding Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -600,7 +600,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html b/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html index 361fe3ada..37290fa8d 100644 --- a/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html +++ b/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html b/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html index 86366df2e..20c82bf58 100644 --- a/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html +++ b/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html @@ -21,7 +21,7 @@
reflex::Matcher::FSM Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -147,7 +147,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_const-members.html b/doc/html/structreflex_1_1_pattern_1_1_const-members.html index be17f57d4..7aabb8e79 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_const-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_const-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -62,7 +62,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_const.html b/doc/html/structreflex_1_1_pattern_1_1_const.html index 37529ee86..9c2b0a3a5 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_const.html +++ b/doc/html/structreflex_1_1_pattern_1_1_const.html @@ -21,7 +21,7 @@
reflex::Pattern::Const Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -125,7 +125,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_option-members.html b/doc/html/structreflex_1_1_pattern_1_1_option-members.html index cf6d4551e..56ca7fcb5 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_option-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_option-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -76,7 +76,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_option.html b/doc/html/structreflex_1_1_pattern_1_1_option.html index b5e8a8777..2f56d9e82 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_option.html +++ b/doc/html/structreflex_1_1_pattern_1_1_option.html @@ -21,7 +21,7 @@
reflex::Pattern::Option Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -367,7 +367,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_position-members.html b/doc/html/structreflex_1_1_pattern_1_1_position-members.html index e772158de..a4a52f524 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_position-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_position-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -87,7 +87,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_position.html b/doc/html/structreflex_1_1_pattern_1_1_position.html index ce4347a4b..f8b51f298 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_position.html +++ b/doc/html/structreflex_1_1_pattern_1_1_position.html @@ -21,7 +21,7 @@
reflex::Pattern::Position Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -735,7 +735,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_state-members.html b/doc/html/structreflex_1_1_pattern_1_1_state-members.html index 26c0554c2..9b762542c 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_state-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_state-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -71,7 +71,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_state.html b/doc/html/structreflex_1_1_pattern_1_1_state.html index b10f17cf9..702e2d7fb 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_state.html +++ b/doc/html/structreflex_1_1_pattern_1_1_state.html @@ -21,7 +21,7 @@
reflex::Pattern::State Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -292,7 +292,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html index 2d9b377b1..d44391dbe 100644 --- a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html +++ b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -61,7 +61,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html index 789fe7792..2330af07e 100644 --- a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html +++ b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html @@ -21,7 +21,7 @@
reflex::Posix::Tables::lt Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -106,7 +106,7 @@

Member Function Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op-members.html b/doc/html/structreflex_1_1_type_op-members.html index 352c8ed06..abb54ee51 100644 --- a/doc/html/structreflex_1_1_type_op-members.html +++ b/doc/html/structreflex_1_1_type_op-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op.html b/doc/html/structreflex_1_1_type_op.html index 3ee326561..9614c1a05 100644 --- a/doc/html/structreflex_1_1_type_op.html +++ b/doc/html/structreflex_1_1_type_op.html @@ -21,7 +21,7 @@
reflex::TypeOp< T > Struct Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -141,7 +141,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html index c59a55842..41b1db749 100644 --- a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html +++ b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html index eab17acd7..d441bd2bd 100644 --- a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html +++ b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html @@ -21,7 +21,7 @@
reflex::TypeOp< const T > Struct Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -126,7 +126,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection-members.html b/doc/html/structreflex_1_1lazy__intersection-members.html index cc7587ad4..0b273c2e5 100644 --- a/doc/html/structreflex_1_1lazy__intersection-members.html +++ b/doc/html/structreflex_1_1lazy__intersection-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection.html b/doc/html/structreflex_1_1lazy__intersection.html index 82e79fd15..ab7e44712 100644 --- a/doc/html/structreflex_1_1lazy__intersection.html +++ b/doc/html/structreflex_1_1lazy__intersection.html @@ -21,7 +21,7 @@
reflex::lazy_intersection< S1, S2 > Struct Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -238,7 +238,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html b/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html index 2850269f8..a9b4a4bd3 100644 --- a/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html +++ b/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html b/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html index 7d6921979..0d89d51d2 100644 --- a/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html +++ b/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html @@ -21,7 +21,7 @@
reflex::lazy_intersection< S1, S2 >::iterator Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -434,7 +434,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union-members.html b/doc/html/structreflex_1_1lazy__union-members.html index ea47cf064..a103cd582 100644 --- a/doc/html/structreflex_1_1lazy__union-members.html +++ b/doc/html/structreflex_1_1lazy__union-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union.html b/doc/html/structreflex_1_1lazy__union.html index 7391cd963..ed4ed876e 100644 --- a/doc/html/structreflex_1_1lazy__union.html +++ b/doc/html/structreflex_1_1lazy__union.html @@ -21,7 +21,7 @@
reflex::lazy_union< S1, S2 > Struct Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -238,7 +238,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html b/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html index 5145d2d0f..a120a857a 100644 --- a/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html +++ b/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -75,7 +75,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union_1_1iterator.html b/doc/html/structreflex_1_1lazy__union_1_1iterator.html index 8de1b1eb8..b97c1bda6 100644 --- a/doc/html/structreflex_1_1lazy__union_1_1iterator.html +++ b/doc/html/structreflex_1_1lazy__union_1_1iterator.html @@ -21,7 +21,7 @@
reflex::lazy_union< S1, S2 >::iterator Struct Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -450,7 +450,7 @@

Member Data Documentation

+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1range__compare-members.html b/doc/html/structreflex_1_1range__compare-members.html index bef89a2f2..3cd320567 100644 --- a/doc/html/structreflex_1_1range__compare-members.html +++ b/doc/html/structreflex_1_1range__compare-members.html @@ -21,7 +21,7 @@
Member List

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -61,7 +61,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1range__compare.html b/doc/html/structreflex_1_1range__compare.html index 368538357..fad071c62 100644 --- a/doc/html/structreflex_1_1range__compare.html +++ b/doc/html/structreflex_1_1range__compare.html @@ -21,7 +21,7 @@
reflex::range_compare< T > Struct Template Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -127,7 +127,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/timer_8h.html b/doc/html/timer_8h.html index 43d8083f7..48fc31b1b 100644 --- a/doc/html/timer_8h.html +++ b/doc/html/timer_8h.html @@ -21,7 +21,7 @@
timer.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -96,7 +96,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/traits_8h.html b/doc/html/traits_8h.html index de48c730d..3ece849a9 100644 --- a/doc/html/traits_8h.html +++ b/doc/html/traits_8h.html @@ -21,7 +21,7 @@
traits.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -96,7 +96,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/unicode_8h.html b/doc/html/unicode_8h.html index 558dd053d..833832239 100644 --- a/doc/html/unicode_8h.html +++ b/doc/html/unicode_8h.html @@ -21,7 +21,7 @@
unicode.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -96,7 +96,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/html/utf8_8h.html b/doc/html/utf8_8h.html index fc6e2cbd5..461519ca8 100644 --- a/doc/html/utf8_8h.html +++ b/doc/html/utf8_8h.html @@ -21,7 +21,7 @@
utf8.h File Reference

-
updated Mon Dec 23 2019 by Robert van Engelen
+
updated Sat Dec 28 2019 by Robert van Engelen
  @@ -155,7 +155,7 @@
+Converted on Sat Dec 28 2019 16:37:50 by Doxygen 1.8.11
diff --git a/doc/index.md b/doc/index.md index 23c9d5e4b..94152f3b8 100644 --- a/doc/index.md +++ b/doc/index.md @@ -16,18 +16,18 @@ What is RE/flex? {#intro} ================ RE/flex is the regex-centric, fast lexical analyzer generator with full Unicode -support, indent/nodent/dedent anchors, lazy quantifiers, word boundaries, and -many other modern features. RE/flex also includes a fast regex engine written -in C++ with options to generate finite state machine tables or direct code to -match input more efficiently. RE/flex includes a smart input class to -normalize input from files, streams, strings, and memory. RE/flex is -compatible with Bison/Yacc and accepts Flex lexer specifications. +support, indentation anchors, lazy quantifiers, word boundaries, and many other +modern features. RE/flex also includes a fast regex engine written in C++ with +options to generate finite state machine tables or direct code to match input +more efficiently. RE/flex includes a smart input class to normalize input from +files, streams, strings, and memory. RE/flex is compatible with Bison/Yacc and +accepts Flex lexer specifications. Features: - includes a flexible library of regex classes that is extensible; -- the scanner generator is compatible with Flex/Lex lexer specifications; -- works with Bison, supports reentrant, C++, bison-bridge and bison-locations; +- the scanner generator accepts Flex/Lex lexer specifications; +- works with Bison, supports reentrant, C++, bridge and locations; - generates source code that is easy to understand; - generates scanners that are thread-safe by default; - generates search engines for optimal searching large files (new option `-S`); @@ -153,7 +153,8 @@ Lex and Flex have remained relatively stable (inert) tools while the demand has increased for tokenizing Unicode texts encoded in common wide character formats such as UTF-8, UCS/UTF-16, and UTF-32. Flex/Lex still use 8-bit character sets for regex patterns. Regex pattern syntax in Flex/Lex is also limited. No lazy -repetitions. No word boundary anchors. No indent and dedent matching. +repetitions. No word boundary anchors. No indentation matching with indent or +dedent anchors in patterns. It is possible, but not trivial to implement scanners with Flex/Lex to tokenize the source code of more modern programming languages with Unicode-based lexical @@ -225,7 +226,7 @@ scan over C/C++ source code input to match multiline comments that start with a Another argument to use this code with Flex is that the internal Flex buffer is limited to 16KB. By contrast, RE/flex buffers are dynamically resized and will -never run out to accept long matches. +never run out of buffer space to accept long matches. Workarounds such as these are not necessary with RE/flex. The RE/flex scanners use regex libraries with expressive pattern syntax. We can use lazy repetition @@ -1222,6 +1223,13 @@ This option generates an interactive scanner and permits console input by sacrificing speed. By contrast, the default buffered input strategy is more efficient. +#### `−−indent` and `−−noindent` + +This option enables or disables support for indentation matching with anchors +`\i`, `\j`, and `\k`. Indentation matching is enabled by default. Matching +speed may be improved by disabling indentation matching, but should only be +disabled when none of the indentation anchors is used in any of the patterns. + #### `-m reflex`, `−−matcher=reflex` This option generates a scanner that uses the RE/flex `reflex::Matcher` class @@ -1428,7 +1436,7 @@ generates `lex.NAME.h` with option `−−header-file`. This option initializes input to `std::cin` instead of using `stdin`. Automatic UTF decoding is not supported. Use `stdin` for automatic UTF BOM -detection and UTF decoding. +detection and UTF decoding of standard input streams, not `std::cin`. #### `−−bison` @@ -1491,11 +1499,12 @@ and also \ref reflex-bison. #### `−−yywrap` and `−−noyywrap` Option `−−yywrap` generates a scanner that calls the global `int yywrap()` -function when EOF is reached. Only applicable when `−−flex` is used for -compatibility and when `−−flex` and `−−bison` are used together. Use -`−−noyywrap` to disable the dependence on this global function. This option -has no effect for C++ lexer classes, which have a virtual `int wrap()` (or -`yywrap()` with option `−−flex`) method that may be overridden. +function when EOF is reached. This option is only applicable when `−−flex` is +used for compatibility and when `−−flex` and `−−bison` are used together. +Wrapping is enabled by default. Use `−−noyywrap` to disable the dependence on +this global function. This option has no effect for C++ lexer classes, which +have a virtual `int wrap()` (or `yywrap()` with option `−−flex`) method that +may be overridden. #### `−−exception=VALUE` diff --git a/doc/man/reflex.1 b/doc/man/reflex.1 index c826bb829..12506f8bd 100644 --- a/doc/man/reflex.1 +++ b/doc/man/reflex.1 @@ -1,4 +1,4 @@ -.TH REFLEX "1" "December 23, 2019" "reflex 1.5.5" "User Commands" +.TH REFLEX "1" "December 28, 2019" "reflex 1.5.6" "User Commands" .SH NAME reflex \- the regex\-centric fast and flexible lexical analyzer generator .SH SYNOPSIS diff --git a/include/reflex/matcher.h b/include/reflex/matcher.h index f848addcf..9eb01e5eb 100644 --- a/include/reflex/matcher.h +++ b/include/reflex/matcher.h @@ -275,6 +275,7 @@ class Matcher : public PatternMatcher { { cur_ = txt_ - buf_ + pos; } +#if !defined(WITH_NO_INDENT) /// FSM code META DED. inline bool FSM_META_DED() { @@ -293,6 +294,7 @@ class Matcher : public PatternMatcher { ded_ = 0; return mrk; } +#endif /// FSM code META EOB. inline bool FSM_META_EOB(int c1) { @@ -355,11 +357,431 @@ class Matcher : public PatternMatcher { /// Returns true if input matched the pattern using method Const::SCAN, Const::FIND, Const::SPLIT, or Const::MATCH. virtual size_t match(Method method) ///< Const::SCAN, Const::FIND, Const::SPLIT, or Const::MATCH /// @returns nonzero if input matched the pattern - ; + { + DBGLOG("BEGIN Matcher::match()"); + reset_text(); + len_ = 0; // split text length starts with 0 +scan: + txt_ = buf_ + cur_; +#if !defined(WITH_NO_INDENT) + mrk_ = false; + ind_ = pos_; // ind scans input in buf[] in newline() up to pos - 1 + col_ = 0; // count columns for indent matching + if (ded_ == 0 && hit_end() && tab_.empty()) + { + if (method == Const::SPLIT && !at_bob() && cap_ != 0 && cap_ != Const::EMPTY) + { + cap_ = Const::EMPTY; + DBGLOG("Split empty at end, cap = %zu", cap_); + DBGLOG("END Matcher::match()"); + return cap_; + } + cap_ = 0; + DBGLOG("END Matcher::match()"); + return 0; + } +#endif +find: + int c1 = got_; + bool bol = at_bol(); + if (pat_->fsm_) + fsm_.c1 = c1; +#if !defined(WITH_NO_INDENT) +redo: +#endif + lap_.resize(0); + cap_ = 0; + bool nul = method == Const::MATCH; + if (pat_->fsm_) + { + DBGLOG("FSM code %p", pat_->fsm_); + fsm_.bol = bol; + fsm_.nul = nul; + pat_->fsm_(*this); + nul = fsm_.nul; + c1 = fsm_.c1; + } + else if (pat_->opc_) + { + const Pattern::Opcode *pc = pat_->opc_; + while (true) + { + Pattern::Opcode opcode = *pc; + DBGLOG("Fetch: code[%zu] = 0x%08X", pc - pat_->opc_, opcode); + Pattern::Index index; + if (Pattern::is_opcode_halt(opcode)) + break; + if (Pattern::is_opcode_meta(opcode)) + { + switch (opcode >> 16) + { + case 0xFF00: // TAKE + cap_ = Pattern::index_of(opcode); + DBGLOG("Take: cap = %zu", cap_); + cur_ = pos_; + ++pc; + continue; + case 0xFF7E: // TAIL + index = Pattern::index_of(opcode); + DBGLOG("Tail: %u", index); + if (lap_.size() > index && lap_[index] >= 0) + cur_ = txt_ - buf_ + static_cast(lap_[index]); // mind the (new) gap + ++pc; + continue; + case 0xFF7F: // HEAD + index = Pattern::index_of(opcode); + DBGLOG("Head: lookahead[%u] = %zu", index, pos_ - (txt_ - buf_)); + if (lap_.size() <= index) + lap_.resize(index + 1, -1); + lap_[index] = static_cast(pos_ - (txt_ - buf_)); // mind the gap + ++pc; + continue; +#if !defined(WITH_NO_INDENT) + case 0xFF00 | Pattern::META_DED: + if (ded_ > 0) + { + index = Pattern::index_of(opcode); + DBGLOG("Dedent ded = %zu", ded_); // unconditional dedent matching \j + nul = true; + pc = pat_->opc_ + index; + continue; + } +#endif + } + if (c1 == EOF) + break; + int c0 = c1; + c1 = get(); + DBGLOG("Get: c1 = %d", c1); + Pattern::Index back = Pattern::Const::IMAX; // where to jump back to (backtrack on meta transitions) + Pattern::Index la; + index = Pattern::Const::IMAX; + while (true) + { + if (Pattern::is_opcode_meta(opcode) && (index == Pattern::Const::IMAX || back == Pattern::Const::IMAX)) + { + // we no longer have to pass through all if index and back are set + switch (opcode >> 16) + { + case 0xFF00: // TAKE + cap_ = Pattern::index_of(opcode); + DBGLOG("Take: cap = %zu", cap_); + cur_ = pos_; + if (c1 != EOF) + --cur_; // must unget one char + opcode = *++pc; + continue; + case 0xFF7E: // TAIL + la = Pattern::index_of(opcode); + DBGLOG("Tail: %u", la); + if (lap_.size() > la && lap_[la] >= 0) + cur_ = txt_ - buf_ + static_cast(lap_[la]); // mind the (new) gap + opcode = *++pc; + continue; + case 0xFF7F: // HEAD + opcode = *++pc; + continue; +#if !defined(WITH_NO_INDENT) + case 0xFF00 | Pattern::META_DED: + DBGLOG("DED? %d", c1); + if (index == Pattern::Const::IMAX && back == Pattern::Const::IMAX && bol && dedent()) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_IND: + DBGLOG("IND? %d", c1); + if (index == Pattern::Const::IMAX && back == Pattern::Const::IMAX && bol && indent()) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_UND: + DBGLOG("UND"); + if (mrk_) + index = Pattern::index_of(opcode); + mrk_ = false; + ded_ = 0; + opcode = *++pc; + continue; +#endif + case 0xFF00 | Pattern::META_EOB: + DBGLOG("EOB? %d", c1); + if (index == Pattern::Const::IMAX && c1 == EOF) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_BOB: + DBGLOG("BOB? %d", at_bob()); + if (index == Pattern::Const::IMAX && at_bob()) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_EOL: + DBGLOG("EOL? %d", c1); + if (index == Pattern::Const::IMAX && (c1 == EOF || c1 == '\n')) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_BOL: + DBGLOG("BOL? %d", bol); + if (index == Pattern::Const::IMAX && bol) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_EWE: + DBGLOG("EWE? %d %d %d", c0, c1, isword(c0) && !isword(c1)); + if (index == Pattern::Const::IMAX && isword(c0) && !isword(c1)) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_BWE: + DBGLOG("BWE? %d %d %d", c0, c1, !isword(c0) && isword(c1)); + if (index == Pattern::Const::IMAX && !isword(c0) && isword(c1)) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_EWB: + DBGLOG("EWB? %d", at_eow()); + if (index == Pattern::Const::IMAX && at_eow()) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_BWB: + DBGLOG("BWB? %d", at_bow()); + if (index == Pattern::Const::IMAX && at_bow()) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_NWE: + DBGLOG("NWE? %d %d %d", c0, c1, isword(c0) == isword(c1)); + if (index == Pattern::Const::IMAX && isword(c0) == isword(c1)) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + case 0xFF00 | Pattern::META_NWB: + DBGLOG("NWB? %d %d", at_bow(), at_eow()); + if (index == Pattern::Const::IMAX && !at_bow() && !at_eow()) + index = Pattern::index_of(opcode); + opcode = *++pc; + continue; + } + } + if (index == Pattern::Const::IMAX) + { + if (back != Pattern::Const::IMAX) + { + pc = pat_->opc_ + back; + opcode = *pc; + } + break; + } + DBGLOG("Backtrack: pc = %u", index); + if (back == Pattern::Const::IMAX) + back = static_cast(pc - pat_->opc_); + pc = pat_->opc_ + index; + opcode = *pc; + index = Pattern::Const::IMAX; + } + if (c1 == EOF) + break; + } + else + { + if (c1 == EOF) + break; + c1 = get(); + DBGLOG("Get: c1 = %d", c1); + if (c1 == EOF) + break; + } + Pattern::Opcode lo = c1 << 24; + Pattern::Opcode hi = lo | 0x00FFFFFF; +unrolled: + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + if (hi < opcode || lo > (opcode << 8)) + { + opcode = *++pc; + goto unrolled; + } + } + } + } + } + } + } + } + index = Pattern::index_of(opcode); + if (index == Pattern::Const::IMAX) + break; + if (index == 0 && cap_ == 0) // failed to match so far, set cur_ to move forward from cur_ + 1 with FIND advance() + cur_ = pos_; + pc = pat_->opc_ + index; + } + } +#if !defined(WITH_NO_INDENT) + if (mrk_ && cap_ != Const::EMPTY) + { + if (col_ > 0 && (tab_.empty() || tab_.back() < col_)) + { + DBGLOG("Set new stop: tab_[%zu] = %zu", tab_.size(), col_); + tab_.push_back(col_); + } + else if (!tab_.empty() && tab_.back() > col_) + { + size_t n; + for (n = tab_.size() - 1; n > 0; --n) + if (tab_.at(n - 1) <= col_) + break; + ded_ += tab_.size() - n; + DBGLOG("Dedents: ded = %zu tab_ = %zu", ded_, tab_.size()); + tab_.resize(n); + if (n > 0) + tab_.back() = col_; // adjust stop when indents are not aligned (Python would give an error) + } + } + if (ded_ > 0) + { + DBGLOG("Dedents: ded = %zu", ded_); + if (col_ == 0 && bol) + { + ded_ += tab_.size(); + tab_.resize(0); + DBGLOG("Rescan for pending dedents: ded = %zu", ded_); + pos_ = ind_; + bol = false; // avoid looping, match \j exactly + goto redo; + } + --ded_; + } +#endif + if (method == Const::SPLIT) + { + DBGLOG("Split: len = %zu cap = %zu cur = %zu pos = %zu end = %zu txt-buf = %zu eob = %d got = %d", len_, cap_, cur_, pos_, end_, txt_-buf_, (int)eof_, got_); + if (cap_ == 0 || (cur_ == static_cast(txt_ - buf_) && !at_bob())) + { + if (!hit_end() && (txt_ + len_ < buf_ + end_ || peek() != EOF)) + { + ++len_; + DBGLOG("Split continue: len = %zu", len_); + set_current(++cur_); + goto find; + } + if (got_ != Const::EOB) + { + cap_ = Const::EMPTY; + set_current(pos_); + got_ = Const::EOB; + } + DBGLOG("Split at eof: cap = %zu txt = '%s' len = %zu", cap_, std::string(txt_, len_).c_str(), len_); + DBGLOG("END Matcher::match()"); + return cap_; + } + if (cur_ == 0 && at_bob() && at_end()) + cap_ = Const::EMPTY; + set_current(cur_); + DBGLOG("Split: txt = '%s' len = %zu", std::string(txt_, len_).c_str(), len_); + DBGLOG("END Matcher::match()"); + return cap_; + } + if (cap_ == 0) + { + if (method == Const::FIND && !at_end()) + { + if (pos_ == cur_ + 1) // early fail after one non-matching char, i.e. no META executed + { + if (advance()) + { + txt_ = buf_ + cur_; + goto find; + } + } + else if (pos_ > cur_) // we didn't fail on META alone + { + if (advance()) + goto scan; + } + txt_ = buf_ + cur_; + } + else + { + cur_ = txt_ - buf_; // no match: backup to begin of unmatched text + } + } + len_ = cur_ - (txt_ - buf_); + if (len_ == 0 && !nul) + { + DBGLOG("Empty or no match cur = %zu pos = %zu end = %zu", cur_, pos_, end_); + pos_ = cur_; + if (at_end()) + { + set_current(cur_); + DBGLOG("Reject empty match at EOF"); + cap_ = 0; + } + else if (method == Const::FIND) + { + DBGLOG("Reject empty match and continue?"); + set_current(++cur_); // skip one char to keep searching + if (cap_ == 0 || !opt_.N || (!bol && c1 == '\n')) // allow FIND with "N" to match an empty line, with ^$ etc. + goto scan; + DBGLOG("Accept empty match"); + } + else + { + set_current(cur_); + DBGLOG("Reject empty match"); + cap_ = 0; + } + } + else if (len_ == 0 && cur_ == end_) + { + DBGLOG("Hit end: got = %d", got_); + if (cap_ == Const::EMPTY && !opt_.A) + cap_ = 0; + } + else + { + set_current(cur_); + if (len_ > 0) + { + if (cap_ == Const::EMPTY && !opt_.A) + { + DBGLOG("Ignore accept and continue: len = %zu", len_); + len_ = 0; + if (method != Const::MATCH) + goto scan; + cap_ = 0; + } + } + } + DBGLOG("Return: cap = %zu txt = '%s' len = %zu pos = %zu got = %d", cap_, std::string(txt_, len_).c_str(), len_, pos_, got_); + DBGLOG("END match()"); + return cap_; + } /// Returns true if able to advance to next possible match bool advance() /// @returns true if possible match found ; +#if !defined(WITH_NO_INDENT) /// Update indentation column counter for indent() and dedent(). inline void newline() { @@ -382,88 +804,12 @@ class Matcher : public PatternMatcher { newline(); return !tab_.empty() && tab_.back() > col_; } +#endif /// Boyer-Moore preprocessing of the given pattern pat of length len, generates bmd_ > 0 and bms_[] shifts. void boyer_moore_init( const char *pat, ///< pattern string size_t len) ///< nonzero length of the pattern string, should be less than 256 - { - // Relative frquency table of English letters, source code, and UTF-8 bytes - static unsigned char freq[256] = "\0\0\0\0\0\0\0\0\0\73\4\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\73\70\70\1\1\2\2\70\70\70\2\2\70\70\70\2\3\3\3\3\3\3\3\3\3\3\70\70\70\70\70\70\2\35\14\24\26\37\20\17\30\33\11\12\25\22\32\34\15\7\27\31\36\23\13\21\10\16\6\70\1\70\2\70\1\67\46\56\60\72\52\51\62\65\43\44\57\54\64\66\47\41\61\63\71\55\45\53\42\50\40\70\2\70\2\0\47\47\47\47\47\47\47\47\47\47\47\47\47\47\47\47\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\44\44\44\44\44\44\44\44\44\44\44\44\44\44\44\44\0\0\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\46\56\56\56\56\56\56\56\56\56\56\56\56\46\56\56\73\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; - size_t i; - for (i = 0; i < 256; ++i) - bms_[i] = static_cast(len); - size_t sum = 0; - lcp_ = 0; - for (i = 0; i < len; ++i) - { - uint8_t pch = static_cast(pat[i]); - bms_[pch] = static_cast(len - i - 1); - sum += bms_[pch]; - if (freq[static_cast(pat[lcp_])] > freq[pch]) - lcp_ = i; - } - size_t j; - for (i = len - 1, j = i; j > 0; --j) - if (pat[j - 1] == pat[i]) - break; - bmd_ = i - j + 1; - sum /= len; - uint8_t fch = freq[static_cast(pat[lcp_])]; - if (sum > 1 && fch > 35 && (sum > 3 || fch > 48) && fch + sum > 48) - lcp_ = 0xffff; - } - /// Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4). - static inline bool predict_match(const Pattern::Pred pmh[], const char *s, size_t n) - { - Pattern::Hash h = static_cast(*s); - if (pmh[h] & 1) - return false; - h = Pattern::hash(h, static_cast(*++s)); - if (pmh[h] & 2) - return false; - h = Pattern::hash(h, static_cast(*++s)); - if (pmh[h] & 4) - return false; - h = Pattern::hash(h, static_cast(*++s)); - if (pmh[h] & 8) - return false; - Pattern::Pred m = 16; - const char *e = s + n - 3; - while (++s < e) - { - h = Pattern::hash(h, static_cast(*s)); - if (pmh[h] & m) - return false; - m <<= 1; - } - return true; - } - /// Returns zero when match is predicted or nonzero shift value, based on s[0..3]. - static inline size_t predict_match(const Pattern::Pred pma[], const char *s) - { - uint8_t b0 = s[0]; - uint8_t b1 = s[1]; - uint8_t b2 = s[2]; - uint8_t b3 = s[3]; - Pattern::Hash h1 = Pattern::hash(b0, b1); - Pattern::Hash h2 = Pattern::hash(h1, b2); - Pattern::Hash h3 = Pattern::hash(h2, b3); - Pattern::Pred a0 = pma[b0]; - Pattern::Pred a1 = pma[h1]; - Pattern::Pred a2 = pma[h2]; - Pattern::Pred a3 = pma[h3]; - Pattern::Pred p = (a0 & 0xc0) | (a1 & 0x30) | (a2 & 0x0c) | (a3 & 0x03); - Pattern::Pred m = (p >> 5) | (p >> 3) | (p >> 1) | p; - if (m != 0xff) - return 0; - if ((pma[b1] & 0xc0) != 0xc0) - return 1; - if ((pma[b2] & 0xc0) != 0xc0) - return 2; - if ((pma[b3] & 0xc0) != 0xc0) - return 3; - return 4; - } + ; size_t ded_; ///< dedent count size_t col_; ///< column counter for indent matching, updated by newline(), indent(), and dedent() Stops tab_; ///< tab stops set by detecting indent margins diff --git a/include/reflex/pattern.h b/include/reflex/pattern.h index ac80b9466..be69c6b0e 100644 --- a/include/reflex/pattern.h +++ b/include/reflex/pattern.h @@ -319,6 +319,58 @@ class Pattern { { return wms_; } + /// Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4). + static inline bool predict_match(const Pattern::Pred pmh[], const char *s, size_t n) + { + Pattern::Hash h = static_cast(*s); + if (pmh[h] & 1) + return false; + h = Pattern::hash(h, static_cast(*++s)); + if (pmh[h] & 2) + return false; + h = Pattern::hash(h, static_cast(*++s)); + if (pmh[h] & 4) + return false; + h = Pattern::hash(h, static_cast(*++s)); + if (pmh[h] & 8) + return false; + Pattern::Pred m = 16; + const char *e = s + n - 3; + while (++s < e) + { + h = Pattern::hash(h, static_cast(*s)); + if (pmh[h] & m) + return false; + m <<= 1; + } + return true; + } + /// Returns zero when match is predicted or nonzero shift value, based on s[0..3]. + static inline size_t predict_match(const Pattern::Pred pma[], const char *s) + { + uint8_t b0 = s[0]; + uint8_t b1 = s[1]; + uint8_t b2 = s[2]; + uint8_t b3 = s[3]; + Pattern::Hash h1 = Pattern::hash(b0, b1); + Pattern::Hash h2 = Pattern::hash(h1, b2); + Pattern::Hash h3 = Pattern::hash(h2, b3); + Pattern::Pred a0 = pma[b0]; + Pattern::Pred a1 = pma[h1]; + Pattern::Pred a2 = pma[h2]; + Pattern::Pred a3 = pma[h3]; + Pattern::Pred p = (a0 & 0xc0) | (a1 & 0x30) | (a2 & 0x0c) | (a3 & 0x03); + Pattern::Pred m = (p >> 5) | (p >> 3) | (p >> 1) | p; + if (m != 0xff) + return 0; + if ((pma[b1] & 0xc0) != 0xc0) + return 1; + if ((pma[b2] & 0xc0) != 0xc0) + return 2; + if ((pma[b3] & 0xc0) != 0xc0) + return 3; + return 4; + } protected: /// Throw an error. virtual void error( diff --git a/lib/matcher.cpp b/lib/matcher.cpp index cb38c93e2..6aba48f59 100644 --- a/lib/matcher.cpp +++ b/lib/matcher.cpp @@ -36,434 +36,35 @@ #include -// minimal anchor support for greater speed, disables \i, \j, \k -// #define WITH_MINIMAL - -// minimal length of the prefix pattern for Boyer-Moore search -#define BOYER_MOORE_MIN_LENGTH 9 - namespace reflex { -size_t Matcher::match(Method method) +/// Boyer-Moore preprocessing of the given pattern pat of length len, generates bmd_ > 0 and bms_[] shifts. +void Matcher::boyer_moore_init(const char *pat, size_t len) { - DBGLOG("BEGIN Matcher::match()"); - reset_text(); - len_ = 0; // split text length starts with 0 -scan: - txt_ = buf_ + cur_; -#if !defined(WITH_MINIMAL) - mrk_ = false; - ind_ = pos_; // ind scans input in buf[] in newline() up to pos - 1 - col_ = 0; // count columns for indent matching - if (ded_ == 0 && hit_end() && tab_.empty()) - { - if (method == Const::SPLIT && !at_bob() && cap_ != 0 && cap_ != Const::EMPTY) - { - cap_ = Const::EMPTY; - DBGLOG("Split empty at end, cap = %zu", cap_); - DBGLOG("END Matcher::match()"); - return cap_; - } - cap_ = 0; - DBGLOG("END Matcher::match()"); - return 0; - } -#endif -find: - int c1 = got_; - bool bol = at_bol(); - if (pat_->fsm_) - fsm_.c1 = c1; -redo: - lap_.resize(0); - cap_ = 0; - bool nul = method == Const::MATCH; - if (pat_->fsm_) - { - DBGLOG("FSM code %p", pat_->fsm_); - fsm_.bol = bol; - fsm_.nul = nul; - pat_->fsm_(*this); - nul = fsm_.nul; - c1 = fsm_.c1; - } - else if (pat_->opc_) - { - const Pattern::Opcode *pc = pat_->opc_; - while (true) - { - Pattern::Opcode opcode = *pc; - DBGLOG("Fetch: code[%zu] = 0x%08X", pc - pat_->opc_, opcode); - Pattern::Index index; - if (Pattern::is_opcode_halt(opcode)) - break; - if (Pattern::is_opcode_meta(opcode)) - { - switch (opcode >> 16) - { - case 0xFF00: // TAKE - cap_ = Pattern::index_of(opcode); - DBGLOG("Take: cap = %zu", cap_); - cur_ = pos_; - ++pc; - continue; - case 0xFF7E: // TAIL - index = Pattern::index_of(opcode); - DBGLOG("Tail: %u", index); - if (lap_.size() > index && lap_[index] >= 0) - cur_ = txt_ - buf_ + static_cast(lap_[index]); // mind the (new) gap - ++pc; - continue; - case 0xFF7F: // HEAD - index = Pattern::index_of(opcode); - DBGLOG("Head: lookahead[%u] = %zu", index, pos_ - (txt_ - buf_)); - if (lap_.size() <= index) - lap_.resize(index + 1, -1); - lap_[index] = static_cast(pos_ - (txt_ - buf_)); // mind the gap - ++pc; - continue; -#if !defined(WITH_MINIMAL) - case 0xFF00 | Pattern::META_DED: - if (ded_ > 0) - { - index = Pattern::index_of(opcode); - DBGLOG("Dedent ded = %zu", ded_); // unconditional dedent matching \j - nul = true; - pc = pat_->opc_ + index; - continue; - } -#endif - } - if (c1 == EOF) - break; - int c0 = c1; - c1 = get(); - DBGLOG("Get: c1 = %d", c1); - Pattern::Index back = Pattern::Const::IMAX; // where to jump back to (backtrack on meta transitions) - Pattern::Index la; - index = Pattern::Const::IMAX; - while (true) - { - if (Pattern::is_opcode_meta(opcode) && (index == Pattern::Const::IMAX || back == Pattern::Const::IMAX)) - { - // we no longer have to pass through all if index and back are set - switch (opcode >> 16) - { - case 0xFF00: // TAKE - cap_ = Pattern::index_of(opcode); - DBGLOG("Take: cap = %zu", cap_); - cur_ = pos_; - if (c1 != EOF) - --cur_; // must unget one char - opcode = *++pc; - continue; - case 0xFF7E: // TAIL - la = Pattern::index_of(opcode); - DBGLOG("Tail: %u", la); - if (lap_.size() > la && lap_[la] >= 0) - cur_ = txt_ - buf_ + static_cast(lap_[la]); // mind the (new) gap - opcode = *++pc; - continue; - case 0xFF7F: // HEAD - opcode = *++pc; - continue; -#if !defined(WITH_MINIMAL) - case 0xFF00 | Pattern::META_DED: - DBGLOG("DED? %d", c1); - if (index == Pattern::Const::IMAX && back == Pattern::Const::IMAX && bol && dedent()) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_IND: - DBGLOG("IND? %d", c1); - if (index == Pattern::Const::IMAX && back == Pattern::Const::IMAX && bol && indent()) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_UND: - DBGLOG("UND"); - if (mrk_) - index = Pattern::index_of(opcode); - mrk_ = false; - ded_ = 0; - opcode = *++pc; - continue; -#endif - case 0xFF00 | Pattern::META_EOB: - DBGLOG("EOB? %d", c1); - if (index == Pattern::Const::IMAX && c1 == EOF) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_BOB: - DBGLOG("BOB? %d", at_bob()); - if (index == Pattern::Const::IMAX && at_bob()) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_EOL: - DBGLOG("EOL? %d", c1); - if (index == Pattern::Const::IMAX && (c1 == EOF || c1 == '\n')) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_BOL: - DBGLOG("BOL? %d", bol); - if (index == Pattern::Const::IMAX && bol) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; -#if !defined(WITH_MINIMAL) - case 0xFF00 | Pattern::META_EWE: - DBGLOG("EWE? %d %d %d", c0, c1, isword(c0) && !isword(c1)); - if (index == Pattern::Const::IMAX && isword(c0) && !isword(c1)) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_BWE: - DBGLOG("BWE? %d %d %d", c0, c1, !isword(c0) && isword(c1)); - if (index == Pattern::Const::IMAX && !isword(c0) && isword(c1)) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_EWB: - DBGLOG("EWB? %d", at_eow()); - if (index == Pattern::Const::IMAX && at_eow()) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_BWB: - DBGLOG("BWB? %d", at_bow()); - if (index == Pattern::Const::IMAX && at_bow()) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_NWE: - DBGLOG("NWE? %d %d %d", c0, c1, isword(c0) == isword(c1)); - if (index == Pattern::Const::IMAX && isword(c0) == isword(c1)) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; - case 0xFF00 | Pattern::META_NWB: - DBGLOG("NWB? %d %d", at_bow(), at_eow()); - if (index == Pattern::Const::IMAX && !at_bow() && !at_eow()) - index = Pattern::index_of(opcode); - opcode = *++pc; - continue; -#endif - } - } - if (index == Pattern::Const::IMAX) - { - if (back != Pattern::Const::IMAX) - { - pc = pat_->opc_ + back; - opcode = *pc; - } - break; - } - DBGLOG("Backtrack: pc = %u", index); - if (back == Pattern::Const::IMAX) - back = static_cast(pc - pat_->opc_); - pc = pat_->opc_ + index; - opcode = *pc; - index = Pattern::Const::IMAX; - } - if (c1 == EOF) - break; - } - else - { - if (c1 == EOF) - break; - c1 = get(); - DBGLOG("Get: c1 = %d", c1); - if (c1 == EOF) - break; - } - Pattern::Opcode lo = c1 << 24; - Pattern::Opcode hi = lo | 0x00FFFFFF; -unrolled: - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - if (hi < opcode || lo > (opcode << 8)) - { - opcode = *++pc; - goto unrolled; - } - } - } - } - } - } - } - } - index = Pattern::index_of(opcode); - if (index == Pattern::Const::IMAX) - break; - if (index == 0 && cap_ == 0) // failed to match so far, set cur_ to move forward from cur_ + 1 with FIND advance() - cur_ = pos_; - pc = pat_->opc_ + index; - } - } -#if !defined(WITH_MINIMAL) - if (mrk_ && cap_ != Const::EMPTY) - { - if (col_ > 0 && (tab_.empty() || tab_.back() < col_)) - { - DBGLOG("Set new stop: tab_[%zu] = %zu", tab_.size(), col_); - tab_.push_back(col_); - } - else if (!tab_.empty() && tab_.back() > col_) - { - size_t n; - for (n = tab_.size() - 1; n > 0; --n) - if (tab_.at(n - 1) <= col_) - break; - ded_ += tab_.size() - n; - DBGLOG("Dedents: ded = %zu tab_ = %zu", ded_, tab_.size()); - tab_.resize(n); - if (n > 0) - tab_.back() = col_; // adjust stop when indents are not aligned (Python would give an error) - } - } - if (ded_ > 0) - { - DBGLOG("Dedents: ded = %zu", ded_); - if (col_ == 0 && bol) - { - ded_ += tab_.size(); - tab_.resize(0); - DBGLOG("Rescan for pending dedents: ded = %zu", ded_); - pos_ = ind_; - bol = false; // avoid looping, match \j exactly - goto redo; - } - --ded_; - } -#endif - if (method == Const::SPLIT) - { - DBGLOG("Split: len = %zu cap = %zu cur = %zu pos = %zu end = %zu txt-buf = %zu eob = %d got = %d", len_, cap_, cur_, pos_, end_, txt_-buf_, (int)eof_, got_); - if (cap_ == 0 || (cur_ == static_cast(txt_ - buf_) && !at_bob())) - { - if (!hit_end() && (txt_ + len_ < buf_ + end_ || peek() != EOF)) - { - ++len_; - DBGLOG("Split continue: len = %zu", len_); - set_current(++cur_); - goto find; - } - if (got_ != Const::EOB) - { - cap_ = Const::EMPTY; - set_current(pos_); - got_ = Const::EOB; - } - DBGLOG("Split at eof: cap = %zu txt = '%s' len = %zu", cap_, std::string(txt_, len_).c_str(), len_); - DBGLOG("END Matcher::match()"); - return cap_; - } - if (cur_ == 0 && at_bob() && at_end()) - cap_ = Const::EMPTY; - set_current(cur_); - DBGLOG("Split: txt = '%s' len = %zu", std::string(txt_, len_).c_str(), len_); - DBGLOG("END Matcher::match()"); - return cap_; - } - if (cap_ == 0) - { - if (method == Const::FIND && !at_end()) - { - if (pos_ == cur_ + 1) // early fail after one non-matching char, i.e. no META executed - { - if (advance()) - { - txt_ = buf_ + cur_; - goto find; - } - } - else if (pos_ > cur_) // we didn't fail on META alone - { - if (advance()) - goto scan; - } - txt_ = buf_ + cur_; - } - else - { - cur_ = txt_ - buf_; // no match: backup to begin of unmatched text - } - } - len_ = cur_ - (txt_ - buf_); - if (len_ == 0 && !nul) + // Relative frquency table of English letters, source code, and UTF-8 bytes + static unsigned char freq[256] = "\0\0\0\0\0\0\0\0\0\73\4\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\73\70\70\1\1\2\2\70\70\70\2\2\70\70\70\2\3\3\3\3\3\3\3\3\3\3\70\70\70\70\70\70\2\35\14\24\26\37\20\17\30\33\11\12\25\22\32\34\15\7\27\31\36\23\13\21\10\16\6\70\1\70\2\70\1\67\46\56\60\72\52\51\62\65\43\44\57\54\64\66\47\41\61\63\71\55\45\53\42\50\40\70\2\70\2\0\47\47\47\47\47\47\47\47\47\47\47\47\47\47\47\47\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\45\44\44\44\44\44\44\44\44\44\44\44\44\44\44\44\44\0\0\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\46\56\56\56\56\56\56\56\56\56\56\56\56\46\56\56\73\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + size_t i; + for (i = 0; i < 256; ++i) + bms_[i] = static_cast(len); + size_t sum = 0; + lcp_ = 0; + for (i = 0; i < len; ++i) { - DBGLOG("Empty or no match cur = %zu pos = %zu end = %zu", cur_, pos_, end_); - pos_ = cur_; - if (at_end()) - { - set_current(cur_); - DBGLOG("Reject empty match at EOF"); - cap_ = 0; - } - else if (method == Const::FIND) - { - DBGLOG("Reject empty match and continue?"); - set_current(++cur_); // skip one char to keep searching - if (cap_ == 0 || !opt_.N || (!bol && c1 == '\n')) // allow FIND with "N" to match an empty line, with ^$ etc. - goto scan; - DBGLOG("Accept empty match"); - } - else - { - set_current(cur_); - DBGLOG("Reject empty match"); - cap_ = 0; - } - } - else if (len_ == 0 && cur_ == end_) - { - DBGLOG("Hit end: got = %d", got_); - if (cap_ == Const::EMPTY && !opt_.A) - cap_ = 0; - } - else - { - set_current(cur_); - if (len_ > 0) - { - if (cap_ == Const::EMPTY && !opt_.A) - { - DBGLOG("Ignore accept and continue: len = %zu", len_); - len_ = 0; - if (method != Const::MATCH) - goto scan; - cap_ = 0; - } - } + uint8_t pch = static_cast(pat[i]); + bms_[pch] = static_cast(len - i - 1); + sum += bms_[pch]; + if (freq[static_cast(pat[lcp_])] > freq[pch]) + lcp_ = i; } - DBGLOG("Return: cap = %zu txt = '%s' len = %zu pos = %zu got = %d", cap_, std::string(txt_, len_).c_str(), len_, pos_, got_); - DBGLOG("END match()"); - return cap_; + size_t j; + for (i = len - 1, j = i; j > 0; --j) + if (pat[j - 1] == pat[i]) + break; + bmd_ = i - j + 1; + sum /= len; + uint8_t fch = freq[static_cast(pat[lcp_])]; + if (sum > 1 && fch > 35 && (sum > 3 || fch > 48) && fch + sum > 48) + lcp_ = 0xffff; } // advance input cursor after mismatch to align input for next match @@ -506,7 +107,7 @@ bool Matcher::advance() { s -= min - 1; loc = s - buf_; - if (predict_match(pat_->pmh_, s, min)) + if (Pattern::predict_match(pat_->pmh_, s, min)) { set_current(loc); return true; @@ -547,7 +148,7 @@ bool Matcher::advance() { s -= 2; loc = s - buf_; - if (s + 4 > e || predict_match(pma, s) == 0) + if (s + 4 > e || Pattern::predict_match(pma, s) == 0) { set_current(loc); return true; @@ -587,7 +188,7 @@ bool Matcher::advance() { s -= 1; loc = s - buf_; - if (s + 4 > e || predict_match(pma, s) == 0) + if (s + 4 > e || Pattern::predict_match(pma, s) == 0) { set_current(loc); return true; @@ -622,7 +223,7 @@ bool Matcher::advance() set_current(loc); return true; } - size_t k = predict_match(pma, s); + size_t k = Pattern::predict_match(pma, s); if (k == 0) { set_current(loc); @@ -685,12 +286,12 @@ bool Matcher::advance() return true; if (min >= 4) { - if (predict_match(pat_->pmh_, &buf_[loc + len], min)) + if (Pattern::predict_match(pat_->pmh_, &buf_[loc + len], min)) return true; } else { - if (predict_match(pat_->pma_, &buf_[loc + len]) == 0) + if (Pattern::predict_match(pat_->pma_, &buf_[loc + len]) == 0) return true; } } @@ -735,12 +336,12 @@ bool Matcher::advance() return true; if (min >= 4) { - if (predict_match(pat_->pmh_, &buf_[loc + len], min)) + if (Pattern::predict_match(pat_->pmh_, &buf_[loc + len], min)) return true; } else { - if (predict_match(pat_->pma_, &buf_[loc + len]) == 0) + if (Pattern::predict_match(pat_->pma_, &buf_[loc + len]) == 0) return true; } } diff --git a/lib/pattern.cpp b/lib/pattern.cpp index 1cb9c34ac..9d34fb4cf 100644 --- a/lib/pattern.cpp +++ b/lib/pattern.cpp @@ -2665,7 +2665,7 @@ void Pattern::predict_match_dfa(State& start) { if (pmh_[i] != 0xFF) { - if (isprint(i)) + if (isprint(pmh_[i])) DBGLOGN("pmh['%c'] = %2x\n", i, pmh_[i]); else DBGLOGN("pmh[%3d] = %2x\n", i, pmh_[i]); @@ -2675,7 +2675,7 @@ void Pattern::predict_match_dfa(State& start) { if (pma_[i] != 0xFF) { - if (isprint(i)) + if (isprint(pma_[i])) DBGLOGN("pma['%c'] = %2x\n", i, pma_[i]); else DBGLOGN("pma[%3d] = %2x\n", i, pma_[i]); @@ -2860,5 +2860,4 @@ void Pattern::write_namespace_close(FILE *file) const ::fprintf(file, "} // namespace %s\n\n", s.substr(i).c_str()); } - } // namespace reflex diff --git a/src/reflex.cpp b/src/reflex.cpp index c68768866..07af649fd 100644 --- a/src/reflex.cpp +++ b/src/reflex.cpp @@ -79,6 +79,7 @@ static const char *options_table[] = { "graphs_file", "header_file", "include", + "indent", "input", "interactive", "lex", @@ -94,6 +95,7 @@ static const char *options_table[] = { "nodefault", "nodotall", "nofreespace", + "noindent", "noinput", "noline", "nomain", @@ -1860,6 +1862,8 @@ void Reflex::write_class() if (!out->good()) return; write_banner("REGEX MATCHER"); + if (!options["noindent"].empty()) + *out << "#define WITH_NO_INDENT\n"; *out << "#include <" << library->file << ">" << std::endl; const char *matcher = library->matcher; std::string lex = options["lex"]; diff --git a/src/reflex.h b/src/reflex.h index e3e559481..eb11b3b9e 100644 --- a/src/reflex.h +++ b/src/reflex.h @@ -66,7 +66,7 @@ #endif // DO NOT ALTER THIS LINE: the makemake.sh script updates the version -#define REFLEX_VERSION "1.5.5" +#define REFLEX_VERSION "1.5.6" /// RE/flex scanner generator class, a variation of the classic "lex" tool to generate scanners. /**