編譯原理 詞法分析程式設計

2021-10-01 08:55:25 字數 2373 閱讀 3250

一、實驗目的

設計、編制並除錯乙個簡單語言cp(compiler principle)的詞法分析程式,加深對詞法分析原理的理解。

二、實驗內容

說明(1)cp語言是大小寫敏感語言;

(2)字母為a-za-z,數字為0-9;

(3)學有餘力同學可以在上述詞法要求基礎上進行擴充和改造;

(4)每行**中從#開始的部分為注釋部分(參考python語法)

設計要求

(1) 給出各類單詞符號的分類編碼(可以根據自己程式的需要來給各種類別單詞編碼,給每個詞法單位乙個編碼,也可以給乙個類別裡所有符號都編同乙個編碼)。

(2) 詞法分析程式應該能發現輸入串中的錯誤

(3) 詞法分析作為單獨一遍,將詞法分析程式輸出的二元式序列儲存為中間檔案形式【也可以在螢幕視窗直接輸出】

三、實驗要求

寫出程式框圖、設計過程、主要資料結構等。

寫出程式源**,並除錯通過,輸出實驗結果。

四、實驗**

#include

#include

#include

using

namespace std;

struct

keywords =

;struct

operators =

;//運算子

struct

boundaries =

;//分界符

struct

identifieres =

;//識別符號,以下劃線或字母開頭的字母數字下劃線組成的符號串。

struct

unsigned_integer =

;//無符號整數num:數字串

string changinstr

(vector<

char

> a)

return temp;

}//觀察哪些是分界符,不是分界符則積累

intmain()

if(onestr.

size()

>0)

if(k == unsigned_integer.number)

else cout <<

"《數字,"

<< k <<

'>';}

else}if

(k == keywords.number)

if(k == identifieres.number)

else cout <<

"《識別符號,"

<< k <<

">";}

} onestr.

clear()

;}if(strin[i]

=='('

|| strin[i]

==')'

|| strin[i]

==','

|| strin[i]

==';'

|| strin[i]

=='#')}

}else

if(strin[i]

=='+'

|| strin[i]

=='-'

|| strin[i]

=='*'

|| strin[i]

=='/'

|| strin[i]

=='>'

|| strin[i]

=='|| strin[i]

=='='

|| strin[i]

==':='

|| strin[i]

=='>='

|| strin[i]

=='<='

|| strin[i]

=='<>'

|| strin[i]

=='++'

|| strin[i]

=='--'

)else

if(strin[i]

=='#'

) i++;}

} cout << endl;

//輸出

cout <<

"identifieres:"

;for

(int i =

0; i < identifieres.number; i++

) cout <<

"unsigned_integer:"

;for

(int i =

0; i < unsigned_integer.number; i++

)system

("pause");

}

五、實驗結果

編譯原理詞法分析程式設計(C )

1.對源程式進行理解,從pl0文件中抽取出詞法部分的 單獨作為乙個程式,變成乙個詞法程式,用visual6.0或者dev c 進行編譯,編譯成為可執行檔案 詞法分析部分的 如下 include include include include include include include inclu...

編譯原理詞法分析

編譯原理實驗一 詞法分析練習 include include include define tokenmax 100 define progmax 1000 define k esc 27 void analytics 詞法分析 void scanner 輸入掃瞄 bool isletter cha...

詞法分析(編譯原理)

詞法分析 英語 lexical analysis 是電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer,簡稱lexer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱...