使用 camlp5 导入 Pcaml 语法扩展 OCaml 的打印机
Import Pcaml grammar to extend OCaml's printer using camlp5
我想使用 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
构建和 link 您的程序。新手反对它的唯一原因是,当您在没有 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
包来替换。
我想使用 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
构建和 link 您的程序。新手反对它的唯一原因是,当您在没有 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
包来替换。