1. cpp文件生成
   1.1 工具准备
      从www.cygwin.org:http://cygwin.com/install.html下载cygwin.
      执行setup.exe并选择flex/bison两个工具包
   1.2 启动cygwin
      启动桌面上的cygwin terminator,进入到.l与.y文件所在的路径.
   1.2 生成xqlexer.cpp
      在cygwin中执行 flex -L -oXQLexer.cpp XQLexer.l
   1.3 生成xqPaser.cpp
      在cygwin中执行 bison -l -d -o XQParser.cpp XQParser.y
2. 添加用户命令
   以命令createdb为例,格式为createdb dbname;
   2.1 修改XQLexer.l
       打开XQLexer.l文件,
       在最后一个 行之后
       添加同样一行,修改为createdb { BEGIN COMMAND; return token::CREATEDB;}
       若参数中还有关键字,在行之后添加类似的行.
       保存文件,生成xqlexer.cpp,具体参见1.2
   2.2 修改XQPaser.y
       打开XQPaser.y, 
       在%token VERSION "version"类似行之后添加命令的标签, %token CREATEDB "createdb"
       在990行 SHOWVERSION sideoption下添加命令处理.命令参数为字符串的,用DName表示.参照我们的命令格式和现有的方式很容易理解
       | CREATEDB DName
       {
            XdbParserArg* arg = new XdbParserArg(); //创建返回对象
            $$ = arg; //返回值
            arg->cmd = createdb; //命令类型, 在utils/commandtype.h中定义
            arg->params.push_back($2); //加入参数值,参数值以1开始,因此为第2个
            delete $2; //DName为new出来的字符串,需要删除.
       }
       若命令中有些常量之类,请参考其他命令修改或添加.
       生成XQparser.cpp
3. 修改用户命令
   按照修改要求对xqlexer.l, xqparser.y
posted on 2013-07-31 19:14  小迷糊Chen  阅读(1398)  评论(0编辑  收藏  举报