60 likes | 319 Views
Lex 補充說明. Chang Chi-Chung 2009.05.04. 工具介紹 (1). Lex and Yacc 是每套 unix-like 都必備的工具 Lex Lexical Analyzer Generator Yacc Yet Another Compiler-Compiler Linux 系統則有 Flex and Bison Flex Fast Lexical Analyzer Generator 由 Lex 所改寫,改進了原本的缺點,並且更快。 Bison
E N D
Lex 補充說明 Chang Chi-Chung 2009.05.04
工具介紹(1) • Lex and Yacc 是每套 unix-like 都必備的工具 • Lex • Lexical Analyzer Generator • Yacc • Yet Another Compiler-Compiler • Linux 系統則有 Flex and Bison • Flex • Fast Lexical Analyzer Generator • 由 Lex 所改寫,改進了原本的缺點,並且更快。 • Bison • Yacc 的另一個選擇,極度相容於 Yacc,更是由鼎鼎大名的自由軟體之父 - Richard Stallman 所領導製作的。
工具介紹(2) • Lex & Yacc for windows • 如果你想要在 windows 下執行,可以參考以下網頁 • http://www.bumblebeesoftware.com/ • Java 版本的 Lex • jlex • jflex • http://www.jflex.de/
參考資訊 • Lex and Yacc 與 Visual C++的整合 • http://www.csie.nfu.edu.tw/phpBB2/viewtopic.php?p=72977 • Lex and Yacc 電子書 • http://www.epaperpress.com/lexandyacc/index.html • 編譯器工具介紹 • http://jsliu.no-ip.info/DOC/COMPILERS/
Lex 的 Global Variable • Lex 的預設變數,在寫 *.l 檔的 definition & rule時,可以直接使用這些變數 • yyin • lex 的input來源,型態為 FILE * ,初始預設為stdin • yyout • lex 的input來源,型態為 FILE * ,初始預設為 stdout • yytext • 當rule中match一個pattern時,match的string就會存在 yytext中,型態為char * • yyleng • 記錄 yytext 的長度 • yylineno • 記錄目前的yyin讀到第幾行了 • yylval • an external global variable storing the attribute of the token
Lex 的函數 • yylex() • 呼叫產生出的 lexical analyzer。換言之呼叫這個函數,可以得到下一個 token。 • 剩下的自己研究了!