作者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