Add PCRE2 support as an alternative to the original PCRE. PCRE2 is
actively maintained and has a cleaner API than its predecessor.
- Use a function interface around regular expressions to isolate and
reduce the preprocessor #if/#endif forest. Abide by a single function
declaration/implementation approach, vs. multiple function
implentations within an #if/#endif forest.
- Clean up the code so that work isn't recreated or duplicated, such as
compiling regexps.
Platform notes:
- cmake: PCRE2 is the default RegEx support. To revert to PCRE, add
"-DPREFER_PCRE" to the cmake configuration command line.
- makefile: PCRE remains the default RegEx support out of respect for
tradition (cue Chaim Topol singing "Tradition".) Enable PCRE2 by
defining "USE_PCRE2=<some value>" from the make command line or shell
environment.
- Visual Studio Projects: Untouched. Externally built libraries provide
regular expression support residing in a specific place in the file
system, which is outside the control of SIMH proper.
sim_defs.h:
- Change EXPECT::size from int32 to size_t for increased
cross-platform/64-bit compatibility (i.e., array indices and offsets
should be size_t, where practicable.)
- Add typedefs for EXPECT regex support independence: sim_regex_t,
sim_re_capture_t.
- Add regular expression context to EXPTAB that maintains state when
processing the captured matches, making the function interface clean.
Tracks intermediate state while processing captured matches.
- Bump SIMH_VERSION_MINOR in CMakeLists.txt. This propagates down
through the rest of the CMake infrastructure.
- README-CMake.md, cmake/{GitHub-release.md,cmake-builder.sh}: Update
documentation. (Prettiness.)
- vcpkg.json: Update simh version-string. (Consistency.)
NOTE: Github CI/CD: There has to be an automated way to update version
numbers; researching.
* CMake build infrastructure
The squashed commit that builds and packages releases for the SIMH
simulator suite with CMake, version 3.14 or newer.
See README-CMake.md for documentation.