一.
實驗目的
加深對詞法分析理論的理解,培養動手實踐的能力。詞法分析的功能:掃瞄源程式字元流,按照源語言的詞法規則識別出各類單詞版本號,並產生用於語法分析的符號串行,即將字串源程式轉換成符號串源程式.
二.實驗內容與設計思想
內容:編寫乙個小的詞法分析程式,並進行簡單的詞法進行分析.
設計思想:字元指標陣列儲存所有保留字,然後,每輸入乙個字元就檢測是否匹配,若匹配則進行組合識別符號,並促留在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做的。聊天軟體,是我之前一直想完成的乙...