我想使用OCaml camlp5为它创建一个打印机扩展。我的代码看起来像本教程的例子,但是我不想创建自己的语法扩展,而是使用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?
发布于 2021-03-24 18:42:50
我建议使用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";;FYI,您的#load命令可以而且应该被指定正确的ocamlfind包取代。
https://stackoverflow.com/questions/66784254
复制相似问题