我有几个词法分析器:lexer_1.mll
, lexer_2.mll
, ...
ident
( ) 的一些定义let ident = regexp
在这些文件中很常见并且重复。例如,INTEGER
, FLOAT
, ...的定义
有谁知道是否可以在某个地方一次性定义它们,并让.mll
文件调用它?
我有几个词法分析器:lexer_1.mll
, lexer_2.mll
, ...
ident
( ) 的一些定义let ident = regexp
在这些文件中很常见并且重复。例如,INTEGER
, FLOAT
, ...的定义
有谁知道是否可以在某个地方一次性定义它们,并让.mll
文件调用它?
恐怕没有“纯 OCaml”解决方案,ident
因为ocamllex
. 您仍然可以将您的正则表达式定义放在一个文件中,并在任何需要的地方使用cpp
(或任何其他 C 预处理器)#include
。这当然是对 . 的滥用cpp
,因为您没有向它提供.c
文件,但您不会是第一个这样做的人。
事实上,我刚刚遇到了cppo,这是一个针对 OCaml 程序的类似 cpp 的实用程序,您可能会发现它很有用。