gougou 的blog
Antlr语法文件的一些常用配置选项
由 gougou 于 星期三, 2005-08-03 14:49 发表.-noscript-blocked { border: 1px solid red !important; background: white url("chrome://noscript/skin/icon32.png") no-repeat left top !important; opacity: 0.6 !important; }
- 要想在生成的cpp代码中添加一些预定义的头文件,可以使用Header语法定义,示意如下
header {
#include <iostream> // if you want to use some cout's in the actions
ANTLR_USING_NAMESPACE(std)
ANTLR_USING_NAMESPACE(antlr)
// Global header ends here
}
XWindows的API有点恶心
由 gougou 于 星期三, 2005-08-03 14:32 发表发布Sqlite Developer 0.55
由 gougou 于 星期日, 2005-07-31 17:23 发表发布Sqlite Developer 0.55
特点
+可视化查询创建器
+数据库Database Schema设计器
+支持数据导出为word, xml, html, csv, excel
antlr之Hello World
由 gougou 于 星期五, 2005-07-29 09:57 发表最近要写一个SQL的Parser,因此需要一个Parser代码生成器,以前用过Lex 和 Yacc,但是缺点是生成的代码可读性非常差,而且生成的都是C的代码,重用性不好,所以这次准备用Antlr来实现.
* 首先下载antlr2.75,安装运行
* 然后安装JRE1.42
* 然后添加classpath c:\antlr\275\bin
* 编写一个简单的test.g
class P extends Parser;
startRule
: n:NAME
{printf("name:%s ", n->toString().c_str());}
;
class L extends Lexer;
// one-or-more letters followed by a newline
NAME: ( 'a'..'z'|'A'..'Z' )+ NEWLINE
;
NEWLINE
: '\r' '\n' // DOS
| '\n' // UNIX
;
* 运行命令java antlr.Tool test.g 将生成parser的java代码
* 要生成cpp的代码只要在test.g文件中添加一个选项就可以了
options {
将一个消息处理过程绑定到多个控件
由 gougou 于 星期四, 2005-07-28 15:14 发表在VC中,我们使用ClassWizard可以创建指定控件的消息处理函数,但是如果界面上有多个控件要处理时,需要绑定多个消息处理过程,如果消息处理过程完全一下的情况下,会造成大量的代码冗余,幸好VC中提供了基于控件ID范围设定的消息宏,可以将一个消息处理过程绑定到多个控件上,比如ON_CONTROL_RANGE。vc中只定义了一些常用的基于范围的消息绑定宏,特殊的消息范围宏,我们可以自定义来实现,下例就是一个将EN_SETFOCUS消息处理函数绑定到多个控件的宏。
用于调试的两个宏
由 gougou 于 星期五, 2005-07-08 22:42 发表不要在构造函数和析构函数中抛出异常
由 gougou 于 星期五, 2005-07-01 19:06 发表标准模版容器访问的越界检查问题
由 gougou 于 星期四, 2005-06-30 23:39 发表今天,检查一个程序Bug时发现了一个没想到的问题,C++的标准模版库为了追求效率,在使用下标访问容器内元素时,没有对容器的size作越界检查,因为对于不同类型的容器,size函数并不是一个常数时间的操作,结果导致我已经Clear的一个容器,仍然可以通过下标正确访问到已经从容器中删除的元素.折腾了我一个个小时来确认Bug的原因.