flex 和bison的安裝和使用


1.在ubutu上安裝 yacc的命令:

sudo apt-get install flex bison

 

flex:詞法分析器 

   flex是一個詞法分析器。用來將一個.l文件生成一個.c程序文件。即生成一個詞法分析器。然后讀取輸入,和正則表達式匹配,再執行相應的動作,實現了程序的功能。

   我們可以發現flex實現在程序外部就可以接受輸入的功能。

bison:語法分析器

   根據文法把一系列的記號轉換成一個語法分析樹。

把兩者聯合使用可以實現對sql語言的解析。

由於調用這些命令的時候會使用很多命令行語句,即編譯過程復雜的時候,我們可以把這些命令行語句寫在一個makefile中。

2.首先介紹使用flex的一個例子:

                                            

 

 第一步:首先我們寫一個.l文件,文件中程序就是作圖。該程序的功能就是計數器,單詞的個數,字符個數,以及行數。

    程序中:分為三個部分。第一部分是%{%}中的部分,用來聲明變量。

               第二部分是%%   %%中的部分。是指定的匹配規則。形式為正則表達式 加上 執行動作。其中,正則表達式用來匹配用戶輸入的內容,一旦匹配成功,則執行對應的動作。

               第三部分是c語言程序部分。調用flex提供的詞法分析例程yylex()函數。執行,得到一個c程序。

第二步:在ubutu命令行終端中寫入右圖中命令。

    該命令的意思是:通過flex將一個.l文件生成一個lex.yy.c的程序。中間那兩行文字是程序的輸入,2,12,63是程序執行的結果。./a.out是將程序輸出的結果保存在這個文件中。

總結:

3.bison的使用

 

 

 

     .y文件中的規則定義部分中。包含兩部分內容:

    第一部分:終結符的聲明。在sql語言中就是SELECT  FROM  WHERE 等這些。

    第二部分:定義了語法。即"ADD" 就是表示一個加法。

    http://www.cnblogs.com/me115/archive/2010/10/27/1862180.html 這個文章中對文法的講解比較朴素易懂。

4.flex和bison聯合編譯的過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM