Re: [問題] 有沒有人用過Yacc
※ 引述《StubbornLin.bbs@ptt.cc (Victor)》之銘言:
> 於是我發現了Yacc & Lex這個東東
> 一個很有趣的東西,透過一些語法,來產生分析語法的程式
> 有人用過嗎?
> 問題來了...,這樣產生出來的程式效率如何?
不錯,起碼你在寫小程式的時候不會感覺到很遜。
> 還有....,它正規表示法是產生C程式來達成
> 還是動態用C提供函式供呼叫?
不知道你要問啥?
Lex基本上是一個用來識別token的工具
你在lex script裡面寫好什麼東西是token, 什麼不是
lex最後就會輸出一個scanner函數,這個函數可以在你的C語言程式裡使用
吃進輸入,輸出token
yacc更深奧了,他是用來處理語法問題
比如說我看到token B在token A後面表示什麼意思
只有一個token A又是什麼意思
yacc產生的函數稱為parser,要配合scanner來使用
但是要從網頁中找連結,那用lex/yacc是殺雞用牛刀,我勸你別用
用你底下提到的Boost regex,或者java 1.5就內建的regex,就夠了
Lex/yacc的威力是可以從頭做出一個高階語言
你學compiler的時候自然會用到,如果貴校開課老師不偷懶的話
那時你自然可以了解並評估他的威力
但是用在HTML上,除非你要從頭做browser,否則是浪費時間
> 雖然說Boost有提供正規表示法可以用,我一直都還沒用過= ="
> 就像當初對STL有點疑問,那樣的效能好嗎?
> 用正規表示法分析出來的東西會比手寫的快嗎?
不用一下怎麼會知道?
我不知道你現在寫的系統有多大,但是如果有輪子好用,就不要重新發明輪子
了。我看過你當初貼在本板給大家看的一些舊的成果,那令我很敬佩。所以我
猜,你現在問用這些別人寫好的東西好不好,有可能是落入了那種coding老手
常常有的問題,不認為library 會比自己寫的更好。其實現在程式的效率越來
越不受重視了。如果一個沒受多少訓練的新手可以使用這個那個API 很快堆出
來一個能用的程式,而老手殫精竭慮想出一個手工精製的版本,卻要新手的三
倍時間,那很可能會淪落到沒人理的下場。先寫出來,如果真的很慢,那就再
改,又有何妨。有的時候perf根本不是major concern,需要求快的程式自然有
機會可以讓你再花時間去改善它,不必第一次就做到最好。"Do right things
at first" 是搞管理的人講的,我們都知道那是騙人的。
--
X-URL1: http://www.aviationnow.com/ ‧李登輝=格達費=外星人‧有廁
檢舉匪諜 人人有責 ⊙ 檢舉匪諜 安居樂業 人所
檢舉匪諜滲透破壞 人人安居樂業|肅清貪污經濟犯罪 社會繁榮進步
破案獎金三百萬|知情不報判徒刑
檢舉要件:請用真實姓名、地址,受理機關絕對保密
X-Disclaimer: 李登輝一定是外星人! Mk.22 Mod4 5/15/01 Mod3 6/9/98
--
┌─────◆KKCITY◆─────┐ ◢╱ 只要你通過身份認證 ~ ◥█
│ bbs.kkcity.com.tw │ █▉─ 免經驗、五人連署即開班系板 ◥
└──《From:218.160.89.246 》──┘ ◥╲ 趕快為班上設個秘密基地吧! ◢
--
討論串 (同標題文章)
完整討論串 (本文為第 2 之 5 篇):
4
11
Programming 近期熱門文章
PTT數位生活區 即時熱門文章