[問題] 有沒有人用過Yacc

看板Programming作者 (Victor)時間18年前 (2007/02/01 22:09), 編輯推噓4(407)
留言11則, 3人參與, 最新討論串1/5 (看更多)
我這幾天都在跟語法奮戰 為了我的網頁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

02/01 22:38, , 1F
Yacc 產生的是C程式碼,讓你併到你的程式裡
02/01 22:38, 1F

02/01 22:38, , 2F
效率還 OK,不過它對正規語言檢查很嚴,所
02/01 22:38, 2F

02/01 22:39, , 3F
以造出來的 parser 沒啥容錯性喔。
02/01 22:39, 3F

02/01 23:05, , 4F
建議不要硬幹, 用Boost or Yacc可以讓你
02/01 23:05, 4F

02/01 23:06, , 5F
讓你少死很多腦細胞
02/01 23:06, 5F

02/01 23:07, , 6F
不過你那需求好像用不到yacc,用lex就好
02/01 23:07, 6F

02/02 01:03, , 7F
抓網頁連結應該可以用 boost::regex
02/02 01:03, 7F

02/02 01:03, , 8F
先設定好 pattern, 然後用regex_iterator
02/02 01:03, 8F

02/02 01:03, , 9F
iterate 一次應該就把 token都抓出來了
02/02 01:03, 9F

02/02 12:59, , 10F
基本上, 我不喜歡用 LR 系列的 parsing
02/02 12:59, 10F

02/05 17:01, , 11F
最好還是改成 regex_(或token_)iterator
02/05 17:01, 11F
文章代碼(AID): #15mVIKDQ (Programming)
文章代碼(AID): #15mVIKDQ (Programming)