一年多前,{{link1:Lexifi的Alain Frisch提出了一个替代camlp4的建议,用于编写使用OCaml 4.00中添加的-ppx标志的语法扩展。当时他提到还有一些工作要做(属性、引用等),但已经可以使用了。OCaml 4.01是否对这种编写语法扩展的方式提供了改进支持?是否有人现在使用此机制来替代camlp4,或者camlp4仍然是编写OCaml语法扩展的推荐方式?
"(attributes, quotations, etc.)"的工作由Alain完成,以OCaml编译器源代码分支的形式命名为“extension-points”。该分支的进展在公共wg-camlp4邮件列表上得到了广泛讨论,但未被整合到4.01版中。自4.01版发布以来,它已被整合到主干(编译器的参考开发分支),因此应该可以在4.02版中使用(请注意,目前主要版本 tend to get released every year)。
Alain维护着trunk/experimental/frisch/extension_points.txt中扩展点的一种文档形式。它显然不能涵盖所有 Camlp4 的用例,但仍然涵盖了很大一部分。你是否更愿意使用它是一个个人决定;承诺是稍微笨拙的语法买来了更容易的部署和与工具和其他扩展的互操作性。
截至4.00或4.01版本,-ppx
不适用于语法扩展,您只能处理(并可能过滤/转换)符合语法规则的OCaml代码。在技术上,可以破坏现有的OCaml语法以添加新的含义,但我建议不要这样做。如果您想要使用它进行语法扩展,应该等待4.02版本。