作者StubbornLin (Victor)
看板Programming
标题Re: [问题] 有没有人用过Yacc
时间Fri Feb 2 18:00:30 2007
※ 引述《[email protected] (汀)》之铭言:
: ※ 引述《[email protected] (Victor)》之铭言:
: 前者效率较好,
: 後者效率较差,
: lex/yacc 是属於前者,
: spirit 则两者皆非,
: 因为它本身就是合法的 C++ code,
: 并不需要经过制式方法转换,
: 一些 overhead 也得以避免,
: 这是它胜过 lex/yacc 的原因之一。
: > 以上,谢谢
我原本还在想= ="
可以用template和一堆有的没有的机制
搞出一套编译时期完成的parser
不用程式码产生器那种怪怪的方式完成
更优雅、更有效地解决问题
才想说可以这样做= ="
没想到boost全包了 囧rz
http://curl.haxx.se/rfc/rfc2396.txt
原本要花大约一天的时间去K规格写出一个URI Parser
拿去花一天编译和K boost的Docmuent果然值得 XDDDD
现在正规表示法可以用了 感觉超有快感的 XDDD
boost好了 URI Parser也在一瞬间完成了
using namespace boost;
using namespace std;
regex expression("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?",regbase::normal|regbase::icase);
string s="
http://www.google.com.tw/search?q=stl+deque&ie=utf-8&oe=utf-8&rls=org.mozilla:zh-TW:official&client=firefox#abc";
deque<string> result;
regex_split(std::back_inserter(result),s,expression);
copy(result.begin(), result.end(), ostream_iterator<string>(cout,"\n"));
正规表示法万岁 XDD
在没有正规表示法可以用之前= ="
遇到处理文字的都会害怕 想到要跟一堆回圈 char和其中生出来的bug奋战
就全身无力,有了正规表示法可以省不少时间 XD
--
VICTOR工作室 |
PTT游戏设计版隆重开幕!
|
不管是新手老手,程式美工音乐企划....
URL :
http://www.kinmen.info/vic/ |
都欢迎来游戏设计版参与讨论 XD
|
战略高手>
C/C++ |
GameTopics>
Visual Basic 6.0 |
GameDesign
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.65.41