首页 > 代码库 > C++ 解析器--cint
C++ 解析器--cint
CINT 是一个使用 C/C++ 语法的解释器,CINT 兼容 95% 的 ANSI C 代码和85% 的 ANSI C++ 代码。这基本上意味着如果你的代码没有使用太过于专业的 C/C++ 语法,CINT 都能够正确的解析,诸如类、虚函数、运算符重载、继承、指针、数组等等。CINT 甚至支持模板。CINT 所不支持的 C/C++ 语言特性已被列在 Limitions。
一、构成
CINT 已被移植到多种平台下,当前的最新版本是 5.18.00,在 Windows 平台下,CINT 由以下四部分组成:
解释器 cint.exe
它接受扩展名为 .c、.cpp、.cxx 等 C/C++ 的源代码,并将其解释执行。
库文件 libcint.dll
它提供了 cint 的运行时环境。
lib 编译器makecint.exe
它将指定的 C/C++ 库编译为可由 CINT使用扩展库,虽然 CINT 本身不进行编译,但它为使用C/C++编译器创建了一个 makefile。
系统库 /include
提供诸如 stdio.h、iostream.h、time.h 等标准的 C/C++ 库的头文件。
二、安装
首先到 CINT 网站上下载一个最新的安装包,安装包通常分为两种,一种是已经编译好的二进制文件,一种是未经过编译的源代码,我的建议是这两个包都进行下载,因为在二进制包中不包括系统库。对于得到的源代码,首先确定所使用的编译器,在安装包目录的 platform 子目录中找到你的编译器,如果没有找到,呵呵。在自己编译器对应的目录中,通常有一个 setup.bat 文件,使用它来设置相关的变量并进行编译。CINT 运行时必须的系统变量为 CINTSYSDIR,它应该被设置为包含上述 CINT 组成的目录,另外,为了使用方便,将 CINTSYSDIR 添加到系统的 PATH 中是个不错的选择。
三、功能
3.1、支持 K&R-C, ANSI-C, ANSI-C++
Cint 覆盖了80-90%的K&R-C、ANSI-C和C++语言特性。包括多继承、虚函数重载、操作符重载、默认参数、模板(这个猛)等等。 Cint的目标不是成为100%兼容ANSI/ISOC++语言的处理机,而是一个可移植的足以解析大部分标准C++的脚本环境。
3.2、可处理大规模C/C++源码
Cint可以处理大规模的C/C++源码,这可不是所有C++解释器都能做到的。Cint可以快速加载入源文件并解析超过6万行的代码。
3.3、可与编译代码混合使用
基于速度和交互的需要,你可以混合使用编译代码和脚本代码。"makecint"工具可以把任何C/C++对象作为预编译库嵌入到脚本中去,预编译库可以 配置成动态链接库。脚本代码和预编译代码可以双向无缝调用。
3.4、动态C++
Cint是动态的。它可以从命令行处理C++声明,动态地定义/删除类和函数的声明、载入/卸载源文件和动态库,以及一个扩展的 RTTI机制,这些足以让你开发出不可思议的C++用法。
3.5、内置的Debugger和Class Browser
Cint有一个内置的debugger,可以用于调试复杂的C++执行流程。基于的文本Class Browser是Debugger功能的一部分
四、源码编译
4.1、安装MinGW与Msys,并将其添加到环境路径PATH中,如:
MINGW_HOME = C:\MinGW
PATH=$PATH: ;%MINGW_HOME%;%MINGW_HOME%\bin;%MINGW_HOME%\msys\1.0;%MINGW_HOME%\msys\1.0\bin;
4.2、设定msys的fstab(C:/MinGW/msys/1.0/etc/),在文件末加入如下语句,注意这里使用到了Dos8.3命名规则。可以参考如下语句实现:
char *TMP_SDK = "C:\\Program Files\\MicrosoftSDKs";
TCHAR strLongPathName[256];
MultiByteToWideChar(CP_ACP, 0, TMP_SDK, -1, strLongPathName,256);
TCHAR szShortPathName[MAX_PATH] = {0};
GetShortPathNameW(strLongPathName,szShortPathName, MAX_PATH);
fstab:
c:/mingw /mingw
c:/ActiveState/perl /perl
C:/Workspace/Interpreter/cint-5.18.00 /cint
C:/PROGRA~1/MID05A~1 /msvc8
C:/PROGRA~1/MI2578~1/Windows/v7.0A /psdk
4.3、配制cint的configure文件
4.3.1、将 C:\cint\configure 函数config_msvc7中的一行
CFLAGS="-G5 -MD-nologo -wd4996 -GX"
修改为
CFLAGS="-G5 -MT-nologo -wd4996 -GX"
4.3.2、将MANGLEPATHS="cygpath-m"注释,在最前面加上#
4.4、从vs2005的控制台运行vcvarsall.bat设定:
Setting environment for using Microsoft Visual Studio 2005 x86tools.
然后在vs2005的命令窗口输入msys.bat运行msys.
4.5在msys中设定变量:
export PATH=/msvc8/VC/bin:/msvc8/Common7/IDE:$PATH
export INCLUDE=/psdk/include:/msvc8/VC/include
export LIB=/psdk/lib:/msvc8/VC/lib
然后cd 到cint源码路径下,再输入:./configure,最后输入:make –j4就能生成cint的动态库
C++ 解析器--cint