資源簡介
實驗一:詞法分析程序
一、實驗目的
??? 通過設計編制調試一個具體的詞法分析程序,加深對詞法分析原理的理解。并掌握在對程序設計語言源程序進行掃描過程中將其分解為各類單詞的詞法分析方法。
編制一個讀單詞過程,從輸入的源程序中,識別出各個具有獨立意義的單詞,即基本保留字、標識符、常數、運算符、分隔符五大類。并依次輸出各個單詞的類型碼及單詞符號的自身值。(遇到錯誤時可顯示“Error”,然后跳過錯誤部分繼續顯示)
二、實驗要求
用C或C++寫一個簡單的詞法分析程序,程序可以滿足下列要求:
1、能分析如下幾種簡單的語言詞法
(1) 標識符: ID=letter(letter|digit)*
(2) 關鍵字(全部小寫)
main int float double char if then else switch case break continue while do for
(3)整型常量:NUM=digit digit*
(4)運算符
= + - * / < >= ; ( )? :
(5)空格由空白、制表符和換行符組成,用以分隔ID、NUM、運算符等,字符分析時被忽略。
2、單詞符號和相應的類別碼
假定單詞符號和相應的類別碼如下:
單詞符號 種別碼
int 1
= 17
float 2
< 20
if 3
24
標識符 10
>= 25
整型常量 11
; 26
+ 13
( 27
- 14
) 28
* 15
? 29
/ 16
: 30
3、詞法分析程序實現的功能
輸入:單詞序列(以文件形式提供),輸出識別的單詞的二元組序列到文件和屏幕
輸出:二元組構成: (syn,token或sum)
其中: syn 為單詞的種別碼
token 為存放的單詞自身符號串
sum 為整型常數
例:
源程序: int ab; float ef=20;
ab=10+ef;
輸出:
(保留字--1,int)
(標識符--10,ab)
(分號--26,;)
(保留字--2,float)
(標識符--10,ef)
(等號--17,=)
(整數--11,20)
(分號--26,;)
(標識符--10,ab)
(等號--17,=)
(整數--11,10)
(加號--13,+)
(標識符--10,ef)
(分號--26,;)
4、自己準備測試數據存放于TestData.txt文件中,測試數據中應覆蓋有以上5種數據,測試結果要求以原數據與結果對照的形式輸出并保存在Result.txt中,同時要把結果輸出到屏幕。
5、提前準備
① 實驗前,先編制好程序,上機時輸入并調試程序。
準備好多組測試數據(存放于文件TestData.txt中)。
6、寫出實驗報告
報告格式:要求有實驗名稱、實驗目的、實驗要求、實驗內容、實驗小結。
其中實驗內容包括算法分析、程序流程圖及程序代碼。
代碼片段和文件信息
評論
共有 條評論