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