對文法中的每個非終結符(語法成分)編寫乙個子程式,而子程式的**結構由相應非終結符的產生式右部所決定:
文法:
g[e]:消除左遞迴:e->e+t|t
t->t*f|f
f->(e)|i
g』[e]:可以通過g』[e]文法構造遞迴下降分析器:e->te』
e』->+te』|ε
t->ft』
t』->*ft』|ε
f->(e)|i
文法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。使用說明 首先輸入需要分析的樣例個數,再依次...