Fixes#10414 and duplicate #11146.
The function `InteractiveShell::readAndExecCommands()` is designed to
catch `ParserEndOfFile` exceptions thrown by `Lexer::parseError`.
However, if the exception class is not exported and the cvc5 binary is
linked against a shared version of the cvc5 parser library, the
exception is interpreted as its exported superclass, `ParserException`.
This results in unintended behavior.
This PR updates test/binary/interactive_shell_parser_inc.py so that the sendline function does not match and ignore previous output. The revised Python script also prints the found output when an assertion fails.
The commit 68fc815 changed the behavior of the interactive shell to use setStringInput instead of setIncrementalStringInput / appendIncrementalStringInput. This change introduces a new private method to replicate the old behavior, where we do not reallocate a parser each line, which leads to issues (which happened to be found in #10258).
It furthermore corrects an issue in incremental when using the parser API, where multiple "outermost contexts" could be pushed on a symbol manager, which leads to synchronization issues concerning scope levels in symbol manager.
Also adds a test for the interactive shell that would have caught this.
Includes several fixes found during testing:
A check to avoid assertion failure in the flex parser
Changes atomic SEXPR to symbols instead of constant strings to avoid spurious error messages for non-standard characters
Changes to options configuration for Flex for performance (as a result, this does not fix check-synth doesn't flush output #9257).
Fix for --stdin-input-per-line to not set incremental by default for non-interactive inputs.
Note that TPTP parsing still uses the ANTLR parser.
Fixes#9258.
Fixes#8374.
Fixes#1862.
Fixes#791.
Fixescvc5/cvc5-wishues#142.
I increased cmake's minimum version in order to use the FindPython module, which allows the build system to specify python versions that are supported. Currently the support is extended to 3.6 through 3.10. I also removed some backward compatible conditions that do not apply anymore provided that cmake's minimum version is guaranteed to be 3.12.
MacOS builds are reenabled in ci.yml.