詞法分析報告

2021-08-13 17:02:58 字數 2081 閱讀 4502

實驗專案名稱: 詞法分析實驗學時: 6

同組學生姓名: 無實驗地點: ***x

實驗日期: ************xx實驗成績

批改教師批改時間

一、實驗目的和要求

通過編寫並上機除錯乙個詞法分析程式,掌握在對程式語言的源程式進行掃瞄的過程中,將其分解後各類單詞的詞法分析方法。

二、實驗儀器和裝置

主機一台:有visual studio 2005工具

三、實驗過程

輸入:從具有代表性的高階程式語言中,選取乙個適當大小的子集,例如可以選取一類典型單詞,也可以盡可能使各種型別的單詞都能兼顧到。

輸出:單詞串的輸出形式,所輸出的每一單詞均按形如(字元型別單詞及其它字元 《行,列》)的三元式編碼。字元型別包括關鍵字、識別符號、浮點數、指數形式、常數、引入檔案、分隔符。

《行,列》標識單詞及各個字元在文字框中出現的位置。

詞法規則

關鍵字: 本程式識別的關鍵字為int real if then else while ,僅當單獨出現

以上識別符號時識別為關鍵字,對於inta,ifb等識別為識別符號。

識別符號: 乙個識別符號必須以字母開頭,後面接上字母和數字,否則產生報錯資訊,程

序停止詞法分析,輸出相關錯誤資訊

如: 正確:abc, abc123, 等

錯誤:123abc

操作符: 本程式識別的操作符為< <= > ><<= << >>= >> % %=

當 !後跟其它字元時產生出錯資訊。

分隔符: 本程式識別的分隔符為

數字: 識別的數字遵循以下文法規則:

digit 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

intnumber digit+

exponent (e|edigit+

fraction . digit+

realnumber digit+ exponent | digit+ fraction ( exponent | )

例如:正確: 123, 123e2, 123.3123.3e4

錯誤: 123a,123e, 123.a . 123.3a, 123.3e

注釋符: 本程式對三者的注釋符均識別.

引入檔案為 #include<**>形式,其他做出錯處理

設計思路

本程式採用字元流形式讀入檔案,識別其中的關鍵字,識別符號,分隔符,注釋符,引入檔案宣告等.

設計了乙個靈活的讀取字元的自動機為如下圖1-1所示:

圖1-1設計思路

詞法分析部分的lexical類如下:

using system;

using system.io;

using

namespace lexical_analyzer

public arraylist getsymboltable()

private void analyzer()

{bool isrunning = true;

while (isrunning)

switch (state)

case 0:

if (c空格

else if (c == '\ttab

rpos += 3;

else if ((int)c == 13) //空格

else if ((int)c == 10) //回車

rpos = 0;

rnum++;

else if (c結束符

return;

else if (c == '"')

install("分隔符", c.tostring(), rpos, rnum);

else if (c.tostring

install("分隔符", c.tostring(), rpos, rnum);

else if (c操作符+

state = 15;

install("操作符","+",rpos,rnum);

else if (c操作符-

state = 14;

install("操作符","-",rpos,rnum);

詞法分析實驗報告

實驗報告 課程名稱編譯原理 實驗名稱詞法分析實驗 班級學號姓名指導教師 實驗日期 一 實驗目的 1.了解詞法分析的主要任務。2.熟悉編譯程式的編制 通過設計 除錯詞法分析程式,實現從源程式中分出各種單詞的方法 熟悉詞法分析程式所用的工具自動機,進一步理解自動機理論 掌握文法轉換成自動機的技術及有窮自...

詞法分析小結

詞法分析是編譯器工作的第一階段,它的工作就是從輸入 源 中取得token,以作為parser 語法分析 的輸入,一般在詞法分析階段都會把一些無用的空白字元 white space,即空格 tab和換行 以及注釋剔除,以降低下一步分析的複雜度,詞法分析器一般會提供乙個gettoken 這樣的方法,pa...

詞法分析小結

詞法分析小結 簡介 詞法分析是編譯器工作的第一階段,它的工作就是從輸入 源 中取得token,以作為parser 語 詞法分析小結 正文開始 詞法分析是編譯器工作的第一階段,它的工作就是從輸入 源 中取得token,以作為parser 語法分析 的輸入,一般在詞法分析階段都會把一些無用的空白字元 w...