2009年2月7日 星期六

Lex and Yacc ( or Flex and Bison )

Lex - Lexical Analyzer Generator
用來產生以 C 語言實做的字彙分析器(Lexical Analyzer)的原始碼的程式,只需給予使用者自訂的正規表示式。所謂的字彙分析器,即將一連串的輸入資料切割成有意義的小單位並輸出。

Yacc - Yet Another Compiler-Compiler
用來產生以 C 語言實做的剖析器(Parser)的原始碼的程式,只需給予使用者自訂的語法。主要目的就是用來判斷所輸入的資料是否符合語法。

Flex - Fast Lexical Analyzer Generator
由 Lex 所改寫,改進了原本的缺點,並且更快。

Bison
Yacc 的另一個選擇,極度相容於 Yacc,更是由鼎鼎大名的自由軟體之父 - Richard Stallman 所領導製作的。

Lex 與 Yacc 是 Unix 系統的標準配備,而 Linux 的選擇就是 Flex 與 Bison 了。它們都是用來製作程式編譯器的標準工具。

淺談編譯器
編譯器雖然一直都是資訊相關領域必備的知識,但在近代已不再是一個熱門議題。這也意味著編譯器已是相當成熟的技術,不再具有競爭的價值。而隨著近年新興的直譯程式語言的竄紅(Ruby、Python 和 Groovy 等等),相關的資訊似乎又開始引起大家的注意和興趣。使得由 Aho 等作者,在西元 1986 年所出版的編譯器聖經本 Compilers: Principles, Techniques, and Tools. [First Edition],在 20 年後的西元 2006 年出了第二版 Compilers: Principles, Techniques, and Tools (2nd Edition),封面也還是經典的屠龍武士與飛龍。



參考資料:
http://dinosaur.compilertools.net/
http://www.amazon.com/
http://en.wikipedia.org/

沒有留言: