昨天看到 王博炜 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...)|编辑|举报|收藏