Haskell'de standart, standart bir kural varsa, sadece belirli bir dosya formatı için bir ayrıştırıcı değil, aynı zamanda bir yazar yazmayı da merak ediyorum. Benim durumumda, analiz için bir veri dosyasını ayrıştırmam gerekiyor. Bununla birlikte, analiz edilecek verileri simüle ediyorum ve aynı dosya biçiminde kaydediyorum. Şimdi Parsec'i veya eşdeğer bir şeyi kullanarak bir ayrıştırıcı yazabilirim ve ayrıca metin çıktısını gereken şekilde gerçekleştiren işlevler yazabilirim, ancak dosya formatımı değiştirdiğimde, kodumdaki iki işlevi değiştirmem gerekir. Bu hedefe ulaşmak için daha iyi bir yolu var mı? Haskell'de aynı dosya formatını ayrıştırma ve güzel yazdırma
Dominikcevap
, BNFC-meta paketi teşekkür ederiz https://hackage.haskell.org/package/BNFC-meta-0.4.0.3
aradığınız şey olabilir
"BNF Converter tarafından kullanıldığı gibi Özellikle, (yarı-alıntılanan LBNF dilbilgisi verilen) bir LALR ayrıştırıcısını (Template Haskell'i kullanarak) ve dil için oldukça güzel bir yazıcıyı üretir.
Yorumlar ve cevabınız için çok teşekkür ederim. Gerçekten aradığım bir/grammar/kavramdır. BNFC-meta paketinin dışında, Li-yao Xia'nun [ikinci link] (https://www.reddit.com/r/haskell/comments/66o3lp/i_think_this_is_a_really_stupid_question_inverse/) de ilginç [sözdizimi] (https: //hackage.haskell.org/package/syntax) kütüphanesi. –
- 1. Haskell güzel yazdırma
- 2. Güzel yazdırma golang değişkeni
- 3. jquery ile biçimlendirme ve güzel yazdırma tarihleri
- 4. python - güzel yazdırma hata çubukları
- 5. boost :: property_tree XML güzel yazdırma
- 6. Güzel Jackson kütüphanesiyle XML yazdırma
- 7. Aynı anda stdout ve dosyaya yazdırma
- 8. Dosya formatını başlığa göre doğrulamak için kütüphaneler
- 9. Güzel Upload Dosya yüklemek için Dosya
- 10. Herhangi bir dosya türünü yazdırma
- 11. Bir dosya ve yazdırma dosya özniteliklerini döngü içinde C
- 12. Ruby'de bir yazıcıya dosya yazdırma
- 13. komut satırı yazdırma dosya adlarını çıktı dosyasına yazdırma
- 14. Android: Hangi görüntü formatını kullanmalıyım ve neden?
- 15. C Konsolu - Aynı çizgideki yazdırma deseni
- 16. Tüm şablon bağımsız değişkenleriyle birlikte güzel yazdırma türleri ve sınıf şablonu
- 17. clang-formatını kullanma - aynı satırda boş parantez tutmak
- 18. Aynı içerik, farklı MD5 - Dosya ve Dize
- 19. Klasör oluştur ve aynı anda dosya yolla
- 20. Yazdırma ve pexpect günlüğü
- 21. Ayrıştırma, Toplamak ve Python
- 22. Güzel Çorba ve Unicode Sorunları
- 23. güzel uploader başlatmak için hangi dosya girişini seçin
- 24. csv dosya hücresinde yeni bir satır yazdırma
- 25. Aynı iki hatayı almaya devam edin: yasadışı ve ayrıştırma hatası
- 26. PyParsing ile özel yapılandırılmış dosya ayrıştırma
- 27. Vim girinti formatını değiştir
- 28. Aynı anda 3 bağlantı ayrıştırma htmlagilitypack
- 29. HTML formatını durdurun PhpStorm
- 30. PHP'de dizi formatını değiştir
Yapmanız gereken en basit şey, dosyanızın sözdizimini temsil eden bir veri türü tanımlamak ve düşündüğünüz gibi ayrı bir ayrıştırıcı ve güzel bir yazıcı yazmak olacaktır. Çoğu dil kütüphanesi budur. – jozefg
Reddit ile ilgili güncel yeni konular: [1] (https://www.reddit.com/r/haskell/comments/6aqvgj/parser_libraries_with_ast_output/), [2] (https://www.reddit.com/ r/haskell/comments/66o3lp/i_think_this_is_a_really_stupid_question_inverse /) IMO bu teknoloji hala oldukça deneysel görünüyor. –
Yapmak istediğiniz şey bir dilbilgisi tanımlamak ve bir ayrıştırıcı ve güzel yazıcıyı otomatik olarak oluşturmak için bazı kütüphaneleri kullanmaktır. Bunu yapabildiğini iddia eden bir kaç kütüphane var, ancak bir tane tavsiye etmek muhtemelen OT (Ben bunlardan herhangi biriyle deneyimim olsaydı) – jberryman