Blogs
在DLL中使用Antlr
Submitted by gougou on Sat, 2005-08-27 16:51.-noscript-blocked { border: 1px solid red !important; background: white url("chrome://noscript/skin/icon32.png") no-repeat left top !important; opacity: 0.6 !important; }
新建一个Win32 DLL项目,设置如下
Delphi调用VC生成用于C程序调用的DLL的注意事项
Submitted by gougou on Sat, 2005-08-27 16:45在VC中可以Export DLL函数供C程序调用
#define PARSERDLL_API __declspec(dllexport)
extern "C" {
PARSERDLL_API int GetSqlType(LPCTSTR szSql);
}
Delphi要想调用这样的针对C输出的函数,不能使用stdcall的调用规范,而应使用cdecl的调用规范
如何include预编译头文件到antlr生成的cpp中
Submitted by gougou on Sat, 2005-08-27 09:33在Antlr生成cpp文件时,我们可能希望添加预编译头文件StdAfx.h到cpp文件中,标准的Header开关只能把头文件include到生成的头文件,而不能是cpp文件。
要想添加头文件到cpp中,需要使用antlr cpp生成器特殊控制开关关键字pre_include_cpp,示意如下
header "pre_include_cpp" {
#include "StdAfx.h"
}
anltr中如何声明变量
Submitted by gougou on Fri, 2005-08-26 17:01.-noscript-blocked { border: 1px solid red !important; background: white url("chrome://noscript/skin/icon32.png") no-repeat left top !important; opacity: 0.6 !important; }
column_ref_2[string& szTableName, string& szColumnName]
{
string s1,s2,s3, s4="";
}
:
c:id { s1=#c->getText();}
(PERIOD c1:id { s2=#c1->getText();}
(PERIOD c2:id { s3=#c2->getText();}
(PERIOD c3:id { s4=#c3->getText();}
)?)?)?
{
if (s2=="")
{
Antlr eclipse plugin
Submitted by gougou on Thu, 2005-08-25 09:05.-noscript-blocked { border: 1px solid red !important; background: white url("chrome://noscript/skin/icon32.png") no-repeat left top !important; opacity: 0.6 !important; }
- 首先下载安装eclipse 3.1
- 然后下载安装antlr for eclipse plugin http://antlreclipse.sourceforge.net/
- 教程http://www.oursland.net/tutorials/antlr/AntlrEclipse.html
关于DailyBuild
Submitted by gougou on Thu, 2005-08-25 06:38在XP开发理念中,很重要的就是要能够Daily Build,主要的理由是频繁的发布,频繁的获得反馈。但是从实际开发过程中来看,在开发的不同阶段,对于DailyBuild的需求是不一样的。在原型开发阶段,大家都在忙着写自己的部分,所有的模块还无法组装到一起时,DailyBuild其实没有什么意义,测试人员即便拿到了DailyBuild的时候,也无法进行集成测试。
Eclipse CDT 3.0发布了
Submitted by gougou on Wed, 2005-08-24 23:33.-noscript-blocked { border: 1px solid red !important; background: white url("chrome://noscript/skin/icon32.png") no-repeat left top !important; opacity: 0.6 !important; }Eclipse CDT 3.0发布了
关键字查找窍门
Submitted by gougou on Wed, 2005-08-24 16:23.-noscript-blocked { border: 1px solid red !important; background: white url("chrome://noscript/skin/icon32.png") no-repeat left top !important; opacity: 0.6 !important; }基于Google的Suggest, 比如Sqlite, 我们可以敲Sqlite 然后从a 到 z挨个试验一遍, 就知道哪些关键字会比较人气了.
Antlr的Unicode支持
Submitted by gougou on Wed, 2005-08-24 14:11.-noscript-blocked { border: 1px solid red !important; background: white url("chrome://noscript/skin/icon32.png") no-repeat left top !important; opacity: 0.6 !important; }
Antlr从2.72起开始提供了完善的Unicode支持,首先设置charVocabulary选项,指定Unicode范围,注意antlr不支持\uFFFF,因为这个值对应于-1,被antlr用来标示结尾字符了。
在VC多线程中操作MFC界面
Submitted by gougou on Tue, 2005-08-23 11:44在VC中,MFC的界面不是线程安全的,我们不能在工作线程中直接操作界面,同时MFC中也没有提供类似于Delphi的VCL的Lock方法,要想在线程中修改界面状态,通常来说是通过发消息来实现的.
有些时候,我们可以用WM_Timer消息处理来模拟多线程的运行效果,因为WM_Timer的消息处理是一个伪多线程,其实是在主线程中运行的,所以可以直接操作界面,但是同多线程的最大区别就是当界面执行一个长周期的堵塞操作时,WM_Timer消息处理函数根本不会被执行,而线程则不会有这样的问题。
