6

В Scala у меня есть грамматика, реализованная с использованием библиотеки Parser Combinators. Теперь то, что я хочу сделать, это генерировать случайные строки, учитывая грамматику из библиотеки комбинаторов парсеров.Сгенерировать строки из грамматики в ScalaCheck

Мне кажется, что библиотека ScalaCheck делает это как-то противоположно комбинаторам Parser, поскольку она объединяет генераторы вместо парсеров.

Есть ли способ генерации строк с использованием Комбиниров Parser или ScalaCheck или есть простой способ преобразования Комбинера Parser в генератор?

ответ

1

Нет простого способа конвертировать вашу грамматику в генераторы. Вы должны написать их вручную. И это будет не так сложно, потому что у вас уже есть грамматика. Вы можете легко протестировать свой синтаксический анализатор, но тестирование вашего контролера может быть довольно проблематичным (но все же возможно). Прежде чем начать, убедитесь, что ваши узлы AST можно сравнить друг с другом.

  • Scalacheck позволяет создавать рекурсивные свойства, поэтому вы можете легко генерировать узлы AST.
  • Когда вы создадите свои узлы AST, вы можете использовать Scalacheck и дополнительные знания об белых пространствах и их соответствие между узлами, переведенными в строки.
  • Тогда вы можете подать сгенерированные строки в синтаксический анализатор, вы собираетесь для тестирования коды и сравнить их с заранее сгенерированным AST

 Смежные вопросы

  • Нет связанных вопросов^_^