遞迴下降實戰

2021-08-19 19:02:39 字數 2062 閱讀 1860

對下列文法,用遞迴下降分析法對任意輸入的符號串進行分析:

(1)e->tg

(2)g->+tg|-tg

(3)g->ε

(4)t->fs

(5)s->*fs|/fs

(6)s->ε

(7)f-> (e)

(8)f->i

#include

#include

#include

#include

/*(1)e->tg

(2)g->+tg|-tg

(3)g->ε

(4)t->fs

(5)s->*fs|/fs

(6)s->ε

(7)f-> (e)

(8)f->i

*/char a[50]

,b[50

],d[

200]

,e[10];

char ch;

int n1,i1=

0,flag=

1,n=5;

inte()

;inte1(

);intt()

;intg(

);ints()

;intf(

);void

input()

;void

input1()

;void

output()

;// 遞迴分析

// --------

void

main()

while

(ch!=

'#')

;//a陣列裡存的是我們輸入的字串

n1=j;

//字串長度

ch=b[0]

=a[0];

//第乙個字元

printf

("文法\t分析串\t\t分析字元\t剩餘串\n");

f=e1(

);if(f==0)

return

;//int count = 0;

if(ch==

'#')

}else

printf

("\n");

printf

("規則如下\n");

printf

("(1)e->tg\n(2)g->+tg|-tg\n(3)g->^\n(4)t->fs\n(5)s->*fs|/fs\n(6)s->^\n(7)f->(e)\n(8)f->i");

printf

("\n\n\n\n回車返回\n");

getchar()

;getchar()

;}//(1)e->tg

inte1()

inte()

intt()

// t-> fs

//(3)g->ε

//(2)g->+tg|-tg

intg()

else

if(ch ==

'-')

else

return(1

);}ints(

)//s->ε s->*fs|/fs

else

if(ch ==

'/')

else

return1;

}// f-> (e)

//(8)f->i

intf()

else

}else

if(ch==

'i')

else

return(1

);}//輸出分析字元

void

input()

//輸出剩餘串

void

input1()

void

output()

d[n]

='#'

;for

(j=3

;e[j]

!='#'

;j++

) k=k+1;

while

(d[k]

!='='

) d[n]

='#'

;}

遞迴下降分析程式

編譯原理 include include include file fp char sym char buff 100 int left p 0,right p 0 void proc e void proc e1 void proc t void proc t1 void proc f void ...

遞迴下降子程式

遞迴下降子程式 1 實驗目的 實現遞迴下降子程式的功能。2 語言描述 利用函式相互遞迴實現遞迴下降子程式的基礎功能。3 具體實現 include include include include include using namespace std char str 50 輸入要判斷的字串 int ...

遞迴下降分析程式

實驗一 遞迴下降分析實驗 專業 商業軟體 姓名 李嘉嘉 學號201506110247 一 實驗目的 練習構造遞迴下降語法分析程式的方法,熟悉上下文無關文法的使用,加深對課堂教學的理解 提高語法分析方法的實踐能力。二 實驗內容和要求 利用c語言構造語法分析程式。三 實驗方法 步驟及結果測試 原理分析及...