青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評(píng)論 :: 0 Trackbacks
公告
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開(kāi)發(fā)(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)
相冊(cè)
公告照片
搜索
積分與排名
積分 - 659814
排名 - 25
最新評(píng)論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫(kù)
asio 成為C++首選網(wǎng)絡(luò)庫(kù)
--linda
2.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個(gè)mingw編譯好的OrzNet庫(kù)給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯(cuò)誤(11060)
2.?SVN中邪惡的replace(10984)
3.?VS2005編譯libevent(10430)
4.?混音算法的學(xué)習(xí)與研究(10237)
5.?C調(diào)用lua腳本的效率測(cè)試(9020)
評(píng)論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯(cuò)誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
用boost::spirit實(shí)現(xiàn)一個(gè)表達(dá)式求值看上去比較簡(jiǎn)單。我這個(gè)還有點(diǎn)問(wèn)題,有空格時(shí)會(huì)解析失敗,請(qǐng)大家看看是什么原因?
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
金慶
閱讀(2458)
評(píng)論(9)
編輯
收藏
引用
所屬分類:
1. C/C++
評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
2009-03-27 17:55
空明流轉(zhuǎn)
你開(kāi)Debug模式看看呢。
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
2009-03-27 17:59
空明流轉(zhuǎn)
parse(s.c_str(), expression, *space_p)
expression = XXXXX >> eol_p
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
2009-04-03 11:32
金慶
@空明流轉(zhuǎn)
試了下,還是不對(duì)。
space_p前面加個(gè)*是什么意思?
expression以eol_p結(jié)尾肯定是不對(duì)的,因?yàn)間roup定義為(exp).
打開(kāi)上面的DEBUG宏也沒(méi)什么幫助。
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
2009-04-03 12:34
空明流轉(zhuǎn)
回頭我?guī)湍憧纯础?nbsp;
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值[未登錄](méi)
2009-04-03 21:19
可冰
將語(yǔ)法作以下修改就好了。
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] )
;
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
2009-04-04 12:18
空明流轉(zhuǎn)
@金慶
我看了下,你的rule的Paser類型應(yīng)該是不對(duì)的。rule<>是默認(rèn)的lexeme類型,而實(shí)際上,語(yǔ)法規(guī)則的應(yīng)該是Phrase Parser。
如果你不明確你要的parser類型,應(yīng)該用Grammar,讓編譯器自動(dòng)推導(dǎo)。
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
2009-04-05 14:57
金慶
@空明流轉(zhuǎn)
謝謝。
根據(jù)你的提示,我再深入看了看spirit的幫助,其中例子calc_plain.cpp用的就是grammar. 只要把這個(gè)例子中的加減乘除及壓棧動(dòng)作實(shí)現(xiàn)就是一個(gè)表達(dá)式求值。
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
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"
不知道什么原因?
回復(fù)
更多評(píng)論
#
re: 用boost::spirit實(shí)現(xiàn)的表達(dá)式求值
2010-01-14 13:18
金慶
@王漢平
我查了一下,是spirit有新舊版本區(qū)別。以上代碼是舊的使用方法(classic).
可以忽略該警告。
也可以如下更改:
-#include <boost/spirit.hpp>
+#include <boost/spirit/include/classic.hpp>
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內(nèi)存錯(cuò)誤
std::thread 中的異常會(huì)丟失調(diào)用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標(biāo)記
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
中文一区字幕
|
欧美激情国产日韩精品一区18
|
在线视频亚洲欧美
|
亚洲永久免费
|
欧美高清一区
|
亚洲欧美影院
|
欧美日韩另类字幕中文
|
国产一区二区三区奇米久涩
|
亚洲精品色婷婷福利天堂
|
欧美在线一二三四区
|
最新精品在线
|
99视频精品
|
老司机久久99久久精品播放免费
|
日韩视频免费大全中文字幕
|
欧美在线亚洲一区
|
欧美四级剧情无删版影片
|
亚洲国内精品
|
久久久久久夜
|
午夜精品一区二区三区四区
|
欧美视频一区
|
久久综合999
|
性娇小13――14欧美
|
亚洲第一级黄色片
|
免费欧美高清视频
|
久久久91精品
|
国产专区精品视频
|
亚洲欧美日韩综合一区
|
亚洲精品久久久久久下一站
|
牛牛精品成人免费视频
|
在线观看一区二区精品视频
|
99视频一区二区三区
|
欧美日韩国产成人在线
|
中日韩视频在线观看
|
久久精品九九
|
亚洲欧美另类久久久精品2019
|
一区二区三区欧美在线
|
欧美午夜不卡视频
|
亚洲一区二区三区成人在线视频精品
|
欧美一区二区三区播放老司机
|
亚洲欧美日韩久久精品
|
亚洲日本欧美在线
|
欧美在线亚洲在线
|
欧美伊人久久久久久午夜久久久久
|
久久天堂成人
|
欧美视频一区二区三区在线观看
|
一本色道久久综合亚洲精品婷婷
|
久久精品人人
|
久久福利影视
|
国产乱码精品
|
免费日韩成人
|
亚洲视频网站在线观看
|
亚洲视频在线视频
|
国产欧美日韩三区
|
久久久久国产精品www
|
久久久九九九九
|
欧美在线啊v一区
|
国产精品草草
|
亚洲视频专区在线
|
亚洲欧美日韩国产成人精品影院
|
欧美日韩成人
|
99riav1国产精品视频
|
一区二区三区四区五区精品
|
欧美人交a欧美精品
|
欧美一区二区视频在线观看
|
国产精品红桃
|
免费亚洲一区二区
|
亚洲国产一区二区三区高清
|
久久亚洲私人国产精品va
|
一个人看的www久久
|
欧美破处大片在线视频
|
亚洲日本欧美在线
|
在线性视频日韩欧美
|
欧美午夜精品理论片a级按摩
|
亚洲精品影视
|
伊人天天综合
|
亚洲一区二区三区四区中文
|
欧美午夜三级
|
亚洲专区一二三
|
一区二区日韩
|
国产精品第三页
|
欧美在线观看日本一区
|
免费在线成人
|
一本久久综合
|
国产欧美综合在线
|
久久久久女教师免费一区
|
亚洲影视在线
|
国内精品视频一区
|
欧美xxx成人
|
蜜桃久久av
|
日韩天堂av
|
蜜臀91精品一区二区三区
|
亚洲欧美成人一区二区三区
|
国产精品一二三视频
|
久久午夜影视
|
一本色道久久综合亚洲精品婷婷
|
一本色道久久综合狠狠躁篇怎么玩
|
亚洲综合三区
|
亚洲国产成人tv
|
久久激情网站
|
久久女同互慰一区二区三区
|
亚洲国产精品久久久久婷婷老年
|
欧美日韩不卡合集视频
|
久久av资源网站
|
99亚洲一区二区
|
美国十次了思思久久精品导航
|
亚洲最黄网站
|
1024日韩
|
国产日韩欧美视频
|
久久av一区二区三区
|
亚洲欧洲精品成人久久奇米网
|
性欧美暴力猛交69hd
|
国产精品视频专区
|
性欧美xxxx视频在线观看
|
欧美国产视频在线观看
|
久久久蜜臀国产一区二区
|
香蕉久久久久久久av网站
|
极品少妇一区二区三区精品视频
|
蜜桃av一区二区
|
欧美在线视频一区二区三区
|
亚洲人成人一区二区在线观看
|
另类亚洲自拍
|
欧美激情第1页
|
久久久91精品
|
欧美诱惑福利视频
|
亚洲午夜极品
|
亚洲视频免费看
|
亚洲精品资源
|
国产精品视频1区
|
欧美日韩免费观看一区
|
免费看黄裸体一级大秀欧美
|
久久国产精品一区二区三区四区
|
欧美岛国激情
|
美女免费视频一区
|
久久久综合精品
|
久久精品亚洲一区二区
|
亚洲国产裸拍裸体视频在线观看乱了
|
国产精品丝袜91
|
国产精品每日更新在线播放网址
|
欧美自拍丝袜亚洲
|
午夜视频久久久
|
性欧美暴力猛交69hd
|
性欧美xxxx大乳国产app
|
亚洲欧美制服中文字幕
|
午夜视频久久久久久
|
久久国产精品久久久久久电车
|
亚洲欧美第一页
|
小辣椒精品导航
|
久久精品中文字幕一区
|
久久久久久久999
|
久久久美女艺术照精彩视频福利播放
|
久久久久久久999精品视频
|
久久精品国产一区二区三
|
久久人91精品久久久久久不卡
|
一区二区三区www
|
亚洲自拍电影
|
久久久久99
|
欧美大胆a视频
|
欧美性猛交xxxx乱大交蜜桃
|
国产精品免费看
|
国产一区二区黄色
|
亚洲国产福利在线
|
一本色道精品久久一区二区三区
|
亚洲美女一区
|
翔田千里一区二区
|
久热精品视频在线免费观看
|
欧美一级一区
|
欧美h视频在线
|
久久综合999
|
亚洲区中文字幕
|
亚洲一区视频在线
|
鲁鲁狠狠狠7777一区二区
|
欧美精品一区二区久久婷婷
|
米奇777在线欧美播放
|
欧美久久久久久久久久
|
国产毛片精品国产一区二区三区
|
激情成人av
|
亚洲自拍都市欧美小说
|
久久综合色播五月
|
日韩视频一区二区三区在线播放
|
亚洲欧美日韩中文在线制服
|
欧美成人免费全部观看天天性色
|
国产精品爱啪在线线免费观看
|
一区二区三区在线观看欧美
|
亚洲视频一二
|
欧美成人情趣视频
|
欧美日本在线看
|
久久精品一本久久99精品
|
欧美高清在线视频观看不卡
|
亚洲午夜一二三区视频
|
麻豆九一精品爱看视频在线观看免费
|
欧美视频一区二区在线观看
|
欧美日韩播放
|
在线看日韩av
|
欧美有码在线视频
|
99re6热只有精品免费观看
|
久久激情久久
|
国产视频精品网
|
亚洲自拍另类
|
亚洲精品国产无天堂网2021
|
久久五月天婷婷
|