《實驗1-3-《編譯原理》詞法分析程序設計方案》由會員分享,可在線閱讀,更多相關《實驗1-3-《編譯原理》詞法分析程序設計方案(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
實驗 1-3- 《編譯原理》詞法分析程序設計方案
實驗 1-3 《編譯原理》 S 語言詞法分析程序設計
方案
一、實驗目的
了解詞法分析程序的兩種設計方法之一:
根據(jù)狀態(tài)轉換圖直接編程的方式;
二、實驗內容
1.根據(jù)狀態(tài)轉換圖直接編程
編寫一個詞法分析程序, 它從左到右逐個字符的對源程序進行掃描, 產生一個個的單詞的二元式,形成二元式(記號)流文件輸出。在此,詞法分析程序作
2、為單獨的一遍,如下圖所示。
源程序 詞法分析程序 二元式文件
具體任務有:
( 1)組織源程序的輸入
( 2)拼出單詞并查找其類別編號,形成二元式輸出,得到單詞流文件
( 3)刪除注釋、空格和無用符號
( 4)發(fā)現(xiàn)并定位詞法錯誤,需要輸出錯誤的位置在源程序中的第幾行。 將錯誤信息輸出到屏幕上。
( 5)對于普通標識符和常量,分別建立標識符表和常量表(使用線性表存儲) ,當遇到一
個標識符或常量時, 查找標識符表或常量表, 若存在,則返回位置, 否則返回 0 并且填寫符號表或常量表。
標識符表結構: 變量名,類型(整型
3、、實型、字符型),分配的數(shù)據(jù)區(qū)地址
注:詞法分析階段只填寫變量名,其它部分在語法分析、 語義分析、代碼生成等階段逐步填入。
常量表結構:常量名,常量值
三、實驗要求
1.能對任何 S 語言源程序進行分析
在運行詞法分析程序時, 應該用問答形式輸入要被分析的 S 源語言程序的文件名, 然后對該程序完成詞法分析任務。
2.能檢查并處理某些詞法分析錯誤
詞法分析程序能給出的錯誤信息包括: 總的出錯個數(shù),每個錯誤所在的行號, 錯誤的編號及錯誤信息。
本實驗要求處理以下兩種錯誤 (編號分別為 1,2):
1:非法字符:單詞表中不
4、存在的字符處理為
非法字符, 理方式是 除 字符, 出 信息,“某某字符非法”。
2:源程序文件 束而注 未 束。注 格式
: /*
?? */
四、保留字和特殊符號表
單 詞 1
2
3
4
5
6
7
8
9
代
單詞 int cha floa vo
con fo
if
else
then
r
t
id
st
r
單 詞 int cha floa vo
con fo
if
el
5、se
then
助 記
r
t
id
st
r
符
內 碼 -
-
-
-
-
-
-
-
-
值
單 詞 10
11
12
13 14 15
16 17
18
代
單詞 w
swi
bre
be end
標識 數(shù)字
hil
tch
ak
gi
符
(包
e
n
括整
數(shù)和
實
數(shù)
6、)
單 詞 w
swi
bre
be end
idnum
助 記 hil
tch
ak
gi
符e
n
內 碼 -
-
-
- -
在符 在常
值
號表 數(shù)表
中的 中的
位置 位置
單 詞
19
20
21
22
23
24
25
26
27
代碼
單詞
+
-
*
/
%
(
)
[
]
單 詞 +
-
*
/
%
(
)
[
]
助 記
7、
符
內 碼 -
-
-
-
-
-
-
-
-
值
單 詞
28
28 29
30
代碼
單詞
!= <
> <= >=
== ; {
}
單 詞 rlop
; {
}
助 記
符
內 碼 != <
> <= >= ==-
-
值
單 詞
37
38
39
40
41
42
43
8、
44
45
代碼
單詞
/=
+=
-=
*=
%=
||
&
!
=
&
單 詞 /=
+=
-=
*=
%=
or
an
not
=
助 記
d
符
內 碼 -
-
-
-
-
-
-
-
-
值
單詞的構詞規(guī)則:
字母 =[A-Za-z]
數(shù)字 =[0-9]
標識符 =(字母 |_)(字母 |數(shù)字) * 數(shù)字 =數(shù)字 (數(shù)字 )*(. 數(shù)字 +| )
四、 S 語言表達式和語句說明
1.算術表達式 :+、-、* 、/、%