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