问题标签 [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.
ocaml - 创建一个简单的camlp4语法扩展
鉴于这种类型:
我正在尝试创建一个可以接受此语法的语法扩展:
...并将其转换为:
这是我的尝试:
(我很确定它需要在替换结束时使用 $e$ 来表示“其余部分”,但考虑到我们希望记录的 value 字段具有以下值,它看起来也有点可疑右边的表达式 - 最初我没有结尾 $e$ 并且得到了同样的错误)
我尝试编译:
结果是:
我不知道为什么它似乎想在记录的名称字段后有一个“}”。(否则,我在正确的轨道上吗?)
parsing - camp4:如何匹配 Ast.TySum 以检索 Ast.TyOr
我是 ocamlp4 的新手。我正在阅读Jake Donham 的博客以开始使用它。
我正在尝试编写一个小的 CamlP4 程序,它将获得一个简单的类型:
并生成一个t_of_string
和一个t_to_string
函数。
按照博客上的代码,我应该能够将类型与:
但这不起作用。当我查看 ASTcampl4of xx.ml -printer o
并将其简化为有趣的部分时:
但我需要匹配类似的东西
似乎比赛案例中的 AST 有一个虚假的TySum
,但我无法摆脱它。
有没有人有解决方案?
ocaml - OCamlbuild 和 camlp4.macro
我有一个项目,其中几个 OCaml 源文件使用 IFDEF。有没有一种简单的方法告诉 OCamlbuild 这个项目的所有 .ml 文件都应该由 camlp4.macro 预处理?
ocaml - OCamlbuild 和 camlp4 选项
我正在使用 camlp4.macro 来启用条件编译。我在通知 OCamlbuild 标记为“use_jscore”的某些文件必须使用给定的 camlp4 选项进行预处理时遇到问题。这是我目前拥有的:
但这被 OCamlbuild 完全错误地逃脱了。我正在使用 ocamlfind,所以基本上我想告诉 OCamlbuild 的是,所有标记为“use_jscore”的 OCaml 文件都必须由 camlp4.macro 预处理,该文件也提供了 -DUSE_JSCORE 选项。
ocaml - 为什么使用 sexp 返回注释类型会导致未绑定值 int_of_sexp?
使用 sexplib 语法扩展为一个类型自动生成序列化代码,网上很多简单的例子都有展示:
编译失败,有Error: Unbound value int_of_sexp
.
ocaml - 为什么 camlp4o 无法解析(或)为二进制函数?
在 vanilla OCaml 中,(or)
它是一个二进制函数,就像(+)
所有其他函数一样,所以这样的代码可以正常工作:
但是在任何加载 camlp4o 的环境中,这都无法解析:
同时,(+)
其他整数算术运算符在任一环境中继续按预期工作:
为什么是这样?这是camlp4o的限制还是错误?这发生在 OCaml 3.12.1 上(在 OS X 10.7.4 上,通过 GODI 引导程序全新安装)。
ocaml - 修补camlp4的最佳实践?
提交补丁并等待 INRIA 合并需要很长时间,而且我的工作总是被延迟。所以我做了一个camlp4的分支。但是每次我做一点改变,我都需要制作整个编译器,这需要很长时间。你的最佳做法是什么?(对不起,如果我犯了一个愚蠢的错误)
(我认为分支camlp4是相对安全的,至少,你放心二进制兼容)
ocaml - 使用 ocamlbuild 将选项传递给 camlp4
我正在使用 ocamlbuild 对 ocamlfind 的原生支持来简化我的项目的构建过程。Filefoo.ml
依赖于使用camlp4 的宏进行条件编译。该_tags
文件包含以下内容:
这很好用,但我无法将选项传递给camlp4。如果不使用 ocamlbuild+ocamlfind 自动化,命令行将是这样的:
-DFOO
但是在使用 ocamlbuild+ocamlfind 时如何传递 camlp4变量?我觉得应该有一个简单的命令行选项,而不是乱用myocamlbuild.ml
.
ocaml - Camlp4 示例:未绑定模块 Printers.Ocaml
我正在按照这个有用的系列博客文章探索 Camlp4,但我遇到了编译问题。这是我的 test.ml 文件的代码:
我正在使用这个编译命令: ocamlc -pp camlp4of -I +camlp4 -o variant camlp4lib.cma test.ml 但 ocamlc 发出:错误:未绑定模块 Printers.Ocaml
我想是编译命令的问题,但我找不到 Printers.Ocaml 的实现位置。
谢谢您的帮助!_ 神父。