實驗二 遞迴下降語法分析

2022-08-21 03:30:12 字數 2820 閱讀 4706

一、實驗目的:

利用c語言編制遞迴下降分析程式,並對簡單語言進行語法分析。

編制乙個遞迴下降分析程式,實現對詞法分析程式所提供的單詞序列的語法檢查和結構分析。

二、實驗原理

每個非終結符都對應乙個子程式。

該子程式根據下乙個輸入符號(select集)來確定按照哪乙個產生式進行處理,再根據該產生式的右端:

三、實驗要求說明

輸入單詞串,以「#」結束,如果是文法正確的句子,則輸出成功資訊,列印「success」,否則輸出「error」,並指出語法錯誤的型別及位置。

例如:輸入begin a:=9;x:=2*3;b:=a+x end #

輸出success

輸入x:=a+b*c  end #

輸出『end' error

四、實驗步驟

1.待分析的語言的語法(參考p90)

2.將其改為文法表示,至少包含

–語句–條件

–表示式

3. 消除其左遞迴

4. 提取公共左因子

5. select集計算

6. ll(1)文法判斷

7. 遞迴下降分析程式

#include#include

#include

char wsym[80],ssym[80

];char

ch;int

row,syn,sum,m,i,p;

char *word[6]=;

int flag=0

; void

e();

void

t();

void

e1();

void

t1();

void

f();

void

getsyn()

if((ch>='

a'&&ch<='

z')||(ch>='

a'&&ch<='z'

)) ssym[m++]='\0'

; p--;

syn=10

;

for(i=0;i<6;i++)}}

else

if(ch>='

0'&&ch<='9'

) p--;

syn=11

; }

else

switch

(ch)

else

break

;

case

'i=0

; ssym[i++]=ch;

ch=wsym[p++];

if(ch=='='

)else

if(ch=='

>')

else

break

;

case

'>':

i=0; ssym[i++]=ch;

ch=wsym[p++];

if(ch=='='

)else

break

;

case'=

':ssym[

0]=ch;syn=25

;

break

;

case';

':ssym[

0]=ch;syn=26

;

break

;

case'(

':ssym[

0]=ch;syn=27

;

break

;

case')

':ssym[

0]=ch;syn=28

;

break

;

case'#

':ssym[

0]=ch;syn=0

;

break

;

case'\n

':syn=100

;

break

;

default

: syn=-1

;

break

; }

}void

e()

if(syn==6

)

}else

}else

return

;

}void

t()else

}else

}}void

e1()

return;}

void

t1()

return;}

void

f()else

if(syn==27

) }

else

return;}

intmain()

while(ch!='#'

); p=0

; getsyn();

e();

printf(

"分析結束!");

getchar();

}

執行截圖:

實驗二 遞迴下降語法分析

一 實驗目的 利用c語言編制遞迴下降分析程式,並對簡單語言進行語法分析。編制乙個遞迴下降分析程式,實現對詞法分析程式所提供的單詞序列的語法檢查和結構分析。二 實驗原理 每個非終結符都對應乙個子程式。該子程式根據下乙個輸入符號 select集 來確定按照哪乙個產生式進行處理,再根據該產生式的右端 三 ...

實驗二 遞迴下降語法分析

一 實驗目的 利用c語言編制遞迴下降分析程式,並對簡單語言進行語法分析。編制乙個遞迴下降分析程式,實現對詞法分析程式所提供的單詞序列的語法檢查和結構分析。二 實驗原理 每個非終結符都對應乙個子程式。該子程式根據下乙個輸入符號 select集 來確定按照哪乙個產生式進行處理,再根據該產生式的右端 三 ...

遞迴下降語法分析實驗

通過設計 開發乙個高階語言的遞迴下降語法分析程式,實現 對詞法分析程式所提供的單詞序列進行語法檢查和結構分析,加 深對相關課堂教學內容的理解,提高語法分析方法的實踐能力。1 理解語法分析在編譯程式中的作用,以及它與詞法分析程式的 關係 2 掌握遞迴下降語法分析方法的主要原理 3 理解遞迴下降分析法對...