[英]Is this grammar left recursive or factor?
我對左遞歸和左分解這個主題還不熟悉,請幫助我確定該語法是左遞歸還是左分解,如果是,為什么呢?
S-> aAd | bBd | 阿貝| 嬰兒| cA | B
它是左遞歸的嗎? 答:不可以。
按照定義,“如果我們能找到一些非終結符A,那么語法最終將是左遞歸的,它最終會得出一個以其自身為左符號的句子形式。”
示例:立即左遞歸發生在以下形式的規則中
A -> Aa | b
其中a和b是非終結點和終結點的序列,而b不是以A開頭。
顯然情況並非如此:
S-> aAd | bBd | 阿貝| 嬰兒| cA | B
是左因素嗎? 答:可以。
根據定義,在左分解中,不清楚要擴展非終端的兩個替代生產。
當您有兩個以相同終端/非終端開始的替代產品時,就會出現這種歧義。 在您的情況下,我可以看到兩條替代路徑:
S-> aAd | aBe
S-> bBd | bAe
S-> cA | cB
如果刪除左因子,則語法變為:
S-> aA'
A'-> Ad | Be
S-> bB'
B'-> Bd | Ae
S-> cC'
C'-> A | B
這張幻燈片用簡單的語言解釋了同樣的內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.