2010-11-19 15 views
0

İşte bu sorunun basit bir açıklaması. Unutmayın bu gerçek sorun değilbizon: Çatışma ile başa çıkmak, hangi yolu kullanmalıyım?

Dil işlevlerimde, işaretçiler döndüremediğimi ve üye değişkenlerinin başvuruda bulunamadığını söyleyelim. Bison, türden bir işlev veya üye değişkeni türünde olup olmadığına ilişkin olarak (40'ı düşürme/azaltma gibi) şikayette bulunur. Bunu biliyorum ama bu çizgiden> 40 çatışmaya sahip olmak saçma.

Class Name { ... 
Type& func() { 
Type* Var=0 
Type What 

Bununla nasıl ilgilenmeliyim? % glr-parser kullanmalı ve bekliyor/bekliyor-rr bir değere ayarlamalıyım? ya da herşeye sahip ve yasal olanı filtreleyen bir kod kullanmalı mıyım? Benim seçimlerim daha fazla çakışma/belirsizlik VS onunla başa çıkmak için daha fazla kod yazma gibi görünüyor. Hangisinin daha kötüsü olduğundan emin değilim, bu yüzden sizlerle uğraşmak zorunda kaldı mı diye merak ediyorum.

cevap

2

Dilbilgisinde tip kısıtlamalarını ifade etmeye çalışmamalısınız. Bu, Wirth ve diğerleri tarafından belgelenen Algol-68 fiyasko tarafından oldukça ispatlanmıştı.

+0

Bunun için herhangi bir link var mı? Tamam bu yüzden daha genel bir sözdizimi yazmalı ve geçersiz sözdizimi mi, yoksa –

+1

mu olduğunu söylemek için kod kullanmalıyım. ACM Programlama Dilleri Tarihi Konferansı dokümanlarında kapsamlı bir şekilde belgelenmiştir. Yalnızca sözdizimini ifade etmek için dilbilgisini kullanmalı ve sözdizimi ağacının post-processing işlemi sırasında ayrı bir aşama olarak anlamsal bir kontrol yapmalısınız. – EJP

İlgili konular