flex 和bison的安裝和使用

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

sudo apt-get install flex bison正則表達式

 

flex:詞法分析器 sql

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

   咱們能夠發現flex實如今程序外部就能夠接受輸入的功能。flex

bison:語法分析器命令行

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

把二者聯合使用能夠實現對sql語言的解析。htm

因爲調用這些命令的時候會使用不少命令行語句,即編譯過程複雜的時候,咱們能夠把這些命令行語句寫在一個makefile中。blog

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

                                            

 

 第一步:首先咱們寫一個.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聯合編譯的過程。

相關文章
相關標籤/搜索