6

In Scala, ho implementato una grammatica utilizzando la libreria Parser Combinators. Ora, quello che voglio fare è generare stringhe casuali date una grammatica dalla libreria dei combinatori di parser.Genera stringhe dalla grammatica in ScalaCheck

Mi sembra, che ciò che la libreria ScalaCheck fa in qualche modo l'opposto di Combinatori di Parser in quanto combina generatori anziché parser.

Esiste già un modo per generare stringhe utilizzando Parser Combinator o ScalaCheck oppure esiste un modo semplice per trasformare un combinatore di parser in un generatore?

risposta

1

Non esiste un modo semplice per convertire la grammatica in generatori. Devi scriverli manualmente. E non sarà così difficile, perché hai già una grammatica. Puoi facilmente testare il tuo parser, ma testare il tuo correttore di tipi può essere abbastanza problematico (ma ancora possibile). Prima di iniziare, assicurati che i tuoi nodi AST possano essere confrontati tra loro.

  • ScalaCheck permette di generare le proprietà ricorsive, in modo da poter facilmente generare nodi AST.
  • Quando si generano i nodi AST, è possibile utilizzare Scalacheck e alcune informazioni aggiuntive sugli spazi bianchi e il loro fastidio tra i nodi, tradotti in stringhe.
  • Poi si può nutrire le stringhe generate al parser, si sta andando alla prova del codice e confrontarli con AST pre-generati