问题标签 [camlp4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
533 浏览

ocaml - 创建一个简单的camlp4语法扩展

鉴于这种类型:

我正在尝试创建一个可以接受此语法的语法扩展:

...并将其转换为:

这是我的尝试:

(我很确定它需要在替换结束时使用 $e$ 来表示“其余部分”,但考虑到我们希望记录的 value 字段具有以下值,它看起来也有点可疑右边的表达式 - 最初我没有结尾 $e$ 并且得到了同样的错误)

我尝试编译:

结果是:

我不知道为什么它似乎想在记录的名称字段后有一个“}”。(否则,我在正确的轨道上吗?)

0 投票
2 回答
80 浏览

parsing - camp4:如何匹配 Ast.TySum 以检索 Ast.TyOr

我是 ocamlp4 的新手。我正在阅读Jake Donham 的博客以开始使用它。

我正在尝试编写一个小的 CamlP4 程序,它将获得一个简单的类型:

并生成一个t_of_string和一个t_to_string函数。

按照博客上的代码,我应该能够将类型与:

但这不起作用。当我查看 ASTcampl4of xx.ml -printer o并将其简化为有趣的部分时:

但我需要匹配类似的东西

似乎比赛案例中的 AST 有一个虚假的TySum,但我无法摆脱它。

有没有人有解决方案?

0 投票
1 回答
312 浏览

ocaml - OCamlbuild 和 camlp4.macro

我有一个项目,其中几个 OCaml 源文件使用 IFDEF。有没有一种简单的方法告诉 OCamlbuild 这个项目的所有 .ml 文件都应该由 camlp4.macro 预处理?

0 投票
2 回答
576 浏览

ocaml - OCamlbuild 和 camlp4 选项

我正在使用 camlp4.macro 来启用条件编译。我在通知 OCamlbuild 标记为“use_jscore”的某些文件必须使用给定的 camlp4 选项进行预处理时遇到问题。这是我目前拥有的:

但这被 OCamlbuild 完全错误地逃脱了。我正在使用 ocamlfind,所以基本上我想告诉 OCamlbuild 的是,所有标记为“use_jscore”的 OCaml 文件都必须由 camlp4.macro 预处理,该文件也提供了 -DUSE_JSCORE 选项。

0 投票
1 回答
850 浏览

ocaml - 为什么使用 sexp 返回注释类型会导致未绑定值 int_of_sexp?

使用 sexplib 语法扩展为一个类型自动生成序列化代码,网上很多简单的例子都有展示:

编译失败,有Error: Unbound value int_of_sexp.

0 投票
2 回答
116 浏览

ocaml - 为什么 camlp4o 无法解析(或)为二进制函数?

在 vanilla OCaml 中,(or)它是一个二进制函数,就像(+)所有其他函数一样,所以这样的代码可以正常工作:

但是在任何加载 camlp4o 的环境中,这都无法解析:

同时,(+)其他整数算术运算符在任一环境中继续按预期工作:

为什么是这样?这是camlp4o的限制还是错误?这发生在 OCaml 3.12.1 上(在 OS X 10.7.4 上,通过 GODI 引导程序全新安装)。

0 投票
1 回答
107 浏览

ocaml - 修补camlp4的最佳实践?

提交补丁并等待 INRIA 合并需要很长时间,而且我的工作总是被延迟。所以我做了一个camlp4的分支。但是每次我做一点改变,我都需要制作整个编译器,这需要很长时间。你的最佳做法是什么?(对不起,如果我犯了一个愚蠢的错误)

(我认为分支camlp4是相对安全的,至少,你放心二进制兼容)

0 投票
1 回答
478 浏览

ocaml - 使用 ocamlbuild 将选项传递给 camlp4

我正在使用 ocamlbuild 对 ocamlfind 的原生支持来简化我的项目的构建过程。Filefoo.ml依赖于使用camlp4 的宏进行条件编译。该_tags文件包含以下内容:

这很好用,但我无法将选项传递给camlp4。如果不使用 ocamlbuild+ocamlfind 自动化,命令行将是这样的:

-DFOO但是在使用 ocamlbuild+ocamlfind 时如何传递 camlp4变量?我觉得应该有一个简单的命令行选项,而不是乱用myocamlbuild.ml.

0 投票
2 回答
431 浏览

ocaml - Camlp4 示例:未绑定模块 Printers.Ocaml

我正在按照这个有用的系列博客文章探索 Camlp4,但我遇到了编译问题。这是我的 test.ml 文件的代码:

我正在使用这个编译命令: ocamlc -pp camlp4of -I +camlp4 -o variant camlp4lib.cma test.ml 但 ocamlc 发出:错误:未绑定模块 Printers.Ocaml

我想是编译命令的问题,但我找不到 Printers.Ocaml 的实现位置。

谢谢您的帮助!_ 神父。

0 投票
1 回答
128 浏览

ocaml - 在camlp4中定义语法规则时,_loc变量的作用是什么?

_loc变量出现在表达式的语法规则中,match ... with作为传递给mk_sequence函数的参数。

但它没有用在mksequence's函数体中。

_loc变量也出现在语法规则的其他 地方。

在camlp4代码生成教程中,它说_loc代表位置。但我不太明白那里的解释。有人可以向我解释传递未使用_loc变量的目的吗?