編譯原理實驗(三) 遞迴下降子程式

2021-10-06 05:47:48 字數 1144 閱讀 4591

對文法中的每個非終結符(語法成分)編寫乙個子程式,而子程式的**結構由相應非終結符的產生式右部所決定:

文法:

g[e]:

e->e+t|t

t->t*f|f

f->(e)|i

消除左遞迴:

g』[e]:

e->te』

e』->+te』|ε

t->ft』

t』->*ft』|ε

f->(e)|i

可以通過g』[e]文法構造遞迴下降分析器:

文法g』[e])無左遞迴,e 、 t 、f的兩個產生式的推導出的第乙個字元無交集

public

class

parse

public

void

match

(char token)

else

if(exp.

charat

(index)

== token)

else

}public

void

error()

// e->te'

public

voide(

)// e'->+te'|ε

public

voide1(

)else

}// t->ft'

private

voidt(

)// t'->*ft'|ε

private

voidt1(

)else

}// f->(e)|i

private

voidf(

)else

}else

if(exp.

charat

(index)

=='i'

)else

}public

static

void

main

(string[

] args)

;for

(int i =

0; i < tests.length; i++)}

}

優點:

缺點:

遞迴下降子程式

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

遞迴下降子程式法

1 編寫文法 消除二義性 2 消除左遞迴和提取左因子 改寫文法 3 求非終結符的 first 集和 follow 集 4 檢查是不是 ll 1 文法 若不是 ll 1 說明文法的複雜性超過自頂向下方法的分析能力 5 將 ll 1 文法改寫為 ebnf,並化簡 e t e e t e t f t t ...

編譯原理實驗3 遞迴下降分析

本 實現的文法是這樣的 g e e e t t t t f f f e i 因為包含左遞迴,故需要消去之後才能做。設計理念 通過遞迴下降的方式來對句子進行分析。若能夠接收乙個完全的初始字元並且所有的串全部被讀入,則算作 accepted。否則為wrong。使用說明 首先輸入需要分析的樣例個數,再依次...