2
A
回答
1
原始語法是左遞歸的,因此不是LL(1),實際上對於任何k都不是LL(k)。
幸運的是,左遞歸可以被刪除。標準算法通過分別解決即時左遞歸(如我們在這裏)和間接左遞歸這樣做。即時左遞歸是兩者中較簡單的情況。維基百科的文章解釋了它here。
基本上你移動以下遞歸參考到一個新的生產(尾部),其還具有ε
替代
X -> ε|+E|*E
然後刪除從原來生產左遞歸的替代方案,並且允許X
部件,遵循所有剩餘的非遞歸的替代品,
E -> (E)X|aX
請注意,您的提案錯過X
以下括號內的表達,這樣就不會RECOG掌握相同的語言。
-1
相關問題
- 1. 如何顯示語法不是LL(1)並將語法轉換爲LL(1)
- 2. 將C-語法轉換爲LL(1)
- 3. 如何將MySQL yacc語法轉換爲antlr LL(1)?
- 4. 如何將此語法轉換爲LL(1)?
- 5. 轉換語法爲LL(1)語法:一些問題
- 6. 驗證語法是LL(1)
- 7. 語法LL(1)衝突
- 8. 這是語法LL(1)?
- 9. 製作語法LL(1)
- 10. 這是LL(1)語法
- 11. 這是LL(1)語法嗎?
- 12. 如何製作此語法LL(1)?
- 13. LR(1)但不是LL的語法(1)
- 14. 將語法轉換爲LL1語法
- 15. 如何將查詢語法轉換爲方法語法
- 16. 如何將此查詢表達式語法轉換爲方法語法?
- 17. 寫入正確的LL(1)語法?
- 18. 關於LL(1)語法的例子?
- 19. Oberon語法不是LL(1)在哪裏?
- 20. 模糊語法與LL(1)解析
- 21. LL語法和FIRST
- 22. 如何將Mathematica語法轉換爲latex?
- 23. 將GSL語法轉換爲GRXML格式
- 24. 如何將查詢語法轉換爲流利的語法?
- 25. 正則表達式將LIMIT語法轉換爲SqlServer TOP語法
- 26. LL語法分析器語法
- 27. 如何將此語法轉換爲LR(1)?
- 28. 爲什麼所有LL(1)語法LR(1)?
- 29. 將語法轉換爲喬姆斯基的正常形式
- 30. 如何LINQ方法語法轉換爲LINQ查詢語法
FWIW:原始語法也是模糊的,並且因此不LR(k)也適用於任何k。轉換的語法不是不明確的,但它的解析不符合正常的算術優先級。可能這兩個事實將在本課程後面介紹。 – rici