You need to create the lexers / parsers for the supported input languages manually from the lex / yacc specifications.
Note: This needs to be done once before the first built, and then each time the lexer / parser specifications are changed. That is, if you either change the source yourself, or update the CVC3 source.
There are two tested ways to create the lexers / parsers:
If you have cygwin installed, you can compile CVC3 as described in INSTALL. The created lexer / parser files can then be used in the MS C++ built as well.
You actually need only to do
./configure
in the root directory, and then in src/parser
make
Otherwise, you need to get windows versions of lex / yacc. You can get flex and bison binaries (using the setup packages is recommend) from
http://gnuwin32.sourceforge.net/packages/flex.htm
http://gnuwin32.sourceforge.net/packages/bison.htm
Make sure that flex and bison are in your path. How to change the environment variable 'path' in Windows is described at
Then execute
make_parser.bat
in
src/parser/
to create the lexer / parser.
The script should output no error messages, potentially except for warnings about shift/reduce conflicts, and create the following files (in src/parser):
lexLisp.cpp lexPL.cpp lexsmtlib.cpp parseLisp.cpp parsePL.cpp parsesmtlib.cpp parseLisp_defs.h parsePL_defs.h parsesmtlib_defs.h
This has been tested with flex 2.5.4, bison 2.1 and bison 2.3.
The Microsoft C++ port has been developed in Visual Studion 2005, and the source is organized in Visual Studio projects.
The sourse code is organized into the following projects (each exists in a Debug and a Release version):
1) C++
CVC3 as a C++ library.
a standalone command line version of CVC3, using cvc3lib.
regression tests for cvc3lib.
2) CLI
This is a CLI wrapper of CVC3, i.e. it allows to use CVC3 as a library in .NET
Note: it can currently not be used in implementations of the CLI other than Microsoft's, as the wrapper is written in Microsoft's C++ extension (C++/CLI), which is at the moment not supported by e.g. Mono.
The CLI wrapper mirrors the structure of the C++ projects:
CVC3 as a CLI library. provides C++/CLI wrapper classes of the cvc3lib C++ classes (written in C++/CLI).
a standalone command line version of CVC3, using cvc3libcli (written in C# 2.0).
regression tests for cvc3libcli (written in C# 2.0).
The stack size limit of the cvc3cli binary is not sufficient for complex examples. This is automatically adjusted during the Visual Studio build process by calling the file
windows/set_stack_size.bat
Note: This file needs to set the path to the Visual Studio Tools. If your setup is different from the one assumed here, the built of the cvc3cli project might fail. In that case you need to edit the file set_stack_size.bat accordingly.
Open the solution file (containing all the projects) in Visual Studio:
windows/cvc3.sln
Built the projects you need, e.g. the cvc3 project to built the CVC3 command line tool.
All binaries will be put in the folder
windows/release
resp.
windows/debug
By default cvclib is statically linked to cvc3. If you prefer dynamic linkage you need to do the following before the build:
Configuration Properties->General->Configuration Type
to Dynamic Library
// define CVC_DLL_LINKAGE
i.e. change it to
define CVC_DLL_LINKAGE
this file can be found in the file system at
windows/include/os.h
resp. in the cvc3lib project in the header files folder.
windows/cvc3lib/Debug/cvc3lib.dll.embed.manifest.res windows/cvc3lib/Release/cvc3lib.dll.embed.manifest.res
this should not be necessary in general, but in some cases when executing the cvc3 project (even from Visual Studio) the error message 'msvcp80d.dll not found' might occur. Removing these files and doing the build again should fix this (see http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=15218&SiteID=1).
Compiling CVC3 for a 64Bit platform has not been tested.
GMP is currently not supported, native arithmetic support is used. See the GMP section in INSTALL for details.
The Visual Studio solution contains two projects which create installers for the cvc3 and cvc3cli project. These are called cvc3 and cvc3cli as well. If your version of Visual Studio supports this, you can use these projects to create and installers for the cvc3 binaries. Note that their installation might require administrative rights.
For details see
How to: Deploy using a Setup and Deployment Project http://msdn2.microsoft.com/en-us/library/ms235317(VS.80).aspx
Scenarios for Deployment Examples http://msdn2.microsoft.com/en-us/library/aa985617(VS.80).aspx
An alternative is to just take the binaries and libraries and install the C-runtime:
http://msdn2.microsoft.com/en-us/library/ms235624(VS.80).aspx
Note: assemblies are currently not signed, although you might want to do so:
http://msdn2.microsoft.com/en-us/library/wd40t7ad(VS.80).aspx
See the Documentation section in INSTALL for details.
Note: Doxygen documentation is currently not generated for the CLI API.
If you find a problem with the instructions in this installation guide, or have suggestions for improvement, please send an email to cvc-bugs@cs.nyu.edu resp. cvc-devel@cs.nyu.edu.