作者StubbornLin (Victor)
看板Programming
标题[问题] 有没有人用过Yacc
时间Thu Feb 1 22:09:22 2007
我这几天都在跟语法奋战
为了我的网页bot能够分析网页找出连结等等工作
我花了非常大的力气写出了Parser
写到後来看见语法都有点想吐 = =|||
接着...又遇到一个问题
连URI都要写个Parser.....
虽然说,URI算很简单了,可是真的要详细的照规格写也会花不少力气
我就在想,我做的一直是重覆的工作
应该有办法简化这样的工作
於是我发现了Yacc & Lex这个东东
一个很有趣的东西,透过一些语法,来产生分析语法的程式
有人用过吗?
问题来了...,这样产生出来的程式效率如何?
还有....,它正规表示法是产生C程式来达成
还是动态用C提供函式供呼叫?
虽然说Boost有提供正规表示法可以用,我一直都还没用过= ="
就像当初对STL有点疑问,那样的效能好吗?
用正规表示法分析出来的东西会比手写的快吗?
以上,谢谢
--
VICTOR工作室 |
PTT游戏设计版隆重开幕!
|
不管是新手老手,程式美工音乐企划....
URL :
http://www.kinmen.info/vic/ |
都欢迎来游戏设计版参与讨论 XD
|
战略高手>
C/C++ |
GameTopics>
Visual Basic 6.0 |
GameDesign
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.67.233
1F:推 ppaass:Yacc 产生的是C程式码,让你并到你的程式里122.124.101.115 02/01 22:38
2F:→ ppaass:效率还 OK,不过它对正规语言检查很严,所122.124.101.115 02/01 22:38
3F:→ ppaass:以造出来的 parser 没啥容错性喔。122.124.101.115 02/01 22:39
4F:推 UNARYvvv:建议不要硬干, 用Boost or Yacc可以让你220.132.114.113 02/01 23:05
5F:→ UNARYvvv:让你少死很多脑细胞220.132.114.113 02/01 23:06
6F:→ UNARYvvv:不过你那需求好像用不到yacc,用lex就好220.132.114.113 02/01 23:07
7F:→ UNARYvvv:抓网页连结应该可以用 boost::regex220.132.114.113 02/02 01:03
8F:→ UNARYvvv:先设定好 pattern, 然後用regex_iterator220.132.114.113 02/02 01:03
9F:→ UNARYvvv:iterate 一次应该就把 token都抓出来了220.132.114.113 02/02 01:03
10F:推 halajohn:基本上, 我不喜欢用 LR 系列的 parsing 219.87.157.82 02/02 12:59
11F:推 UNARYvvv:最好还是改成 regex_(或token_)iterator220.132.114.113 02/05 17:01