《編譯原理詞法分析.doc》由會員分享,可在線閱讀,更多相關(guān)《編譯原理詞法分析.doc(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
上機練習一:詞法分析
一個PASCAL語言子集(PL/0)詞法分析器的設(shè)計與實現(xiàn)
1. 按照P45的算法思想,使用循環(huán)分支方法實現(xiàn)PL/0語言的詞法分析器,該詞法分析器能夠讀入使用PL/0語言書寫的源程序,輸出單詞符號串及其屬性到一中間文件中,具有一定的錯誤處理能力,給出詞法錯誤提示。
2.源代碼
#include
#include
#include
using namespace std;
#define MAX 1000
string key[15] = { "begin", "end", "if", "then", "else", "while", "write", "read",
"do", "call", "const", "var", "procedure", "program", "odd" };//保留字
int IsLetter(char c ) //判斷字母
{
if (((c <= z)&&(c >= a)) || ((c <= Z)&&(c >= A)))
return 1;
else return 0;
}
int IsDigit(char c) //判斷數(shù)字
{
if ((c >= 0)&&(c <= 9))
return 1;
else return 0;
}
int IsKey(string strToken) //判斷保留字
{
int i;
for (i = 0; i<15; i++)
{
if (key[i].compare(strToken) == 0)
return i;
}
return 15;
}
string Concat(char ch,string strToken)
{
strToken += ch;
return strToken;
}
int main()
{
ifstream file;
int r=0;
char ch;
int l=0;
int ID;//保留字的id
string strToken="";
file.open ("1.txt");//打開第i個記事本
if(!file)
cout<<"打開文件失??!";
ch=file.get();
while(!file.eof())
{
// if (ch == || ch == \t || ch == \n) //濾掉空白字符
// while( ch == \n)
// l ++;
if (ch == || ch == \t)
ch=file.get();
while (ch == \n)
{
l ++;
ch = file.get();
}
if(IsLetter(ch))
{
strToken = ""; //每次都需要對strToken置空串處理
while(IsLetter(ch)||IsDigit(ch))
{
strToken = Concat(ch,strToken);
ch = file.get();
}
ID=IsKey(strToken);
if(ID < 15)
{
cout<< "保留字為: "<< strToken<< endl;
}
if(ID == 15)
{
cout<< "標識符為:"<< strToken<< endl;
}
}
if(IsDigit(ch))
{
strToken = ""; //每次都需要對strToken置空串處理
while(IsDigit(ch))
{
strToken = Concat(ch,strToken);
ch = file.get();
}
if(IsLetter(ch)) //數(shù)字后面跟字母,錯誤詞法
{
while(IsLetter(ch)||IsDigit(ch))
{
strToken = Concat(ch,strToken);
ch = file.get();
}
cout <<"詞法錯誤!(數(shù)字后面跟字母) "<< strToken<< endl;
}
else
cout<<"數(shù)字為: "<:
{
ch = file.get();
if(ch == =)
cout <<"標識符為:\n" <<">="<"<)
cout <<"標識符為:\n" <<"<>" <
下載提示(請認真閱讀)
- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
文檔包含非法信息?點此舉報后獲取現(xiàn)金獎勵!
下載文檔到電腦,查找使用更方便
9.9
積分
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
-
編譯
原理
詞法
分析
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。
鏈接地址:http://www.820124.com/p-6660609.html