her LL (1) dilbilgisi mı ayrıca LR (1)?Her LL (1) dilbilgisi de bir LR'dir (1)?
cevap
Evet, LL ve LR hem Soldan sağa verileri ayrıştırmak beri; ve LL (1) sadece bir jetonu göz önüne aldığından, mutlaka bir LR (1) olmalıdır. Bu aynı zamanda bir LR (k) gramer beri k> 1, bir LR (1) gramer dönüştürülebilir LR (k) için de geçerlidir. bu LR LL soldaki türetme üretir sağdaki türetme üretir içinde
LR ve LL gramerlerin arasındaki fark gelir. Yani bu, bir LR ayrıştırıcısının aslında yapraklardan oluşturulduğu kadar LL dilbilgisinden daha büyük bir seti ayrıştırabileceği anlamına gelir.
A -> "(" A ")" | "(" ")"
Sonra LL (1) dizesini (())
ayrıştırmak olacaktır:
aşağıdaki gibi yapımları var Diyelim
(()) -> A
-> "(" A ")"
-> "(" "(" ")" ")"
olarak LR (1) olarak ayrıştırmak izlediğinde:
Input Stack Action
(()) 0
()) 0 '('
)) 0 '(' '('
) 0 '(' '(' ')' Reduce using A -> "(" ")"
) 0 '(' A
- 0 '(' A ')' Reduce using A -> "(" A ")"
- 0 A Accept
Daha fazla bilgi için bkz: http://en.wikipedia.org/wiki/LL_parsing
ancak ayrıştırmak için LL (1) kullandığı dizisi (yapımların) LR tarafından kullanılan (yapımların) karşısında dizide her zaman değil (1) ayrıştırmak için. Her ne kadar öncekiler aşağıdan yukarıya ve ikincisi ayrıştırıcıdan aşağıya doğru olsa da, LL (1) 'in LR (1) olması için nedeniniz yeterli görünmüyor. – siddharth
şey olmak LR ayrıştırma ağacı ters LL Çözümleme ağacının aynı olması ile anlamına gelmez ve dolayısıyla ayrıştırıcı mutlaka ters sırayla yapımları kullanmaz. Bunun anlamı, bir LR ayrıştırıcısının, aynı dilbilgisi verilen aynı dizeleri doğru bir şekilde ayrışabilmesidir. – Mike
Bu gerçek çelişiyor mu? http://cs.stackexchange.com/questions/60763/does-my-grammar-contradict-ll-⊆-lr1/60764#60764 – Pranav
- 1. LL içine dilbilgisi dönüştürme (1) dilbilgisi: bazı sorunlar
- 2. Dilbilgisi (1)
- 3. LL olmayan bir dil bulmak (1)?
- 4. hitTest.RowIndex her zaman -1
- 5. MotionEvent.getPointerCount() her zaman 1
- 6. Sol birleştirici bir işleç, yukarıdan aşağı LL (1) ayrıştırıcılarının anlayabileceği şekilde ifade edilebilir mi?
- 7. 1 + 1/2 + 1/3 + --- + 1/n =?
- 8. Struts 1'de birden fazla dosya yükleme 1
- 9. Neden bir sql sorgusu "nerede 1 = 1"
- 10. İkinci işlenende her bit sıfır nasıl 1?
- 11. while döngülerinde 1 == 1 veya true kullanımı
- 12. 1. # INF00, -1. # IND00 ve -1. # IND ne anlama geliyor?
- 13. $ 1 ve \ 1 in Ruby'de
- 14. IndexError: index 1, 1/ForwardEuler
- 15. neden a + 1 == * (a + 1)?
- 16. [expr.ref]/1 de belirtilen dipnotun anlamı nedir?
- 17. Varlık Çerçeve 1 Alınacak * ve 1-to-1
- 18. Tanımı/(1) ayrıştırma
- 19. Neden regex her zaman 1 değerini döndürür?
- 20. Alamofire download progress totalBytesExpectedToRead her zaman -1
- 21. Retofit2 hata java.io.EOFException: hat 1 sütun 1
- 22. SELECT sorgusu her gruptan 1 satır döndürür
- 23. Her yıl 1 Ocak için Cronjob
- 24. Media.getduration, -1
- 25. İkili (De) 1 dosyaya bir nesne akışının serileştirilmesi
- 26. Javascript'te, neden [1, 2] == [1, 2] veya ({a: 1}) == ({a: 1}) yanlıştır?
- 27. İlk RSPEC testi, değerin 1 veya -1
- 28. LIMIT 1?
- 29. 1 Bir programın çıkışını
- 30. Görüntü Kutusundaki pikseller 1: 1 nasıl görüntülenir
Ben birçok ay önce bir gün üniversiteye bu soru vardı düşünüyorum;) – foreyez