詞法分析程式課程設計

2021-04-13 12:45:57 字數 2563 閱讀 7440

一.

實驗目的

加深對詞法分析理論的理解,培養動手實踐的能力。詞法分析的功能:掃瞄源程式字元流,按照源語言的詞法規則識別出各類單詞版本號,並產生用於語法分析的符號串行,即將字串源程式轉換成符號串源程式.

二.實驗內容與設計思想

內容:編寫乙個小的詞法分析程式,並進行簡單的詞法進行分析.

設計思想:字元指標陣列儲存所有保留字,然後,每輸入乙個字元就檢測是否匹配,若匹配則進行組合識別符號,並促留在token中,否則組合識別符號結束,如此迴圈,直至輸出結束.

三.實驗環境

microsoft windows xp professional sp2

下的vc+6.0

四.實驗程式**

//詞法分析程式

//testscan.cpp

#include

#include

#include

#define keywordsum9

char *keyword[keywordsum]=;

char singleword[50]="+-*(){};,:&";

char doubleword[10]="><=!||";

extern char scanin[300], scanout[300];

extern file *fin,*fout;

int testscan()

if((fout=fopen(scanout,"w"))==null)

ch=getc(fin);

while(ch!=eof)

token[j]='/0';

n=0;

while((n

n++;

if(n>=keywordsum)

fprintf(fout,"%s/t%s/n","id",token);

else

fprintf(fout,"%s/t%s/n",token,token);

} else if(isdigit(ch))

token[j]='/0';

fprintf(fout,"%s/t%s/n","num",token);

} else if(strchr(singleword,ch)>0)

else if(strchr(doubleword,ch)>0)

else

token[1]='/0';

fprintf(fout,"%s/t%s/n",token,token);}

else if(ch=='/')

while((ch!='*' || ch1!='/')&&ch1!=eof);

ch=getc(fin);

} else

} else

} fclose(fin);

fclose(fout);

return(es);}

//testmain.cpp

//主程式

#include

#include

extern int testscan();

char scanin[300],scanout[300];

file *fin,*fout;

void main()

五.簡單的詞法分析

步驟:首先將

以3.t的檔案形式儲存在d盤路徑下,然後用c++語言編寫的詞法分析器進行詞法分析,如下圖示:

最後打用記事本開啟4.t,結果如下:

}

詞法分析完成.

而對於此詞法分析器不能識別的符號時則進行詞法分析分出錯,如在記事本內輸入:

並以c.t檔案形式儲存在d盤中.

進行詞法分析時如圖:

用記事本開啟d.t檔案,會發現詞法分析器無法識別」」!

d.t:

} 實驗完成.

六.實驗中遇到的問題及解決方法

鑑於第一次實驗沒有輸入輸出檔名的路徑名的錯誤,第二次實驗時末發現錯誤.

七.實驗心得

通過這次實驗,我認識到在做實驗前一定要熟讀課本以確定實驗要我們實現什麼,怎麼實現,每一步的步驟都要認真的去完成,做實驗來不得半點馬虎.通過這次實驗,我也發現了學習編譯原理的重要性,這次是第一次實驗,日後的學習還需要更加努力!

附加詞法分析的狀態圖(圖1)和詞法分析程式流程圖(圖2),如下圖:

圖1

編譯原理課程設計 說明語句的詞法分析器

一 設計目的 了解詞法分析程式的基本構造原理,掌握詞法分析程式的手工構造及自動構造方法。二 設計內容 根據pascal語言的說明語句形式,用手工及自動方法構造乙個對說明語句進行詞法分析的程式。該程式能對從鍵盤輸入或從檔案讀入的形如 const count 10,sum 81.5,char1 f st...

課程設計表

create database drug 藥品表 create table drug did nvarchar 10 primary key,dname nvarchar 50 not null,dimage nvarchar 100 not null,dmodel nvarchar 10 chec...

課程設計總結

課程設計今天終於完了,答辯之後感悟挺多的,一方面,覺得自己的努力獲到了應有的成果,當然也有很多不足及未完成的地方 另一方面,看到很多其他同學好的設計及思想。覺得很多方面都值得自己學習,自己還有很多方面都很欠缺,本次課程設計我和兩個同學共三個人做了聊天程式,仿qq做的。聊天軟體,是我之前一直想完成的乙...