2011-12-14 19 views
11

Bir çözümleyici oluşturmak için Happy kullanıyorum."Dahili Mutlu Hata" geçersiz kılma - notHappyAtAll

Dilbilgisinin bir kısmını en üst düzeyden daha düşük bir seviyeyle eşleştiren jetonları verdiğimde (bunun kendi başına bir ifade vermesi gibi, bir ifadenin parçası değil gibi), Ayrıştırma hatası yerine "Dahili Mutlu Hata".

ben "Dahili Mutlu Hata" den daha iyi hata mesajı yazdırmak böylece notHappyAtAll geçersiz kılmak için bir yolu var mı? Açıkçası, otomatik olarak oluşturulan ayrıştırıcı dosyasını değiştirdiğimde, dilbilgisini her güncellediğimde yapmam gerekecek.

+1

Belki [mutlu docs] (http://haskell.org/happy/doc/html/sec-monads.html#sec-exception) yardımcı olabilir mi? Feragatname: belki de yoktur. –

+0

Dilbilginizin her zaman en üst seviyesinden ziyade "fragmanları" eşleştirmek istiyorsanız, birden fazla başlangıç ​​sembolüne ihtiyacınız olacaktır - Happy kılavuzunun 2.7 bölümüne bakın. –

+0

Dilbilginizin en üstünde bir hata yönergesi tanımladınız mı? Bu, "% error {parseError}" biçiminde olmalıdır - parseError, kullanıcı tanımlı bir işlevdir. Kılavuzun Bölüm 2'ye bakınız. –

cevap

1

Bu sorun, Happy 1.18.7'de giderilmiş gibi görünüyor.