實驗二 遞迴下降語法分析

2022-09-03 05:27:14 字數 3161 閱讀 1445

一、實驗目的:

利用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 prog="

begin a:=9;x:=2*3;b:=a+x #

", token[20]; //

程式段,單詞符號

char

ch;int syn,p,m,n,sum,kk=0; //

單詞符號型別syn,整數sum,#

const

char *rwtab[6]=;

void

scanner();

void

transfer();

void

yuju();

void

statement();

void

factor();

void

expression();

void

term();

void scanner()

ch=prog[p++];

while(ch == '')

if (ch>='

a'&&ch<='z')

syn=10

; p--;

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

else

syn=11

; p--;

}else

else

if (ch=='=')

else

break

;

case

'>':

m=0; token[m++]=ch;

ch=prog[p++];

if (ch=='=')

else

break

;

case':

':m=0

; token[m++]=ch;

ch=prog[p++];

if (ch=='=')

else

break

;

case'+

':syn=13

; token[

0]=ch;

break

;

case'-

':syn=14

; token[

0]=ch;

break

;

case'*

':syn=15

; token[

0]=ch;

break

;

case'/

':syn=16

; token[

0]=ch;

break

;

case'=

':syn=25

; token[

0]=ch;

break

;

case';

':syn=26

; token[

0]=ch;

break

;

case'(

':syn=30

; token[

0]=ch;

break

;

case')

':syn=31

; token[

0]=ch;

break

;

case'#

':syn=0

; token[

0]=ch;

break

;

default

: syn=1

; token[

0]=ch;}}

}}void

transfer()

}else}}

else

}void

yuju()

}void

statement()

else

}else

}void

expression()

}void

term()

}void

factor()

else

if (syn==30

)

else

}else }

intmain()

實驗二 遞迴下降語法分析

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

實驗二 遞迴下降語法分析

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

遞迴下降語法分析實驗

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