首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >导入Pcaml语法以使用camlp5扩展OCaml的打印机

导入Pcaml语法以使用camlp5扩展OCaml的打印机
EN

Stack Overflow用户
提问于 2021-03-24 15:26:55
回答 1查看 38关注 0票数 0

我想使用OCaml camlp5为它创建一个打印机扩展。我的代码看起来像本教程的例子,但是我不想创建自己的语法扩展,而是使用OCaml的语法来解析程序。

为此,我想使用Pcaml模块来用OCaml的语法解析给定的字符串。不幸的是,每次我尝试使用它时,我都会得到:

Required module 'Pcaml' is unavailable

这是加载和打开模块的代码的一部分,也是使用Pcaml的代码的一部分:

代码语言:javascript
运行
复制
#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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-24 18:42:50

我建议使用ocamlfind构建和链接您的程序。新来者反对它的唯一原因是,当你使用没有WSL的Windows时,这个东西可能会变得很糟糕。没有错误的编译命令如下所示

代码语言:javascript
运行
复制
ocamlfind c -syntax camlp5o -package camlp5 -linkpkg a.ml
代码语言:javascript
运行
复制
#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包取代。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66784254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档