Re: [問題] 有沒有人用過Yacc

看板Programming作者時間18年前 (2007/02/02 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《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 ──┘ ◥╲ 趕快為班上設個秘密基地吧! --
文章代碼(AID): #15mYhX00 (Programming)
文章代碼(AID): #15mYhX00 (Programming)