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

ane*_*eal 7 ocaml camlp4

有一个从提案Lexifi的阿兰·弗里施在一年前的替代物camlp4写sytnax扩展利用的-ppx标志 OCaml中加入4.00.那时他提到还有一些工作要做(属性,引用等),但它已经有点用了.OCaml 4.01是否改进了对这种编写语法扩展的支持?现在有人使用这种机制而不是camlp4或camlp4仍然是为OCaml编写语法扩展的推荐方法吗?

gas*_*che 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.