如何解决使用camlp5导入Pcaml语法来扩展OCaml的打印机
我想使用 camlp5 为 OCaml 创建一个打印机扩展。我的代码看起来像 this tutorial 的示例,但不是创建我自己的语法扩展,我想使用 OCaml 的语法来解析程序。
为此,我想使用 Pcaml 模块用 OCaml 的语法解析给定的字符串。不幸的是,每次我尝试使用它时,我都会得到:
Required module 'Pcaml' is unavailable
这是我加载和打开模块的代码部分,以及使用 Pcaml 的部分代码:
#load "pa_extprint.cmo";;
#load "q_MLast.cmo";;
#load "pa_o.cmo";;
open Pcaml;;
open Pprintf;;
let pa_ocaml = Grammar.Entry.create Pcaml.gram "pcaml_gram";;
我尝试了多个命令来运行程序,例如:
ocamlc -pp camlp5o -I +camlp5 gramlib.cma <my_file>.ml
我需要什么才能使用 Pcaml 和 Pcaml.gram?
解决方法
我建议使用 ocamlfind
来构建和链接您的程序。新手反对它的唯一原因是,当你在没有 WSL 的情况下使用 Windows 时,它可能会变得有问题。没有错误的编译命令如下
ocamlfind c -syntax camlp5o -package camlp5 -linkpkg a.ml
#load "pa_extprint.cmo";;
#load "q_MLast.cmo";;
#load "pa_o.cmo";;
open Pcaml;;
open Pprintf;;
let pa_ocaml : int Grammar.Entry.e = Grammar.Entry.create Pcaml.gram "pcaml_gram";;
仅供参考,您的 #load
命令可以而且应该通过指定正确的 ocamlfind
包来替换。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。