2010-04-21 67 views
1

E - > A | B這是語法單反嗎?

A - > a | c

B - > b | c

我的答案是否定的,因爲它有減少/減少衝突,其他人可以驗證這一點嗎?

此外,我通過構建轉換圖獲得了我的答案,是否有一種更簡單的方法來找出這個問題?

感謝您的幫助!

P.S遞歸下降能解析這個嗎?

回答

3

你是對的 - 從輸入'c'開始,沒有辦法決定是否將它視爲'A'或'B'。我懷疑有什麼可以真正解析這個 - 它只是含糊不清。使用不同類型的解析器將無濟於事;你真的需要改變語言。

有一些正式的方法來檢測這種歧義,但我很難想象他們爲這樣一個小的語法而煩惱。一個簡單的方法來發現這個特殊的問題是精神上的時候再安排成一棵樹:

alt text

這兩條線上來了「C」框代表減少/減少衝突。沒有理由選擇從'c'到'E'的路線而不是另一條路線,所以語法是不明確的。

+0

感謝您的整潔把戲! – Mike 2010-04-21 03:19:00