簡體   English   中英

將右遞歸語法轉換為Chomsky范式

[英]Translating a right recursive grammar into Chomsky Normal Form

我正在嘗試進行將語法轉換為Chomsky范式的練習。 我知道在正常情況下該如何做,但是這次我正在使用的語法是正確的遞歸。 (從技術上講,語法是對上一個問題的答案,所以我可能只是使用了錯誤的伽瑪。)

我想我可以通過使用固定的規則序列代替ε規則來做到這一點,但我想確保自己不會朝錯誤的方向前進。 用一個例子更容易解釋:

對於產生n'a的語法,其中n大於0且是3的倍數:(不用擔心,這與我實際練習的語法完全不同)

S-> Aaaa
A-> Aaaa
A-> ε

正確的翻譯將是:

S0-> S
S-> A'B
A'-> AA'
A-> A'B
B-> B'C
A'-> a
B'-> a
C-> a

盡管您的語法是右遞歸的,但是您可以像執行其他(非右遞歸)語法一樣執行Chomsky Normal Form轉換。 只需遵循本書中概述的算法,該算法可能包括兩個步驟:(1)將所有出現的端子a替換為規則A-> a ,其中規則集中不存在A (2)通過包含新鮮變量的長度為2的規則轉換所有規則A-> w ,其中len (w)> 2。

然后,為您的A規則構造一個派生終端的規則,例如K-> a ,並替換所有出現的終端a

A -> AKKK

然后將語法放入CNF

A    -> AA'
A'   -> KA''
A''  -> KK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM