OCaml的-ppx语法扩展的状态是什么?

时间:2013-10-10 23:13:05

标签: ocaml camlp4

OCaml 4.00中添加了Alain Frisch of Lexifi over a year ago for an alternative to camlp4 for writing sytnax extensions making use of the -ppx flag的提案。那时他提到还有一些工作要做(属性,引用等),但它已经有点用了。 OCaml 4.01是否改进了对这种写入语法扩展的支持?现在有人使用这种机制而不是camlp4或camlp4仍然是为OCaml编写语法扩展的推荐方法吗?

1 个答案:

答案 0 :(得分: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。