青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
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)
相冊
公告照片
搜索
積分與排名
積分 - 660742
排名 - 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" 錯誤(11064)
2.?SVN中邪惡的replace(10988)
3.?VS2005編譯libevent(10443)
4.?混音算法的學習與研究(10247)
5.?C調用lua腳本的效率測試(9022)
評論排行榜
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 © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
国产日韩av高清
|
性视频1819p久久
|
在线一区视频
|
欧美在线视频免费
|
国产日韩欧美在线视频观看
|
亚洲中无吗在线
|
在线视频亚洲欧美
|
国产精品成人在线
|
午夜视频在线观看一区
|
亚洲视频在线观看
|
欧美国产亚洲精品久久久8v
|
亚洲欧洲视频
|
亚洲第一中文字幕在线观看
|
亚洲综合视频网
|
欧美精品www在线观看
|
99精品国产热久久91蜜凸
|
亚洲精品久久久久
|
欧美日韩亚洲另类
|
欧美一级网站
|
久久国产黑丝
|
最新亚洲一区
|
av不卡在线观看
|
国产欧美日韩伦理
|
免费观看成人
|
欧美日韩国产一中文字不卡
|
亚洲一级黄色av
|
亚洲性夜色噜噜噜7777
|
亚洲欧美不卡
|
国产伊人精品
|
麻豆乱码国产一区二区三区
|
欧美成人精品一区
|
亚洲一区二区三区乱码aⅴ
|
亚洲欧美一区二区原创
|
一区二区亚洲欧洲国产日韩
|
91久久黄色
|
国产欧美一区二区三区在线老狼
|
蜜桃av一区二区
|
欧美视频免费在线
|
亚洲欧美一级二级三级
|
久久av一区二区三区
|
亚洲老司机av
|
久久gogo国模裸体人体
|
亚洲视频欧美视频
|
毛片一区二区
|
午夜日韩电影
|
欧美国产亚洲精品久久久8v
|
欧美有码在线观看视频
|
麻豆成人在线
|
久久经典综合
|
欧美中文在线视频
|
亚洲视频一区二区
|
久久综合久久美利坚合众国
|
午夜亚洲性色福利视频
|
欧美大片免费观看在线观看网站推荐
|
亚洲免费伊人电影在线观看av
|
久久久久久久综合狠狠综合
|
亚洲午夜一区
|
欧美精品成人一区二区在线观看
|
久久亚洲高清
|
欧美三级黄美女
|
久久婷婷丁香
|
国产精品第三页
|
久久久久中文
|
国产精品亚洲第一区在线暖暖韩国
|
亚洲电影在线观看
|
国语自产精品视频在线看一大j8
|
欧美日韩成人在线播放
|
免费不卡欧美自拍视频
|
国产亚洲va综合人人澡精品
|
亚洲色图自拍
|
亚洲曰本av电影
|
欧美日韩精品免费观看视一区二区
|
亚洲欧美日韩精品久久
|
一区二区三区精品视频
|
欧美激情视频一区二区三区免费
|
欧美成人a∨高清免费观看
|
韩日精品视频
|
aa成人免费视频
|
国内精品美女在线观看
|
欧美一区二区久久久
|
久久国产福利
|
国模精品一区二区三区色天香
|
亚洲一区亚洲二区
|
久久国产精品久久久久久
|
亚洲国产成人porn
|
日韩亚洲精品电影
|
欧美三级视频在线
|
亚洲福利国产精品
|
亚洲美女视频网
|
欧美日韩国产在线播放
|
亚洲精品一区在线观看
|
亚洲精品乱码久久久久久久久
|
免费观看国产成人
|
日韩亚洲视频在线
|
亚洲性夜色噜噜噜7777
|
国产精品麻豆va在线播放
|
在线一区二区三区四区
|
久久国产精品黑丝
|
一区在线免费
|
欧美高清视频
|
亚洲一区二区免费
|
久久久久久久综合狠狠综合
|
永久免费毛片在线播放不卡
|
欧美精品国产精品
|
一本色道久久综合狠狠躁的推荐
|
在线视频你懂得一区二区三区
|
欧美国产高清
|
性久久久久久久久
|
欧美激情一区二区三区四区
|
制服丝袜激情欧洲亚洲
|
国产日韩精品在线播放
|
麻豆精品在线视频
|
亚洲视频欧美视频
|
亚洲国产高清aⅴ视频
|
亚洲欧美一区二区三区在线
|
影音先锋中文字幕一区
|
欧美日韩岛国
|
欧美一区二区播放
|
亚洲欧洲视频在线
|
久久国产精品久久久久久
|
最新亚洲电影
|
国内精品伊人久久久久av影院
|
欧美国产极速在线
|
亚洲视频在线观看
|
久久久99国产精品免费
|
一区二区三区日韩欧美精品
|
国内成人自拍视频
|
国产精品久久久久aaaa
|
欧美成人一品
|
久久久久综合
|
亚洲欧美久久久
|
99国产精品久久久久久久久久
|
免费h精品视频在线播放
|
亚洲一区二区伦理
|
亚洲精品网站在线播放gif
|
久久久国产精品一区
|
亚洲欧美日韩国产一区二区三区
|
亚洲欧洲日韩综合二区
|
一区二区三区在线视频免费观看
|
国产精品卡一卡二
|
欧美日韩一区精品
|
欧美国产亚洲精品久久久8v
|
久久久免费精品视频
|
91久久中文
|
亚洲第一在线综合网站
|
美日韩在线观看
|
老色批av在线精品
|
久久精品日韩欧美
|
久久精品国产久精国产一老狼
|
亚洲欧美另类综合偷拍
|
亚洲一区不卡
|
亚洲一本视频
|
亚洲伊人伊色伊影伊综合网
|
99re热这里只有精品视频
|
亚洲精品综合精品自拍
|
亚洲视频免费
|
久久成人羞羞网站
|
欧美一区二区三区久久精品茉莉花
|
亚洲国产精品视频
|
**性色生活片久久毛片
|
亚洲全黄一级网站
|
亚洲午夜电影
|
久久久国产亚洲精品
|
欧美韩日视频
|
在线亚洲一区
|
久久久久久综合
|
欧美日韩激情小视频
|
国产精品实拍
|
亚洲激情婷婷
|
亚洲一区影音先锋
|
麻豆av一区二区三区
|
亚洲黄色在线观看
|
亚洲欧美日韩国产中文
|
老牛影视一区二区三区
|
欧美视频精品在线
|
尤物在线观看一区
|
亚洲愉拍自拍另类高清精品
|
久久男人资源视频
|
亚洲美女av电影
|
欧美中文在线观看
|
欧美日韩综合精品
|
在线日韩日本国产亚洲
|
亚洲在线成人
|
亚洲国产精品精华液2区45
|
在线一区二区三区四区五区
|
久久中文字幕导航
|
国产精一区二区三区
|
99国产精品视频免费观看
|
欧美一区二区网站
|
亚洲精选视频免费看
|
久久久蜜桃一区二区人
|
国产精品日韩欧美综合
|
99视频精品在线
|
蜜桃视频一区
|
欧美一区二区三区四区在线观看地址
|
欧美久久电影
|
91久久精品一区
|
免费在线成人av
|
久久国产欧美精品
|
国产乱码精品一区二区三
|