【发布时间】:2014-05-01 04:54:05
【问题描述】:
谁能帮助我了解如何在 ocamlyacc 中启用 C 风格的包含文件?例如:#include "mylib.txt";。
【问题讨论】:
-
OCaml 没有预处理器,因此没有对应于 C
#include机制的内容。根据您打算在mylib.txt中添加的内容,您最好的选择可能就是以通常的方式使用 OCaml 模块系统。 -
可能我的问题还不够清楚。这里的#include 不是OCaml 代码,而是用我的代码解析的其他语言定义的目标源文件。在 C/C++ Yacc 中,有一种处理这种情况的机制,即更改输入流。但是,我在 ocamlyacc 中找不到任何方法来做同样的事情。
-
yacc 是一个生成 C 输出的预处理器。其输入中的一些代码只是直接传递到输出的 C 代码。在传递的 C 代码中,您可以拥有
#include "abc.h",然后在编译输出时由 C 预处理器处理。我完全不确定您要做什么。但由于 OCaml 没有预处理器,因此您必须使用不同的方案才能获得相同的结果。 -
感谢杰弗里的回答。但是在我的情况下,使用 C 预处理器并不是一个好习惯,因为编译器应该确保包含的文件具有合法声明。无论如何,我在 OCaml 邮件列表中找到了一封旧邮件,解决了我的问题(经过一些修改):groups.google.com/forum/m/#!topic/fa.caml/_v_k4WTQV_Q