編譯原理學習一 flex,bsion工具使用

2022-08-31 01:36:13 字數 1553 閱讀 7583

先嘗試用它來做乙個計算器(內容來自於自製程式語言——前橋和彌)

一、準備工作

關於flex, bsion工具,建議還是linux平台安裝使用比較方便,我在windows下嘗試過,太麻煩。

在ubuntu下安裝很簡單,只要執行下列語句即可:

sudo apt-get install

flex bison

flex -h

bison -h

沒有報錯就說明安裝成功。

二、詞法分析部分

建立mycalc.l

1 %

10 %}

11 %%12"

+"return

add;13"

-"return

sub;14"

*"return

mul;15"

/"return

div;16"

\n"return

cr;17 ([1-9][0-9]*)|0|([0-9]+\.[0-9]+)

23[ \t]

24.

28 %%

三、語法分析部分

建立mycalc.y

1 %

6 %union

10 %token double_literal

11 %token add sub mul div cr

12 %type expression term primary_expression

13 %%

14line_list

15: line

16 |line_list line17;

18line

19: expression cr

2023

expression

24: term

25 |expression add term

2629 |expression sub term

3033;34

term

35: primary_expression

36 |term mul primary_expression

3740 |term div primary_expression

4144

primary_expression

45: double_literal46;

47 %%

48int

49 yyerror(char

const *str)

5055

56int main(void)57

66 }

四、生成執行檔案

bison --yacc -dv mycalc.y

flex mycalc.y

gcc -o mycalc y.tab.c lex.yy.c

執行上述語句後,可以在目錄中看到mycalc程式。

五、測試

./mycalc

1+3*5

>>16

qlexical error.

編譯原理學習總結

總結 首先,很開心能夠與老師完成這一學期的課程,感覺編譯原理這門課吧,有點和資料結構聯絡比較密切,因為好多知識點都是需要運用學的樹,圖來理解完成的,都需要先去理解才能掌握。當然比起資料結構來,編譯原理還是有許多東西需要去記住的。編譯原理不像是一門新的課程,更需要運用許多以前的知識和 知識。其中的lr...

編譯原理學習總結

這學期費老師帶著我們學習了編譯原理,這門課挺重要的,感覺就像是有種連線著整個計算機專業課的感覺。但是也挺難的,對於大神說還好,對我就太難了,理解不了,也不會應用,學的比較糟糕。內容感覺很抽象,不好理解。但經過乙個學期的死纏爛打還是有了點自己的體會和總結的。總的來說。編譯原理就是乙個翻譯 編譯的過程。...

編譯原理學習總結

第一章 是基本概念,讀完這一章是為了有個基本了解,這一章是很容易順利讀完的 第二章這一章介紹了書中很多重要的東西。這一章雖然也有些難理解的地方,但是跟後面比還是容易很多,很多東西都很基本,對編譯系統有個基本的理解。第三章 詞法分析 相比較語法分析,詞法分析相對比較簡單,就是乙個自動機系統,學完這一章...