DanceFire的专栏

天地不仁,以万物为刍狗

2009年02月04日

原创 也谈表达式分析和计算


昨天看到 王博炜 Blog中《五进制》这 篇文章。其中关于5进制到10进制的转换自然没有什么意思,这篇文章给的代码主要是讨论如何进行表达式分析和计算的。作者自制了一个Stack,并且用其 形成了两个堆栈分别用于存储数值和运算符。比较典型的表达式处理的方法。从实现上看,代码有些臃肿,而且必要的优化很少,另外就是没有充分利用标准提供的 便利。比如那个Stack完全没有必要自制,STL提供的std::stack可以很好的完成任务。

而今天我要做的 是,使用boost::spirit来实现同样的表达式分析和计算。众所周知,boost是C++中质量很高的库,被称为准标准库,因为其存在的一个很重 要的目的就是为下一代C++库提供预案。目前已经有大量的boost库成为了C++标准库的一部分。我现在要用的是Boost的Spirit库。这个库可以直接在C++代码中撰写EBNF。学过编译原理的朋友应该对此都很熟悉,这是一种比堆栈更灵活的解析表达式甚至程序的方式。

如果我们要处理四则运算的表达式,那么我们只需要在C++中写入下列EBNF阅读全文>

发表于 @ 2009年02月04日 12:24:00|评论(loading...)|编辑|举报|收藏

2007年12月08日

原创 让VS 2008支持Subversion

Visual Studio 2005 有一个开源的Subversion插件,Ankhsvn (http://ankhsvn.tigris.org/),安装后,VS 2005中将内置Subversion的支持,可以直接在VS里面提交修改。我经常用它和TortoiseSVN 配合来使用Subversion,十分方便。可是升级到Visual Studio 2008后,发现Ankhsvn没有集成进来,因为目前的Ankhsvn还不支持VS2008,据说下个版本才会支持VS 2008。不过这不影响我们在Visual Studio 2008中使用Ankhsvn,我们可以自己动手修改注册表,将Ankhsvn集成进VS 2008。方法很简单。阅读全文>

发表于 @ 2007年12月08日 02:48:00|评论(loading...)|编辑|举报|收藏

2007年12月02日

原创 使用XmlWriter时请注意Encoding

这两天用一个常用编辑的软件打开一个最近更新的xml配置文件时突然报编码错误,说不支持utf-16。看到这个错误,我愣了一下,这个软件不支持utf -16的xml我是知道的,但是这个xml配置文件可是用XmlSerializer序列化的一个class,一直都是使用utf-8编码的,怎么突然出 utf-16了?用Notepad++打开这个xml,看了一下右下角的编码,显示的还是utf-8,看来文件输出没有错啊,等等,突然注意到第一行:阅读全文>

发表于 @ 2007年12月02日 21:05:00|评论(loading...)|编辑|举报|收藏

2007年11月27日

原创 Visual Studio 2008 LINQ to SQL 的Beta 2测试版和RTM正式版的差异

找了一些关于LINQ to SQL在Beta 2到RTM的差异变化,可以从这里下载pdf版本的微软正式文档。阅读全文>

发表于 @ 2007年11月27日 23:04:00|评论(loading...)|编辑|举报|收藏

2007年11月25日

原创 写了一个开源的ASP.Net的系统信息探针(适用于MS.Net 1.x/2.0和Mono 1.0/2.0)

这两天由于需要一个ASP.Net的服务器信息探针。到网上找了找,似乎没有发现什么开源的ASP.Net的系统信息探针(探测器)。由于技术含量不是很高,于是干脆自己动手丰衣足食了。 到网上找了一下各个ASP.Net系统信息探针,把功能总结了一下,基本上都实现出来了。既然实现了就别藏着掖着了,也没什么技术含量,拿出来开源好了。有谁有更好的想法可以告诉我,如果不费劲,我就加进去。 我把这个放到Google code hosting上面了,需要的可以从上面下载: http://aspnetsysinfo.googlecode.com/ 我这个ASP.Net的系统信息探针与其它探针最大的不同处,是我这个探针除了支持Windows平台的IIS服务器环境,它还支持Linux下的Mono假设的ASP.Net环境。阅读全文>

发表于 @ 2007年11月25日 12:26:00|评论(loading...)|编辑|举报|收藏

2007年11月07日

原创 C#匿名方法的应用二则–实现异常Retry机制和WinForm线程安全访问

用C# 2.0的朋友可能会经常使用匿名方法(Anonymous Methods)和匿名委托(Anonymous Delegate)。在这里我说2个比较常用的应用环境。实现Retry机制和WinForm的线程安全的访问比较优雅(elegant)的方式。阅读全文>

发表于 @ 2007年11月07日 23:16:00|评论(loading...)|编辑|举报|收藏

2007年05月13日

原创 中科院中文分词系统ICTCLAS之人名识别词典分析

论文把与人名相关的词分为了15个角色,通过词典查询,可以判断某些文字、词所属角色,然后根据模式匹配找到匹配上的名字。当我分析nr.dct的时候,却发现nr.dct并非完全按照论文所描述的进行的角色划分。以下是我对tag统计后的nr.dct的内容,能够在论文中找到含义的,我标注上了含义。阅读全文>

发表于 @ 2007年05月13日 06:13:00|评论(loading...)|编辑|举报|收藏

原创 中科院中文分词系统ICTCLAS之CSegment的GenerateWord()详细分析

本来这个函数没有必要详细分析,但是我注意到中科院论文中并没有描述这个函数、而Sinboy和吕震宇也基本上跳过这个函数不讲了,所以这个函数还没有有人详细的分析过呢。在这里,我具体的分析一下这个函数,另外,也提出一些问题供打算重写ICTCLAS的朋友来考虑。阅读全文>

发表于 @ 2007年05月13日 05:47:00|评论(loading...)|编辑|举报|收藏

2007年04月17日

原创 中科院中文分词系统ICTCLAS之NShortPath代码的详细分析

这两天我开始看ICTCLAS的实现代码了,和吕震宇的感觉完全一样,代码真的是糟糕透顶,呵呵,非常同情吕震宇和Sinboy能够那么认真地把那些代码读完。首先就是CQueue的问题,CQueue虽然叫Queue,但是它不是FIFO的Queue。CQueue元素有一个权重eWeight,这个权重如果不为0(或者说互相之间不等),那么CQueue此时的含义是按照权重由小到大排序的优先级队列。如果CQueue的所有元素的eWeight都相等,(在ICTCLAS代码里就是都为0),此时CQueue就演变为FILO的Stack,栈。阅读全文>

发表于 @ 2007年04月17日 15:15:00|评论(loading...)|编辑|举报|收藏

2007年04月11日

原创 警告:为了安全请不要随意将ASP.Net的validateRequest="false"

一个普遍的错误存在于ASP.Net程序员中,就是针对HttpRequestValidationExceptioin异常,错误的将ASP.Net页面的 validateRequest设置为false来关闭安全审核。这是一个很危险的操作。由于这种错误具有普遍性,所以在这里发一个警告,并且告知正确的处理方法。阅读全文>

发表于 @ 2007年04月11日 10:52:00|评论(loading...)|编辑|举报|收藏

Csdn Blog version 3.1a
Copyright © DanceFire