0

我有几个词法分析器:lexer_1.mll, lexer_2.mll, ...

ident( ) 的一些定义let ident = regexp在这些文件中很常见并且重复。例如,INTEGER, FLOAT, ...的定义

有谁知道是否可以在某个地方一次性定义它们,并让.mll文件调用它?

4

1 回答 1

2

恐怕没有“纯 OCaml”解决方案,ident因为ocamllex. 您仍然可以将您的正则表达式定义放在一个文件中,并在任何需要的地方使用cpp(或任何其他 C 预处理器)#include。这当然是对 . 的滥用cpp,因为您没有向它提供.c文件,但您不会是第一个这样做的人。

事实上,我刚刚遇到了cppo,这是一个针对 OCaml 程序的类似 cpp 的实用程序,您可能会发现它很有用。

于 2013-10-17T12:53:26.007 回答