flex與bison的結合使用(計算器例子)

愛寶發表於2018-11-22
  				flex與bison的結合使用

1.詳介
對於怎麼讓flex與bison結合到一起,有兩種方法。一種是在VC6中建立一個工程,不過VC6工程中要做一些設定,才能順利編譯,所以第一種我就沒采納。
另外一種就是在bison的輔助性c語言例程部分加一個#include "lex.yy.c"就可以了。在CMD命令中,我們就可以先編譯flex,>flex name.l 。
然後會生成lex.yy.c檔案,不過在用編譯器編譯的時候會報錯,原因我相信也是好理解的。因為在flex我們會返回bison中出現的終結符,即詞法單元。在我們還沒有編譯bison檔案的時候肯定是不認識的,所以報錯。
我們無需理會錯誤(除非是真的自己寫錯了,看好錯誤的情況),繼續在CMD中執行>bison -d name.y 命令。這樣就預設完成連線,並且執行完了程式。
bison 工具包>地址<
2.細節
一些基本的過程就不說了,在前面已經提及了。
不明白的去看一下就好了。
網址:>基本過程<
現在我就講一下不同的地方,
(1).我們肯定在資料夾裡要匯入bison的包,才能進行的編譯。

(2).工具已經準備就緒,我們開啟CMD命令(注意細節),執行>flex name.l 命令

(3).我們去資料夾看一下會有一個lex.yy.c檔案,用編譯器開啟執行一下,會發現報錯(一般是正常現象):

(4).執行 bison -d name.y 命令,在去資料夾看會有name_table.c檔案。

(5).用編譯器開啟並執行name_tab.c程式,就可以實現了(這個程式可以直接在執行.c程式生成的對話方塊上操作就可以)。

相關文章