我有一個語法,我可以檢查是否是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)並將語法轉換爲LL(1)
- 2. 驗證語法是LL(1)
- 3. 是否每個LL(1)語法也是一個LR(1)?
- 4. LR(1)但不是LL的語法(1)
- 5. 寫入正確的LL(1)語法?
- 6. 如何確定給定的語言是否正規(僅通過查看語言)?
- 7. 如何製作此語法LL(1)?
- 8. LL(k)是什麼普遍的語言?
- 9. 這種語言是否可確定
- 10. Oberon語法不是LL(1)在哪裏?
- 11. 將C-語法轉換爲LL(1)
- 12. 製作語法LL(1)
- 13. 語法LL(1)衝突
- 14. Python:如何確定語言?
- 15. 如何將此語法轉換爲LL(1)?
- 16. 爲什麼這個語法不是LL(1)
- 17. 轉換語法爲LL(1)語法:一些問題
- 18. 關於LL(1)語法的例子?
- 19. 模糊語法與LL(1)解析
- 20. 確定是否矩陣是在R編程語言
- 21. 標準來確定它是否是一個編程語言
- 22. 序言 - 這種否定是否正確?
- 23. 如何設置訪客語言確定的網頁語言
- 24. 如何確定網站的語言
- 25. Django LocaleMiddleware爲我確定了語言。我怎麼知道它確定的語言?
- 26. 執行ll(k)到ll(1)轉換器!
- 27. 確定一種語言是否無上下文
- 28. 是否有可能確定.NET程序集編寫的語言?
- 29. 確定兩個NFA所接受的語言是否相同
- 30. 是否有任何編程語言從1開始計數?
你的問題語法和語言有什麼不同? –