我有一個語法,我可以檢查是否是LL(1)。但是,有什麼方法可以檢查語法生成的語言是否爲LL(1)? LL(1)語法和LL(1)語言之間的區別究竟是什麼?如何確定語言是否爲LL(1)?
回答
LL(1)的任何語法都定義了LL(1)語言。根據定義,一種語言是LL(1),如果有一些語法產生LL(1),那麼事實上你有一個語言的LL(1)語法就意味着語言是LL(1) 。
要詳細說明,語言是一組字符串,該語言的語法是描述該語言的一種手段。有些語言具有LL(1)語法,而其他語言則不具備。然而,語法不是LL(1)的事實並不意味着它描述的語言不是。例如,考慮這個語法:
A -> ab | ac
此語法不是LL(1),因爲它包含了第一/前衝突試圖看到終端時,預測產量爲A,此時。但是,它描述了一個LL(1)語言,因爲語言也被語法
A -> aX
X -> b | c
描述,這些語法生成(其中只包含AB和AC)的語言的確是LL(1)。
確定由任意語法描述的語言是否爲LL(1)是非常困難的,據我所知,唯一的方法就是明確地展示生成的語言的LL(1)語法通過最初的語法(這是棘手的)或數學上證明沒有這樣的語法存在。
希望這會有所幫助!
因此,LL(1)*語言*可以由許多不是LL(1)的其他*語法*定義(只要存在這樣的LL(1)語法)? - 試圖在我的腦海中確認。 – 2011-08-20 19:06:58
@pst,是的,只有一個LL(1)語法就足夠了。 –
- 1. 如何確定語言是否爲LL(1)?
- 2. 查找不是LL(1)的語言?
- 3. 如何顯示語法不是LL(1)並將語法轉換爲LL(1)
- 4. 驗證語法是LL(1)
- 5. 這是語法LL(1)?
- 6. 這是LL(1)語法
- 7. 這是LL(1)語法嗎?
- 8. 是否每個LL(1)語法也是一個LR(1)?
- 9. LR(1)但不是LL的語法(1)
- 10. 寫入正確的LL(1)語法?
- 11. 如何確定給定的語言是否正規(僅通過查看語言)?
- 12. 如何製作此語法LL(1)?
- 13. LL(k)是什麼普遍的語言?
- 14. 如何將語法轉換爲LL(1)語法形式?
- 15. 這種語言是否可確定
- 16. Oberon語法不是LL(1)在哪裏?
- 17. 將C-語法轉換爲LL(1)
- 18. 語法LL(1)衝突
- 19. 製作語法LL(1)
- 20. LL(0)語言是否可以包含多個單詞?
- 21. Python:如何確定語言?
- 22. 這是語法LL(1)嗎? http://hackingoff.com/compilers/ll-1-parser-generator給出錯誤
- 23. 這個LL(1)解析表是否正確?
- 24. 如何將MySQL yacc語法轉換爲antlr LL(1)?
- 25. 如何將此語法轉換爲LL(1)?
- 26. 爲什麼這個語法不是LL(1)
- 27. 爲什麼所有LL(1)語法LR(1)?
- 28. 轉換語法爲LL(1)語法:一些問題
- 29. 關於LL(1)語法的例子?
- 30. 模糊語法與LL(1)解析
你的問題語法和語言有什麼不同? –