實驗一詞法分析器

2022-10-09 11:36:03 字數 1350 閱讀 6513

一實驗目的

1.通過本實驗加深對詞法分析程式的功能及實現方法的理解;

2.使用flex實現詞法分析程式。

二實驗內容

下面是簡單c語言的詞法:

1.關鍵字:

else if int return void while

所有的關鍵字都是保留字,並且必須是小寫。

2. 下面是專用符號:

+ - * / < <= > >

3. 其他標記是id 和num ,通過下列正規表示式定義:

id = letter letter*

num = digit digit*

letter = a|..|z|a|..|z

digit = 0|..|9

小寫和大寫字母是有區別的。

請利用flex生成上述語言的詞法分析器。要求寫出詳細的步驟和相應的flex源程式。

三實驗步驟

1.在linux中安裝flex,使用如下命令:

undo apt-lex install flex

2.用flex詞法分析器實現詞法分析

測試內容:

intvoid

else

while

return

i=1+3.9;

a3=909/6

bcd=4%9-333

源程式:%%%

"elseshowkeyword();

"ifshowkeyword();

"intshowkeyword();

"returnshowkeyword();

"voidshowkeyword();

"whileshowkeyword();

[\nlinenum++;

[0-9][0-9printf("num : %s\n",yytext);

[a-za-z][a-za-zprintf("id : %s\n",yytext);

<=\>\>printf("op : %s\n",yytext);

printf("unknown : %c\n",yytext[0]);

%%showword()

int main()

int yywrap()

四實驗結果

五實驗內容中遇到的問題、解決方法和體會。

lex(lexical analyzar詞法分析生成器)是unix下十分重要的詞法分析工具。經常用於語言分析,公式編譯等廣泛領域。本實驗加深對詞法分析程式的功能及實現方法的理解,同時也在linux中安裝了flex,使用flex實現詞法分析程式。

本次實驗中遇到的主要問題是flex原始檔的編寫,對詞法的構造和編寫理解不深刻,需要在以後的學習中繼續努力,此次實驗收穫頗豐。

實驗一詞法分析器

一 實驗目的 1.掌握詞法分析的原理 2.設計乙個詞法分析程式,掌握程式語言中的各類單詞的詞法分析方法,加深對詞法分析原理的理解。3.熟悉保留字表等相關的資料結構與單詞的分類方法。4.掌握詞法分析器的設計與除錯。二 實驗要求 2.1根據編譯中的分詞原理,編寫乙個詞法分析程式 1 輸入 所給文法的源程...

詞法分析器實驗

姓名 孫曉龍 學號 220800320 日期 2011 5 10 實驗目的 詞法分析的目的是將輸入的源程式進行劃分,給出基本符號 token 的序列,並掠過註解和空格等分隔符號。基本符號是與輸入的語言定義的詞法所規定的終結符。設計 編制 除錯乙個詞法分析子程式 識別單詞,加深對詞法分析原理的理解。功...

詞法分析器

為給定程式語言設計詞法分析器 1 單詞結構 注釋 以 開頭到該行尾部為注釋 關鍵字 共6個 int real if then else while 識別符號 以字母開頭,後跟字母或數字的符號串,最長為64個字元。注意 關鍵字不是識別符號 操作符 共11個 分隔符 共5個 數字 用正規式描述 digi...