我正在使用解析器组合库(parser-combinators library)在Scala中编写一个简单的函数式程序语言。
语法规范在这里: https://github.com/hejfelix/Frase/blob/master/src/main/scala/it/vigtig/lambda/ParserLike.scala
有一件事情我一直无法用实现解决:如何将语法定义与AST节点转换分离?
如果能够在解析器源码中直接使用接近人类可读的语法规范,那将非常酷,特别是考虑到目前我是该项目上唯一的程序员,因此它可以作为文档使用。
我应该如何分离语法和AST特定代码?
^^ { case id ~ _ ~ term => Abstr(id, term) }
这样的操作, 2. 创建一个将 CST 转换为 AST 的新模块。 - Matt Fenwick