6

Scala'da, Ayrıştırıcı Kombinatörleri kütüphanesi kullanılarak uygulanan bir dilbilgisi var. Şimdi, yapmak istediğim, ayrıştırıcı birleştirici kitaplığından bir dilbilgisi verilen rastgele dizeler üretmektir.ScalaCheck'te Dilbilgisi Dizgileri Oluştur

Bana öyle geliyor ki, ScalaCheck kütüphanesi, Parser Kombinatörlerinin, jeneratörler yerine ayrıştırıcıları bir araya getirmesiyle tersini yapıyor.

Ayrıştırıcı Kombinatorleri veya ScalaCheck kullanarak dizeleri oluşturmanın bir yolu var mı, yoksa Ayrıştırıcı Birleştiriciyi bir jeneratöre dönüştürmenin basit bir yolu var mı?

cevap

1

Dilbilginizi jeneratörlerinize dönüştürmenin kolay bir yolu yoktur. Onları elle yazman gerekiyor. Ve o kadar da zor olmayacak çünkü zaten bir gramerin var. Ayrıştırıcınızı kolayca test edebilirsiniz, ancak tip denetleyicinizi test etmek oldukça sorunlu olabilir (ancak yine de mümkündür). Başlamadan önce AST düğümlerinizin birbiriyle karşılaştırılabilir olduğundan emin olun.

  • Scalacheck Eğer özyinelemeli özelliklerini oluşturmasına olanak sağlar, böylece kolayca AST düğümleri oluşturabilir.
  • AST düğümlerinizi oluşturduğunuzda, Scalacheck ve , boşluklar arasında çevrilen düğümler arasındaki ve beyaz boşluklarla ilgili bazı ek bilgileri kullanabilirsiniz.
  • Sonra, kodun testine gidiyoruz ayrıştırıcı oluşturulan dizeleri beslemek ve önceden oluşturulmuş AST ile karşılaştırabilirsiniz