青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 660421
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11062)
2.?SVN中邪惡的replace(10988)
3.?VS2005編譯libevent(10436)
4.?混音算法的學習與研究(10242)
5.?C調用lua腳本的效率測試(9020)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
用boost::spirit實現的表達式求值
用boost::spirit實現一個表達式求值看上去比較簡單。我這個還有點問題,有空格時會解析失敗,請大家看看是什么原因?
123*34+2323/324
parsing succeeded
result = 4189
2 + 3
parsing failed
#include <iostream>
#include <stack>
#include <functional>
#include <boost/function.hpp>
// #define BOOST_SPIRIT_DEBUG
#include <boost/spirit.hpp>
using namespace std;
stack<int> evaluationStack;
struct Push
{
void operator()(int d) const
{
evaluationStack.push(d);
}
};
void doOp(boost::function<int(int, int)> op)
{
int rhs = evaluationStack.top();
evaluationStack.pop();
int lhs = evaluationStack.top();
evaluationStack.pop();
int result = op(lhs, rhs);
evaluationStack.push(result);
}
void add2(char const*, char const*) { doOp(std::plus<int>()); }
void sub2(char const*, char const*) { doOp(std::minus<int>()); }
void mul2(char const*, char const*) { doOp(std::multiplies<int>()); }
void div2(char const*, char const*) { doOp(std::divides<int>()); }
int main()
{
using namespace boost::spirit;
/*
group ::= '(' expression ')'
factor ::= integer | group
term ::= factor (('*' factor) | ('/' factor))*
expression ::= term (('+' term) | ('-' term))*
Spirit:
group = '(' >> expression >> ')';
factor = integer | group;
term = factor >> *(('*' >> factor) | ('/' >> factor));
expression = term >> *(('+' >> term) | ('-' >> term));
*/
rule<> group, factor, term, expression;
group = '(' >> expression >> ')';
factor = int_p[Push()] | group;
term = factor
>> *( ('*' >> factor) [&mul2]
| ('/' >> factor) [&div2] )
;
expression = term
>> *( ('+' >> term) [&add2]
| ('-' >> term) [&sub2] )
;
string s;
while (getline(cin, s))
{
if (parse(s.c_str(), expression, space_p).full)
{
cout << "parsing succeeded\n";
cout << "result = " << evaluationStack.top();
evaluationStack.pop();
}
else
{
cout << "parsing failed";
}
cout << endl;
}
}
posted on 2009-03-27 16:24
金慶
閱讀(2459)
評論(9)
編輯
收藏
引用
所屬分類:
1. C/C++
評論
#
re: 用boost::spirit實現的表達式求值
2009-03-27 17:55
空明流轉
你開Debug模式看看呢。
回復
更多評論
#
re: 用boost::spirit實現的表達式求值
2009-03-27 17:59
空明流轉
parse(s.c_str(), expression, *space_p)
expression = XXXXX >> eol_p
回復
更多評論
#
re: 用boost::spirit實現的表達式求值
2009-04-03 11:32
金慶
@空明流轉
試了下,還是不對。
space_p前面加個*是什么意思?
expression以eol_p結尾肯定是不對的,因為group定義為(exp).
打開上面的DEBUG宏也沒什么幫助。
回復
更多評論
#
re: 用boost::spirit實現的表達式求值
2009-04-03 12:34
空明流轉
回頭我幫你看看。
回復
更多評論
#
re: 用boost::spirit實現的表達式求值[未登錄]
2009-04-03 21:19
可冰
將語法作以下修改就好了。
rule<> group, factor, term, expression, integer;
group = * space_p >> '(' >> expression >> * space_p >> ')' >> * space_p;
integer = * space_p >> int_p[Push()] >> * space_p;
factor = integer | group;
term = factor
>> *( (* space_p >> '*' >> factor) [&mul2]
| (* space_p >> '/' >> factor) [&div2] )
;
expression = term
>> *( (* space_p >> '+' >> term) [&add2]
| (* space_p >> '-' >> term) [&sub2] )
;
回復
更多評論
#
re: 用boost::spirit實現的表達式求值
2009-04-04 12:18
空明流轉
@金慶
我看了下,你的rule的Paser類型應該是不對的。rule<>是默認的lexeme類型,而實際上,語法規則的應該是Phrase Parser。
如果你不明確你要的parser類型,應該用Grammar,讓編譯器自動推導。
回復
更多評論
#
re: 用boost::spirit實現的表達式求值
2009-04-05 14:57
金慶
@空明流轉
謝謝。
根據你的提示,我再深入看了看spirit的幫助,其中例子calc_plain.cpp用的就是grammar. 只要把這個例子中的加減乘除及壓棧動作實現就是一個表達式求值。
回復
更多評論
#
re: 用boost::spirit實現的表達式求值
2010-01-14 12:40
王漢平
求教:你好,用DEVCPP 編譯你上面的例子,總提示In file included from jsq.cpp:7:
D:/Dev/Dev-Cpp/include/boost/spirit.hpp:18:4: warning: #warning "This header is deprecated. Please use: boost/spirit/include/classic.hpp"
不知道什么原因?
回復
更多評論
#
re: 用boost::spirit實現的表達式求值
2010-01-14 13:18
金慶
@王漢平
我查了一下,是spirit有新舊版本區別。以上代碼是舊的使用方法(classic).
可以忽略該警告。
也可以如下更改:
-#include <boost/spirit.hpp>
+#include <boost/spirit/include/classic.hpp>
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內存錯誤
std::thread 中的異常會丟失調用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
国产精品99久久久久久久女警
|
国产精品美女xx
|
今天的高清视频免费播放成人
|
久久九九免费视频
|
久久久成人网
|
亚洲精品三级
|
99热免费精品
|
日韩一二三在线视频播
|
午夜精品福利视频
|
狠狠色狠狠色综合日日五
|
欧美成人国产一区二区
|
欧美精品久久一区二区
|
亚洲欧美日韩国产成人
|
久久精品论坛
|
999亚洲国产精
|
亚洲男人影院
|
亚洲精品日韩精品
|
午夜视频在线观看一区二区三区
|
一区在线免费
|
日韩亚洲欧美一区二区三区
|
国产精品外国
|
亚洲国产精品久久久久秋霞不卡
|
欧美日韩大片
|
久久偷看各类wc女厕嘘嘘偷窃
|
欧美激情成人在线
|
欧美中文字幕在线观看
|
欧美国产日韩a欧美在线观看
|
亚洲欧美视频一区
|
欧美jizz19性欧美
|
久久精品国产99
|
欧美日韩国产一区精品一区
|
久久午夜av
|
国产精品久久久久三级
|
欧美激情性爽国产精品17p
|
国产精品蜜臀在线观看
|
最新成人av在线
|
激情综合色综合久久综合
|
亚洲一区精品在线
|
99re视频这里只有精品
|
老司机免费视频一区二区
|
欧美亚洲专区
|
国产精品theporn
|
91久久精品国产91久久性色
|
精品动漫3d一区二区三区免费版
|
亚洲无玛一区
|
亚洲视频在线一区
|
欧美成年人视频
|
免费成人激情视频
|
国语自产精品视频在线看抢先版结局
|
亚洲国产日韩在线一区模特
|
亚洲靠逼com
|
亚洲区第一页
|
美日韩精品视频免费看
|
噜噜爱69成人精品
|
国内精品伊人久久久久av一坑
|
亚洲电影一级黄
|
影音先锋久久
|
久久久久国内
|
免费在线播放第一区高清av
|
国内精品久久久久影院优
|
午夜在线成人av
|
香蕉国产精品偷在线观看不卡
|
欧美一级专区
|
久久精品国产亚洲精品
|
国产一区二区毛片
|
久久精品视频免费
|
麻豆av一区二区三区
|
国产亚洲精久久久久久
|
亚洲人成人77777线观看
|
美女日韩在线中文字幕
|
欧美激情黄色片
|
亚洲三级网站
|
欧美88av
|
亚洲精品一区二区在线
|
日韩视频一区二区三区
|
欧美精品一区二区三区视频
|
日韩视频免费观看高清完整版
|
av不卡在线
|
欧美手机在线
|
午夜精品www
|
久久影院午夜片一区
|
最近中文字幕日韩精品
|
欧美激情视频一区二区三区在线播放
|
一本久久综合
|
欧美视频日韩视频
|
小嫩嫩精品导航
|
久久精品综合一区
|
亚洲国产精品一区二区www
|
欧美电影免费
|
亚洲无玛一区
|
欧美成人激情在线
|
亚洲四色影视在线观看
|
国产精品一香蕉国产线看观看
|
久久精品人人爽
|
亚洲三级免费电影
|
欧美在线国产
|
91久久视频
|
国产精品一级久久久
|
久久性色av
|
亚洲午夜在线
|
亚洲电影毛片
|
欧美怡红院视频一区二区三区
|
激情另类综合
|
国产精品theporn
|
久久综合伊人77777
|
一区二区三区国产在线
|
嫩草国产精品入口
|
亚洲免费网址
|
亚洲精品美女在线
|
国产日韩1区
|
欧美日韩国内
|
美女国内精品自产拍在线播放
|
一本久久精品一区二区
|
欧美大片在线影院
|
欧美一区二区三区精品
|
9l国产精品久久久久麻豆
|
极品日韩av
|
国产精品一区在线观看
|
欧美女同在线视频
|
老司机精品视频一区二区三区
|
亚洲欧美日韩视频一区
|
日韩亚洲精品视频
|
亚洲福利免费
|
蜜桃av一区二区
|
久久久久久久久久久久久女国产乱
|
亚洲私人影吧
|
一区二区欧美视频
|
亚洲精品乱码久久久久久蜜桃麻豆
|
裸体丰满少妇做受久久99精品
|
亚洲精品在线一区二区
|
在线观看日韩
|
欧美成人午夜免费视在线看片
|
久久爱另类一区二区小说
|
亚洲字幕一区二区
|
一区二区三区欧美视频
|
99精品国产99久久久久久福利
|
欧美激情成人在线视频
|
蜜桃久久精品乱码一区二区
|
久久青草福利网站
|
久久男人av资源网站
|
久久精品二区三区
|
久久国产精品久久久久久久久久
|
午夜亚洲一区
|
亚洲自啪免费
|
欧美影院久久久
|
欧美在线日韩精品
|
久久噜噜噜精品国产亚洲综合
|
久久精品国产一区二区电影
|
久久久久久久综合色一本
|
久久人人97超碰国产公开结果
|
久久亚洲不卡
|
毛片一区二区
|
亚洲国产成人精品视频
|
91久久精品国产91久久性色tv
|
亚洲大片精品永久免费
|
亚洲精品国偷自产在线99热
|
日韩写真视频在线观看
|
亚洲一区二区三区免费观看
|
午夜精品久久久久久久99黑人
|
久久www成人_看片免费不卡
|
久久久夜夜夜
|
欧美精品久久久久久久久老牛影院
|
欧美日韩国产在线一区
|
国产精品日韩在线播放
|
国内精品写真在线观看
|
亚洲国产一区二区三区a毛片
|
一本久久综合亚洲鲁鲁五月天
|
亚洲综合另类
|
免费日本视频一区
|
亚洲另类春色国产
|
亚洲欧美中文日韩v在线观看
|
久久九九电影
|
欧美人在线观看
|
国产午夜亚洲精品不卡
|
91久久在线
|
欧美亚洲三区
|
亚洲国产成人精品视频
|
亚洲在线一区二区三区
|
久久久久久久久久久一区
|
欧美日韩国产美女
|
国产一区二区无遮挡
|
一区二区三区国产在线
|
久久女同精品一区二区
|
亚洲精一区二区三区
|
久久久久久久高潮
|
国产精品高清在线
|
亚洲韩国青草视频
|
久久国产高清
|
亚洲乱码国产乱码精品精可以看
|
欧美一站二站
|
欧美三级欧美一级
|
亚洲国产欧美一区二区三区久久
|
亚洲一区二区三区免费观看
|
麻豆精品在线播放
|
亚洲素人在线
|
欧美日韩亚洲成人
|
亚洲精品免费网站
|
鲁鲁狠狠狠7777一区二区
|
亚洲综合视频1区
|
欧美日韩精品综合在线
|