Я пишу простой функциональный язык программирования в Scala с помощью библиотеки парсер-комбинаторов.
Синтаксис указан здесь: https://github.com/hejfelix/Frase/blob/master/src/main/scala/it/vigtig/lambda/ParserLike.scala
Есть одна вещь, которую я не смог решить с помощью реализации: как я могу отделить определение грамматики от преобразования в узлах AST?
Было бы здорово иметь грамматику, близкую к человеку, прямо из источника парсера, особенно учитывая, что я являюсь единственным программистом в проектном банкомате, и он может служить документацией.
Как отделить грамматику и код, специфичный для АСТ?