7

一年多前,Lexifi的Alain Frisch 提出了一个替代 camlp4 的建议,用于编写使用OCaml 4.00 中添加的 -ppx 标志的 sytnax 扩展。当时他提到还有一些工作要做(属性、引用等),但已经有点用了。OCaml 4.01 是否改进了对这种写作风格的语法扩展的支持?现在有人使用这种机制而不是camlp4,还是camlp4仍然是为OCaml编写语法扩展的推荐方法?

4

1 回答 1

10

“(属性、引用等)”的工作由 Alain 以 OCaml 编译器源的一个分支的形式完成,名为扩展点。这个分支的进展在公共wg-camlp4邮件列表中得到了广泛的讨论,但没有集成到 4.01 中。自 4.01 发布以来,它已集成在 trunk(编译器的参考开发分支)中,因此它应该可用于 4.02(请注意,目前主要版本倾向于每年发布)。

Alain 在trunk/experimental/frisch/extension_points.txt中维护了一种扩展点的文档形式。它显然没有涵盖Camlp4 的所有用例,但仍然是其中的很大一部分。您是否愿意使用它是个人决定;承诺是稍微笨拙的语法使您更容易部署和与工具和其他扩展的互操作性。

从 4.00 或 4.01 开始,-ppx不适合语法扩展,您只能处理(并且可能过滤/转换)语法有效的 OCaml 代码。技术上可以颠覆现有的 OCaml 语法以添加新的含义,但我建议不要这样做。如果您想将其用于语法扩展,您应该等待 4.02。

于 2013-10-11T12:11:16.823 回答