07 2010 档案

从C++类成员函数作为回调函数说起
摘要:在网络消息处理中经常要用到回调机制。例如处理异步网络操作的前摄器设计模式(Proactor),(可以参考 《C++ 网络编程 卷2》中关于ACE Proactor模式实现 )。异步的 Web 服务器将这样来利用前摄器模式:首先让 Web 服务器向 OS 发出异步操作,并将回调方法登记到 Completion Dispatcher(完成分派器),后者将在操作完成时通知 Web 服务器。于是 OS 代表 Web 服务器执行操作,并随即在一个周知的地方将结果排队。Completion Dispatcher 负责使完成通知出队,并执行适当的、含有应用特有的 Web 服务器代码的回调。 使用前摄器模式的 阅读全文

posted @ 2010-07-29 00:20 NBSTAR 阅读(640) 评论(0) 推荐(0)

C++工厂模式实现与改进小结
摘要:TODO: 阅读全文

posted @ 2010-07-28 23:24 NBSTAR 阅读(126) 评论(0) 推荐(0)

为什么C++成员函数不能作为C-Style回调函数?
摘要:1.为什么C++成员函数不能作为C-Style回调函数?在C语言中,通过注册函数指针的方式,来实现函数回调。如下是一个的例子。//回调函数指针typedef int (*functionPointer_t)(int*); int myFunc1(int *arg){ *arg = 100; return 0;}void CallerFunc(functionPointer_t fp){ int arg = 0; fp(&arg); //这里通过函数指针调用被调函数}int main(){ CallerFunc(myMemberFunc1); return 0... 阅读全文

posted @ 2010-07-28 22:36 NBSTAR 阅读(238) 评论(0) 推荐(0)

词法分析生成器 之 lexertl 【4】添加文件解析行号功能
摘要:目标: 将文件名和行号信息存在Token中以便词法分析和语法分析时输出更详细的信息。这在调试你的分析器时将会有非常大帮助。做法: 记得之前 Boost.Spirit 有一个 file_iterator类和position_iterator类,仔细看了一下,确实满足 lexertl match_results类 对迭代器的要求。 好,那就写几行代码验证一下吧。#include "lexertl/generator.hpp"#include "lexertl/lookup.hpp"#include "lexertl/rules.hpp"# 阅读全文

posted @ 2010-07-19 00:46 NBSTAR 阅读(593) 评论(0) 推荐(0)

词法分析生成器 之 Lexertl 【3】配合bison工作
摘要:Technorati 标签: boost lexerTechnorati 标签: lexertl,bison,lexer analyser,grammer analyser众所周知,bison是C/C++领域最著名的开源语法生成器之一。并且一直保持着活跃的开发状态。当前发表的最新稳定版本为2.4.2(2010-03-20)。在本节我们将lexertl和bison结合在一起,生成一个简单的分析器。 其中 lexertl 负责生成词法分析器,而 bison 负责生成语法分析器。本示例的语法描述文件取自Bison自带的生成C++代码例子,说明文档在 http://www.gnu.org/softwa 阅读全文

posted @ 2010-07-17 00:30 NBSTAR 阅读(234) 评论(0) 推荐(0)

windows 下 bison 命令行调用
摘要:目标:将bison集成到Visual studio中做法:以cygwin下bison为例。1.新建一个批处理文件 bison.bat,内如如下:@set bison_dir="E:/SDK/cygwin/bin" @set Path=Path;%bison_dir% @REM bison command line @REM Usage @REM bison.bat %grammer_file_name @REM @REM bison parameters used in our command line @REM -l don't generate `#line&# 阅读全文

posted @ 2010-07-16 19:47 NBSTAR 阅读(369) 评论(0) 推荐(0)

词法分析生成器 之 Lexertl 【1】简介
摘要:Technorati 标签: lexertl,boost lexer,lexical analyser1. 简介lexertl是一个现代的词法分析生成器(lexical analyser generator)。传统意义上的词法分析生成器(如lex)都以生成源代码作为输出,有的甚至只支持生成一种编程语言的源代码。而lexertl使用正则表达式作为输入,输出为包含多个DFA的状态机。与flex不同的是,lexertl默认情况下不产生源代码,而是所写词法分析器可直接编译并立即执行。(也即词法分析器描述文件即C++源代码。)这就使得开发者可以快速开发词法分析器。Lexertl试图通过导出状态机来提供更 阅读全文

posted @ 2010-07-16 00:50 NBSTAR 阅读(430) 评论(0) 推荐(0)

代码格式化美化工具推荐
摘要:UniversalIndentGUI http://universalindent.sourceforge.net/FeaturesLive preview. Directly see how the code is affected by a indenter parameter Configurable ini file, open for many indenters. Not yet known indenters can be added by creating a new ini file for them Supported and included indenters righ 阅读全文

posted @ 2010-07-16 00:42 NBSTAR 阅读(206) 评论(0) 推荐(0)

推荐链接
摘要:1. 如何使用live writer客户端来发布CSDN的博客文章? 阅读全文

posted @ 2010-07-16 00:35 NBSTAR 阅读(97) 评论(0) 推荐(0)

我所关注的
摘要:我所关注的开源代码库1. Boost Log2. Boost Lexer 阅读全文

posted @ 2010-07-15 23:39 NBSTAR 阅读(134) 评论(0) 推荐(0)

导航