Blogs

Antlr的Unicode支持

.-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界面

在VC中,MFC的界面不是线程安全的,我们不能在工作线程中直接操作界面,同时MFC中也没有提供类似于Delphi的VCL的Lock方法,要想在线程中修改界面状态,通常来说是通过发消息来实现的.

有些时候,我们可以用WM_Timer消息处理来模拟多线程的运行效果,因为WM_Timer的消息处理是一个伪多线程,其实是在主线程中运行的,所以可以直接操作界面,但是同多线程的最大区别就是当界面执行一个长周期的堵塞操作时,WM_Timer消息处理函数根本不会被执行,而线程则不会有这样的问题。

发布Sqlite Developer 0.67


更新历史

追看的小说目录

  • 亵渎
  • 魔盗
  • 魔武士
  • 随波逐流之一代军师
  • 龙战
  • 微酸学园ABC
  • 新宋
  • 虾蛊
  • 映秀十年事
  • 龙战士传说
  • <

装了一个SubVersion

感觉SubVersion的安装还是挺简单的

  • 先建立一个路径,比如d:\SecureLayer
  • 安装TortoiseSvn,在资源管理器中选中指定的目录,用右键菜单创建一个Repository。我选的是标准的文件系统模式。
  • 在D:\SecureLayer目录下自动建立的Conf子目录中有一个svnseve.conf文件,修改为如下:
    [general]
    anon-access = read
    auth-access = write
    password-db = passwd
    # realm = My First Repository
    然后编辑passwd文件,指定用户及其访问密码
  • 然后选中要导入的代码目录,比如SL\SecureLayer,Import进Repository。
  • 这样建好的只能在本机使用,要想让人能通过web访问Subversion的Repository,需要启动svnserve的守候进程,命令行示意 svnserve -d -r d:\SecureLayer,启动服务后,就可以通过svn://192.168.1.xx/SecureLayer Url来导出代码了
  • 要想在VS2003中方面对代码进行管理,需要安装AnkhSVN插件,装好后点击Tool | AnkhSVN的Check-out命令就可以从建好的Repository中签出代码了.
  • 签出代码后,使用VS打开相应的项目,AnkhSVN会自动提示是否同项目绑定,绑定后就可以通过各种插件的快捷菜单对代码进行管理了.

发布Sqlite Developer 0.60

更新历史

Antlr语法文件的一些常用配置选项

.-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有点恶心

最近在把一个原来在Unix上的XWindows的程序移植到Windows,看了一下XWindows的API,感觉好恶心,传参数使用了大量的数组,感觉比Windows的API还要恶心。比较郁闷 :sick

发布Sqlite Developer 0.55

发布Sqlite Developer 0.55

特点

+支持Sqlite 语法高亮
+可视化查询创建器

+数据库Database Schema设计器

+支持数据导出为word, xml, html, csv, excel

antlr之Hello World

最近要写一个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 {

同步内容