C++Builder2009装了Update4以后发现支持Spirit了

Waiting4you 2009-07-21 08:50:29
记得没打补丁之前试Boost的Spirit是不能用的,装了补丁后发现已经自带Spirit了,经测试,加入预定义:
BOOST_NO_MEMBER_TEMPLATE_FRIENDS
BOOST_TR1_USE_OLD_TUPLE
之后,下面这段代码可以编译通过。下面这段代码运行后输入一个四则运算字符串(如12*(1-20)/21),回车后输出结果。
#include <iostream>
#include <boost/spirit.hpp>
#include <boost/spirit/phoenix.hpp>
using namespace std;
using namespace boost::spirit;
using namespace phoenix;

struct calc_closure : boost::spirit::closure<calc_closure, double>
{
member1 val;
};

const char* StrCalc(const char* s, double *out)
{
rule<phrase_scanner_t, calc_closure::context_t> factor, term, exp;

factor = real_p[factor.val = arg1] | ('(' >> exp[factor.val = arg1] >> ')');
term = factor[term.val = arg1] >> *(('*' >> factor[term.val *= arg1]) | ('/' >> factor[term.val /= arg1]));
exp = term[exp.val = arg1] >> *(('+' >> term[exp.val += arg1]) | ('-' >> term[exp.val -= arg1]));

parse_info<> r = parse( s , exp[assign_a(*out)], space_p);

return r.full? NULL : r.stop;
}

int main()
{
string s;
while(getline(cin,s) && s!="q")
{
double result;
const char* p = StrCalc(&s[0], &result);
if(p==NULL)
{
cout << " = " << result << endl;
}
else
{
cout << string(size_t(p - &s[0]), ' ') << '^' << endl;
}
}

return 0;
}


不过ASIO好象还是有点问题,不知道有没有人找到使用的方法。
...全文
244 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
FieldTest版本。
Richardw 2009-07-28
  • 打赏
  • 举报
回复
2010这个图是真的还是同好制作的?
i_love_pc 2009-07-27
  • 打赏
  • 举报
回复
顶毛毛...
liuyanghejerry 2009-07-24
  • 打赏
  • 举报
回复
我初学,连Spirit是啥都不知道……哎……
flymoon99 2009-07-23
  • 打赏
  • 举报
回复
占个分,来围观LZ和2L
EagleFew 2009-07-23
  • 打赏
  • 举报
回复
占个位置, 赚分.

顺便围观2楼的
mgsg 2009-07-23
  • 打赏
  • 举报
回复
支持!
ydlchina 2009-07-23
  • 打赏
  • 举报
回复
也不知现在2010是不是最终版本
我不懂电脑 2009-07-22
  • 打赏
  • 举报
回复
好,有改进。
银点 2009-07-22
  • 打赏
  • 举报
回复
楼主真有米(可用分)啊,支援俺点
我来看看CB 2009-07-22
  • 打赏
  • 举报
回复
开发代号?
preserve 2009-07-22
  • 打赏
  • 举报
回复
看weaver单词的意思就知道了
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zlf19871014 的回复:]
估计开发者喜欢玩蜘蛛纸牌,哈哈哈哈
[/Quote]

不知道他水平如何?蜘蛛纸牌4色,我就从来没玩成过一次。:)
hnzlk 2009-07-22
  • 打赏
  • 举报
回复
不错,如果觉得行,我就升级了。
逐渐变晕 2009-07-21
  • 打赏
  • 举报
回复
估计开发者喜欢玩蜘蛛纸牌,哈哈哈哈
  • 打赏
  • 举报
回复
不错,这玩意好用。
hemiya 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fairchild811 的回复:]
2010为啥是只蜘蛛
[/Quote]
也玩蜘蛛平台,交火?
fairchild811 2009-07-21
  • 打赏
  • 举报
回复
2010为啥是只蜘蛛
hemiya 2009-07-21
  • 打赏
  • 举报
回复
mxmkeep 2009-07-21
  • 打赏
  • 举报
回复
噢,刚学会用C++ builder6
支持!
加载更多回复(4)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧